แแกแฃแ แก แแแกแแฃแแ แ แแแแแแฃแ แ แแแแแแแชแแแแแก แฃแฌแงแแแข แแแขแแแ แแชแแแกแ แแ แแแฌแแแแแแแ fastlane-แแก แแแแแงแแแแแแ. แ แแแแ แแแฎแแ แชแแแแแแ CI/CD-แก แงแแแแ แแแแแแฃแ แแแแแแแชแแแแ, แ แแแแ แแแแแแแ แแฅ แแ แ แ แแแฎแแ แแแแแก.
แฅแกแแแจแ แฃแแแ แแ แแก แกแแแแแ แแกแ แแแกแแแ แฎแแแกแแฌแงแแแ, แ แแแแแแช แแกแ แแแแแแแ แแแกแแฌแงแแกแจแ, แแแแขแแ แจแแแแแแฃแแแ แแ แแฆแแฌแแ แฎแแแกแแฌแงแแก แแแขแแแฃแ แแ, แแแแ แแ แแฎแแแแ แแแแแแ แแแ แแแแก, แ แแช แแแจแแ แแแฅแแแแ:
แแคแแชแแแแฃแ แ fastlane แแแแฃแแแแขแแชแแ แแแแแแแแแแ แกแฎแแ แแแแแแแแแแแแแ แฉแแแ แแแขแแแแขแแแแ แแแก iOS แแแแแแแชแแแแแก แจแแแ แแแแก Fastlane-แแก แแแแแงแแแแแแ
แกแขแแขแแ แจแแแแแแ แแ แ แแแฌแแแแกแแแแ:
- แแแแแแแแแจแ แแแแแแฃแ แ CI/CD-แแก แแแฉแแแแก แคแแแ
- แขแแฅแแแแฃแ แ แแแแแฌแงแแแขแ CI/CD-แแก แแแกแแจแแแแแ N-แแแแแแแชแแแแแกแแแแก
แแแ แแแแ แแแฌแแแ แฃแคแ แ แซแแแแ แแ แแแก แแแกแขแแแแแแ, แแแแ แ แแ แแแแแชแแแแแแ, แ แแแแแแช แจแแแแซแแแแ แกแแแฃแแแ แแแแก แแแแแ แแแ.
แแกแ แแแฎแแ แแกแขแแ แแฃแแแ
แฌแแแ 2015
แฉแแแ แแฎแแแฎแแ แแแแแฌแงแแ แแแแแแฃแ แ แแแแแแแชแแแแแก แจแแแฃแจแแแแแ, แจแแแแแ แแ แแคแแ แ แแแชแแแแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแก, DevOps-แแก แแ แกแฎแแ แแแแฃแ แ แแแแแแแแก แจแแกแแฎแแ. แแแแแแแชแแแก แแแแแแฃแแ แแแแแฎแแแแ แแแแแฃแจแแ แแแแแ แแแแแแแแแ แแ แแแแแกแ แแแแแแฃแขแแ แแแแ. แแ แแฃ Android-แแกแแแแก แแก แกแแแแแแ แแแ แขแแแแ - แแฌแงแแแแแ, แฎแแแแแฌแแ แแแ .apk
แแ แแขแแแ แแ แแแ Google Developer Console-แจแ, แจแแแแแ iOS-แแกแแแแก Xcode-แแก แจแแแแแ แแแแ แชแแแแแแก แฎแแแกแแฌแงแ แแแแแแขแแแ แจแแกแแแแจแแแแ แกแแฆแแแแแแ - แแ แฅแแแแก แฉแแแแขแแแ แแแแก แแชแแแแแแแแ แฎแจแแ แแ แแแแแ แแแแแแ แจแแชแแแแแ แแ แแแแฌแแแแ แฎแแแแฎแแ แชแแ. แแฆแแแฉแแแ, แ แแ แงแแแแแแ แแแฌแแแแแ แแแแแแแแแ แ แแแแจแ แ แแแแแแฏแแ แแ แแ แฌแแ แก แแแแก, แแ แแแแ แแแ แชแแแแแก แแแแแแแชแแแก.
แฌแแแ 2016
แแแแแแแ แแแ, แฃแแแ แแแฅแแแแ แคแแฅแ แแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแแแแกแฃแคแแ แแแแแแแแแ แแแ แแแแแจแแแแแกแแแแก แแแแแ แแฆแแแแ แแ แแแแแฉแแแ แแแแ แ แแแแแแแชแแแช, แ แแแแแแแช แแฎแแแแ แแแขแแแแขแแแแชแแแกแแแ แแแแแซแแ. แแแแแ แฌแแแก แฉแแแ แแแ แแแแแ แแแแแแแกแขแแแแ แแ แฏแแแแแแกแ แแ แแแแฌแแ แแ แกแแจแแแแแ แกแแ แแแขแแแแก แแแแแฃแแ, แซแแแแแ แแแแก แแแ, แ แแกแแช fastlane แแฉแแแแแแก แแแแแก แแแแฃแแแแขแแชแแแจแ.
$ xcodebuild clean archive -archivePath build/MyApp
-scheme MyApp
$ xcodebuild -exportArchive
-exportFormat ipa
-archivePath "build/MyApp.xcarchive"
-exportPath "build/MyApp.ipa"
-exportProvisioningProfile "ProvisioningProfileName"
$ cd /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
$ ./altool โupload-app
-f {abs path to your project}/build/{release scheme}.ipa
-u "[email protected]"
-p "PASS_APPLE_ID"
แกแแแฌแฃแฎแแ แแ, แแฅแแแแ แแฎแแแแ แฉแแแแแ แแแแแแแแแ แแแแ แแชแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แแก แกแแ แแแขแแแ แแ แ แแขแแ แแ แแก แกแแญแแ แ แแแกแแฆแแแแแแก แแก แแแฃแแแแแแแแ แแแกแขแ, แแ แ แแแแกแแช แ แแฆแแช แแกแแ แแแขแแฎแ, แแแ แแแแฆแแก "แแจแแแแแแ แ แกแแฆแแแแแแ" แแฃแ แแแแแแแก แแแแแแแแกแแแแก.
แฌแแแ 2017
แฌแแแก แแแแแแแ, แ แแ แแ แกแแแแแก แแกแแแ แ แแ, แ แแแแ แแชแแ fastlane. แแ แแงแ แแแแแแ แแแคแแ แแแชแแ, แ แแแแแแแช แแฎแแแ - แ แแแแ แแแแแฌแงแแ, แ แแแแ แแแแแแแงแแแ. แแ แแแแแ แแแกแขแ แฃแแแแขแ แแ แแ แแก แฏแแ แแแแแ แฃแฎแแจแ แแงแ: แแฃแแแแแแ แจแแชแแแแแแแ แแฎแแแแ แแแแแแแชแ แฃแแแ แแแแแแแแ แแแแแ แแ แซแแแแ แแแกแแฏแแ แแแแแ แแงแ แแ แฏแแแแกแแฃแ แ แแแขแแแแขแแแแชแแแกแ, แ แแแแแกแแช แแกแแแ แแแแแ แแแแแแแแ.
แแฃแแชแ, แซแแ แแแแแ แแแแฃแแแแฃแ แ แกแแจแฃแแแแแแแ แจแแแแก fastlane แแแ แแแจแ gym
ะธ pilot
, แฉแแแ แแแแแฎแแ แฎแแ แแแกแ แแแฌแงแแแ.
แฉแแแแ แกแแ แแแขแแแ แชแแขแแแ แแแฃแแฏแแแแกแแ.
$ fastlane gym โ-workspace "Example.xcworkspace"
--scheme "AppName"
โ-buildlog_path "/tmp"
-โclean
แแกแแแ แแแฃแแฏแแแแกแแ, แแฃแแแแช แแแแขแแ, แ แแ แแ แแ แแก แแฃแชแแแแแแแ แงแแแแ แแแ แแแแขแ แ xcodebuild
, แแฅแแแ แฃแแแ แแแฃแแแแแ - gym
แแแแแฃแแแแแแแแ แแแแแแแก แกแแ แแ แ แ แแแแก. แแ แแแขแ แแแแฃแกแขแแแแกแแแแก, แจแแแแซแแแแ แแแฃแแแแแ แแแแแ แแแแแแจแแแ, แ แแแแ แช แแฅ xcodebuild
, แแฎแแแแ แแแกแแฆแแแแแแก แแแกแแฎแแแแแแ แฃแคแ แ แแแแแแ.
แแแฏแแ แแ, แกแแแแ แฏแแจแ แแแ แแแแแก แแ แฉแแจแแแแแฃแแ xcpretty แคแแ แแแขแแก แฌแงแแแแแแ, build logs แแแฎแแ แแแแ แแ แฃแคแ แ แแแแแฎแแแ. แแแแ แแแแฌแงแ แแ แแแก แแแแแแแ แแแขแแฎแแแ แแกแแแแแแแแแก แจแแแแแแแแแ แแ แแแแฏแแ แแแแแจแแแแแก แแฃแแแก แจแแแซแแ แแแแก แแแ แแแแแ แแแแแฃแแแแแแแแ.
แกแแแฌแฃแฎแแ แแ, แจแแแ แแแแก แกแแฉแฅแแ แแก แแแแแแแแแ xcodebuild
ะธ gym
แฉแแแ แแก แแ แแแแแแแแแ, แแแแ แแ แฉแแแ แแแแแแแแ แแแแฃแแแแขแแชแแแก - 30%-แแแ แกแแฉแฅแแ แ.
แแ แแ แแ แแชแแกแ แงแแแแ แแแแแชแฎแแแแกแแแแก
2018 แฌแแแ แแ แแฆแแแแ
2018 แฌแแแกแแแแก, แแแแแแแชแแแแแก แจแแฅแแแแกแ แแ แแแจแแแแแก แแ แแชแแกแ แแแแแแแแ แแแแแแแแ แฏแแแแแแกแจแ, แแแแแแแแแ แแแแ แจแแฌแงแแแขแแก แแแแแจแแแแ แแแแแแแแ แแแแฅแแแแแแแแ แแ แแฎแแแแ แแแแแจแแแแแก แแฃแแแก แฐแฅแแแแ แแแจแแแแแก แฃแคแแแแ.
แฉแแแ แฃแแแ แแแแแแแแ แขแแกแขแแแแก แแ แกแขแแขแแแฃแ แ แแแแแแแแก แแแจแแแแแก แแแฃแแฏแแแแกแแแ แแ แฉแแแแ แกแแ แแแขแแแ แแแ แแแแแแ แแ แแแ แแแแแแ. แแแแแแ แแ แแ แจแแแชแแแแ แฉแแแแก แแแแแแแชแแแแแแ แแ แแแ. แแ แแ แแก แแแแฎแแแแแแ 10 แแแแแแแชแแ แแงแ, แแฃ แแแแแแแแแแกแฌแแแแแ, แ แแ แฉแแแ แแแแฅแแก แแ แ แแแแขแคแแ แแ, แแก แแ แแก แแแแฎแแแแแแ 20 โแชแแชแฎแแแโ แกแแ แแแขแ.
แงแแแแ แฏแแ แแ, แ แแชแ แแแแแแแแ แกแแ แแแขแจแ แแฎแแแ แแแแแฏแแก แแแแแขแแแ, แแแแฌแแแแ แแแฌแแแแแแก แแแแแ แแแ-แแแกแขแแขแ แงแแแแ shell แกแแ แแแขแจแ. แจแแกแแซแแแ, แจแแแแแซแแ แฃแคแ แ แคแ แแฎแแแแ แแแแแฃแจแแแ, แแแแ แแ แฎแจแแ แแ แแกแแแ แชแแแแแแแแแ แแแแแ แแแแแแ แแแญแแแแแ แจแแชแแแแแ, แ แแช แแแแแจแแแแแก แแฃแแแจแ แแแแแแแแ แแ แกแแฆแแแแแแแ, แ แแแ แแแแกแฌแแ แแแแแแ แกแแ แแแขแแแ แแ แแแแแแ, แ แแแแแแ แญแแแแแแแ แแแแแแขแ แแก แแ แซแแแแแ แแ แ แแก แแแแแแแก แแก แกแแแแแแแแแแจแ. แแแแแแแ, แแ แจแแแซแแแแ แแแฅแแแก, แ แแ แแ แแ แแแแขแคแแ แแแกแแแแก แจแแแ แแแแก แกแแ แแแขแแแ แแแแแช แแแ แแแแฃแแฌแแแแ แแกแแแแกแ แแงแ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแแ, แ แ แแฅแแ แฃแแแ, แแแแแ แแแแแแแแก.
แแฎแแแ แแแแแแแชแแแก แแ แแชแแกแแก แแแกแแฌแงแแแแ, แกแแญแแ แ แแงแ แแ แแ แแฆแแก แแแฎแแ แฏแแ แแ แกแแ แแแขแแแแก โแแฎแแแโ แแแ แกแแแก แจแแกแแ แฉแแแแ, แแแกแ แแแแแ แแแแกแแแแก แแ แแแแก แแฅแแ, แ แแ โแแแแฎ, แแฃแจแแแแกโ.
2018 แฌแแแก แแแคแฎแฃแแจแ แฉแแแ แแแแแ แแ แแฎแแ แจแแแฎแแแแ แฏแแ แแแแแ แแแแแแแแ แแแแ แกแฌแ แแค แแแแก.
แแแแแแแแ #1: แจแแแฏแแแแ แกแแ แแแขแแก แงแแแแ แแแแแฏแ แแ แแแแแฌแแ แแ แแกแแแ Fastfile-แจแ
แ แแแแกแแช แแแแแฌแงแแ, แฉแแแแ แกแแ แแแขแแแ แฌแแแแแแแ แคแแฎแกแแชแแแแก แฅแกแแแแแก, แ แแแแแแช แจแแแแแแแแ แงแแแแ แกแแคแแฎแฃแ แแกแแแ แแ แงแแแแ แฏแแแแแกแแแแ แฏแแแแแแกแแก แแ แ แแแ แกแจแ. แแแแกแแแแแแ แแ แแขแแแแแ แแแแ แแแงแแคแแแ แฏแแ แแ แแแแแแแแแ.
แฉแแแ แแแแแแฎแแแแ แ แ แแแแฅแแก แแ แแแแแแแแแแแแ 4 แแแแแฏแ, แ แแแแแแช แจแแแกแแแแแแแ แฉแแแแ CI/CD-แแก แแฆแฌแแ แแก:
- แแจแแแแแ - แแแแแแแแแแฃแแแแแแแก แแแงแแแแแ, แแ แฅแแแแก แแฌแงแแแ,
- แขแแกแขแ - แแแแแแแแแ แแก แแ แแแฃแแแก แขแแกแขแแแแก แแแจแแแแ, แแแคแแ แแแก แแแแแแแแ,
- แกแแแแ แ - แฃแจแแแแก แงแแแแ แแแแขแแ แก แแ แแแแแแแแก แแแฎแกแแแแแแแก SonarQube-แก,
- แแแแแแแแแ โ แแ แขแแคแแฅแขแแก แแแแแแแแ แแแคแแแ (TestFlight).
แแ แแฃ แแแขแแแแแจแ แแ แจแแแแฎแแ แ, แแแฅแแแแแแแแจแ แแแแแงแแแแแฃแแ แแแกแแฆแแแแแแก แแแแแขแแแแแแ, แแแแฆแแแ แแ Fastfile-แก:
default_platform(:ios)
platform :ios do
before_all do
unlock
end
desc "Build stage"
lane :build do
match
prepare_build
gym
end
desc "Prepare build stage: carthage and cocoapods"
lane :prepare_build do
pathCartfile = ""
Dir.chdir("..") do
pathCartfile = File.join(Dir.pwd, "/Cartfile")
end
if File.exist?(pathCartfile)
carthage
end
pathPodfile = ""
Dir.chdir("..") do
pathPodfile = File.join(Dir.pwd, "/Podfile")
end
if File.exist?(pathPodfile)
cocoapods
end
end
desc "Test stage"
lane :test do
scan
xcov
end
desc "Sonar stage (after run test!)"
lane :run_sonar do
slather
lizard
swiftlint
sonar
end
desc "Deploy to testflight stage"
lane :deploy do
pilot
end
desc "Unlock keychain"
private_lane :unlock do
pass = ENV['KEYCHAIN_PASSWORD']
unlock_keychain(
password: pass
)
end
end
แกแแแแแแแแแแจแ, แฉแแแแ แแแ แแแแ Fastfile แแฆแแแฉแแแ แแแแแ แแแแ, แแฃ แแแแแแแแแแกแฌแแแแแ แแแแแแ แ แฎแแแฏแแฎแแแก, แ แแแแแแแช แฏแแ แแแแแ แแแญแแ แแแแแแ แแ แแ แแแ แแแแขแ แแแแก แ แแแแแแแแแก, แ แแแแแแแช แฉแแแแแแชแแแแ:
lane :build do
carthage(
command: "update",
use_binaries: false,
platform: "ios",
cache_builds: true)
cocoapods(
clean: true,
podfile: "./Podfile",
use_bundle_exec: false)
gym(
workspace: "MyApp.xcworkspace",
configuration: "Release",
scheme: "MyApp",
clean: true,
output_directory: "/build",
output_name: "my-app.ipa")
end
lane :deploy do
pilot(
username: "[email protected]",
app_identifier: "com.example.app",
dev_portal_team_id: "TEAM_ID_NUMBER_DEV",
team_id: "ITS_TEAM_ID")
end
แแแแแ แแแงแแแแแ แแแแแแแแจแ, แแฎแแแแ แแ แแแ แแแแขแ แแแแก แแแฌแแแแ, แ แแแแแแช แฃแแแ แแแแแแแแแ แแขแแ: แแก แแ แแก build-แแก แแแ แแแแขแ แแแ - แกแฅแแแ, แแแแคแแแฃแ แแชแแ, แแ แแคแแแแแแก แกแแฎแแแแแ, แแกแแแ แแแแแฌแแแแแแก แแแ แแแแขแ แแแ - แแแแแแแแแ แแก แแแแแ แแจแแก Apple ID, แแแ แแแ, แแแแแแแชแแแก ID แแ แ.แจ. on. แ แแแแ แช แแแ แแแแ แแแแฎแแแแแ, แฉแแแ แงแแแแ แแ แแแแแแจแก แแแแแ แกแแแชแแแแฃแ แคแแแแแแจแ - Gymfile
, Matchfile
ะธ Appfile
.
แแฎแแ แฏแแแแแแกแจแ แจแแแแซแแแแ แแแ แแแแ แแแแแ แแ แซแแแแแแแ, แ แแแแแแแช แแ แแแฃแแแแแแแแแแ แฎแแแก แแ แแแแแแแ แแแแแฎแแแ แแแแแแ:
# fastlane ios <lane_name>
$ fastlane ios build
$ fastlane ios test
$ fastlane ios run_sonar
$ fastlane ios deploy
แฐแฃแ แ, แแจแแแแแแ แแ แแแ แ
แฒ แ แแแแฆแ? แแแแกแฃแคแแแแแ แแ แซแแแแแแแ แงแแแแแ แแแแแฏแแกแแแแก. แแแกแฃแคแแแแแแฃแแ แกแแ แแแขแแแ, แแแแแแแ แแแแแแแแฃแแ fastlane แคแแแแแแจแ. แแแฎแแ แแแฃแแแแ แแแแแฅแแชแแ แแแแแแแแแ แแแแแ แแ แแแฎแแแแ, แแแแแแขแแแแแแ แงแแแแแคแแ แ, แ แแช แแแ แกแญแแ แแแแแแแ แแแแแแแ แกแแชแแแแแจแ.
แแแแ แแ แฉแแแ แแ แแฃแแแ แแแแฎแแแแ, แ แแ แแแแแ แกแแ แแฃแแแแแ แจแแแแแฅแแแแแ - แฉแแแ แแแแแช แแแแฅแแแแแแ 20 แแกแแแแแแแก แกแแ แแแขแ, แ แแแแแแแช แแกแ แแฃ แแกแ แแแแฌแงแแแแแแ แกแแแฃแแแ แชแฎแแแ แแแแก, แฃแคแ แ แ แแฃแแ แแฅแแแแแแ แแแแ แ แแแแฅแขแแ แแแ, แ แแแแแ แกแแ แแแขแแแ แแแแแแแแแแ แกแแชแแแแแจแ, แแ แแฅ แแ แแแฅแแแแ แฌแแแแแ. แแ แกแแแ แแแ, แฉแแแแ แขแแแแแแแก แแกแ แแแแแญแ แ แแ แแฅแแแแ.
แแแแแแแแ #2: แแแแฆแแ แแ แแ Fastfile N แแแแแแแชแแแกแแแแก
แแฎแแ, แ แแแแ แช แฉแแแก, แแ แแแแแแแก แแแแแญแ แ แแ แช แแกแ แ แแฃแแแ - แแแแงแแแแ แชแแแแแแแ แแ แแแแแ แฌแแแแแแ. แแแแฎ, แคแแฅแขแแแ แแแแ, แแกแ แแแแแแ แแ แแ แแแแแแ. แแแแ แแ แแ แแแแแแขแจแ, แ แแแแกแแช แฉแแแ แแแแแคแฃแญแแ, แฉแแแ แแ แแแฅแแแแ แแ แช แแแแแชแแแแแแ แแแแแ fastlane-แจแ, แแ แช Ruby-แจแ, แ แแแแแจแแช fastlane แแ แแก แแแฌแแ แแแ, แแ แช แกแแกแแ แแแแแ แแแแแแแแแแ แฅแกแแแจแ - แงแแแแ, แแแแช แแแจแแ แฌแแ แแ fastlane-แแ, แจแแแแแคแแ แแแแแแแ แแแแแแแแแ แแ แแ แแแแแชแฎแแแแกแแแแก. แแ แแ แแแแแแแแแ แ.
Fastlane-แก แจแแฃแซแแแ แแแ แแแแก แชแแแแแแแแก แแแ แแแ แแ แฉแแแ แฃแแแ แแชแแแแ แแก Keychain แแแ แแแแก แแแงแแแแแแ:
ENV['KEYCHAIN_PASSWORD']
แฉแแแแ แกแแ แแแขแแแแก แแแแแแแแแ แแแแก แจแแแแแ, แฉแแแ แแแแแแงแแแแ แกแแแ แแ แแแฌแแแแแ:
#for build, test and deploy
APPLICATION_SCHEME_NAME=appScheme
APPLICATION_PROJECT_NAME=app.xcodeproj
APPLICATION_WORKSPACE_NAME=app.xcworkspace
APPLICATION_NAME=appName
OUTPUT_IPA_NAME=appName.ipa
#app info
APP_BUNDLE_IDENTIFIER=com.example.appName
[email protected]
TEAM_ID=ABCD1234
FASTLANE_ITC_TEAM_ID=123456789
แแฎแแ, แแแแกแแแแแก, แ แแ แแแแแแฌแงแ แแ แแแแแแจแแแแก แแแแแงแแแแแ fastlane แคแแแแแแจแ, แฃแแแ แแแแ แแแแ, แ แแแแ แแแแแแขแแแ แแกแแแ แแฅ. Fastlane-แก แแฅแแก แแแแแกแแแแแ แแแแกแแแแก: .env
, .env.default
, .env.development
.
แจแแแแแ แแ แแแแแแฌแงแแแขแแ, แ แแ แแก แแแแแแแแแแ แชแแขแ แแแแกแฎแแแแแแฃแแแ แแแแแแแแงแแแแแแแ. แแแแแ, แแแแแแแแแ แแแแก แกแแชแแแจแ แแแแแแแแแกแแ แแ แ fastlane แกแแ แแแขแแแ แแ แแแกแ แแแขแ แแแคแแ แแแชแแ, แแ แแแแ แแ แแแแแแแชแแแก แฃแแแแแแฃแ แ แแแกแแฆแแแแแ แคแแแแจแ. .env.appName
.
แแแแแแ Fastfile
, Appfile
, Matchfile
ะธ Gymfile
, แฉแแแ แแแแแแแแ แแแ แชแแแแ แกแแชแแแจแ. แแฅ แแแแแแฃแแ แแงแ แแแแแขแแแแแ แคแแแแ แแแ แแแแก แแแกแแฆแแแแแแ แกแฎแแ แกแแ แแแกแแแแแแ - .env
.
แจแแแแซแแแแ แแแฎแแ แแแแแแแแ
CI-แแ แแแ แ แแแแแ แแ แจแแชแแแแแ แแแแแ แแขแฃแแ แแแแแแแชแแแก แแแแคแแแฃแ แแชแแแก แแแกแแฆแแแ:
# fastlane ios <lane_name> --env appName
$ fastlane ios build --env appName
$ fastlane ios test --env appName
$ fastlane ios run_sonar --env appName
$ fastlane ios deploy --env appName
แแ แซแแแแแแแแก แแแจแแแแแแแ แฉแแแ แแขแแแ แแแแ แฉแแแแก แกแแชแแแก แกแแ แแแขแแแแ. แแ แช แแกแ แแแแแแแ แแแแแแงแฃแ แแแ:
git clone [email protected]/FastlaneCICD.git fastlane_temp
cp ./fastlane_temp/fastlane/* ./fastlane/
cp ./fastlane_temp/fastlane/.env fastlane/.env
แแก แแแแแฌแงแแแขแ แแแ แฉแ, แแฃแแชแ Fastlane-แก แแฅแแก แแแแแกแแแแแ Fastfile-แแก แกแแจแฃแแแแแแ แฉแแแแขแแแ แแแแกแแแแก import_from_git
, แแแแ แแ แแฃแจแแแแก แแฎแแแแ Fastfile-แแ, แแแแ แแ แแ แ แกแฎแแ แคแแแแแแแ. แแฃ แแกแฃแ แ "แแแแแแแแแ แแแแแแ", แจแแแแซแแแแ แแแฌแแ แแ แกแแแฃแแแ แ action
.
แแกแแแแกแ แแแแ แแแ แแแแแแแ Android แแแแแแแชแแแแแกแแแแก แแ ReactNative-แแกแแแแก, แคแแแแแแ แแ แแก แแแแแ แกแแชแแแจแ, แแแแ แแ แกแฎแแแแแกแฎแแ แคแแแแแแจแ iOS
, android
ะธ react_native
.
แ แแแแกแแช แแแแแจแแแแแก แแฃแแแก แกแฃแ แก แ แแแแ แแฎแแแ แแแแแฏแแก แแแแแขแแแ, แชแแแแแแแแแ แกแแ แแแขแจแ แฉแแแฌแแ แแแ MR-แแก แกแแจแฃแแแแแแ git-แจแ, แแฆแแ แแ แแก แกแแญแแ แ แแแขแแฎแแแ แกแแ แแแขแแแแก แแแแแแจแแแแแแแก แซแแแแ แแ แแแแแแแ, แแฎแแ แแฅแแแ แฃแแแ แกแชแแแแ แแแกแ แแแขแแฎแแ.
แแฎแแ แแก แแแแแแแแแ แแ แแก
แแแ แ แฉแแแ แแฎแแ แฏแแแแแ แงแแแแ แกแแ แแแขแแก แจแแแแ แฉแฃแแแแแก, แแแ แแแแแฎแแแแแก แแ แแแแแฎแแแแแแแก แงแแแแ แจแแแแแแก แแแแแกแฌแแ แแแแก. แซแแแแแ แแแแแแแชแ แฃแแแฃแแ แแงแ, แ แแแแกแแช แแแแแจแแแแแแจแ แจแแชแแแแแแแกแ แแ แจแแคแแ แฎแแแแก แแแแแแแแ แแงแ แแแ แขแแแ แแแญแแแแแ แจแแชแแแแแแ, แ แแแแแแ แแแแแงแฃแ แแก แแแแแแแ แซแแแแแ แ แแฃแแ แแงแ แญแฃแ แแแก แกแแ แแแขแแแแก แแฃแ แแแฃแ แจแ. แแฎแแ แแกแแแ แจแแชแแแแแแ แแแแแแฃแแแแแแ แแแงแแแแแแ. แชแแแแแแแแแ แแ แแแ แแฃแแแ แแ แชแแแแแแ แงแแแแ แแแแแแแชแแแจแ. แแ 15 แฌแฃแแ แกแญแแ แแแแ แแฎแแแ แแแแแแแชแแแก แแ แแชแแกแจแ - แแแแงแแแแ แจแแแแแแแก แแแแกแแแแแ CI-แแ แแ แแแแแแขแแ แแแกแแฆแแแแแ แแแแแแแแแ แแก แกแแชแแแจแ.
แ แแแแ แช แฉแแแก, Fastfile for Android-แแกแแแแก แแ แแแแแแแชแแแก แฎแแแแแฌแแ แ แแฃแฎแกแแแแ แ แฉแแแ, แแฃ แกแขแแขแแ แกแแแแขแแ แแกแแ, แแแแ แซแแแแแแก แแแแฌแแ . แกแแแแแแแแแแ แแแแฎแแ แแฅแแแแก แแแแฎแแแแก แแ แฌแแแแแแแแแแแก โแ แแแแ แแแแแแแ แแแแแ แแ แแ แแแแแแแกโ แแแแแแขแแ แแแจแ แแ Telegram-แจแ
แฌแงแแ แ: www.habr.com