เดซเดพเดธเตเดฑเตเดฑเตโเดฒเตเดฏเตเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเตเดฌเตเตฝ เดเดชเตเดชเตเดเตพเดเตเดเตเดณเตเดณ เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดธเดเดฏเตเดเดจเดคเตเดคเตเดฏเตเด เดกเตเดฒเดฟเดตเดฑเดฟเดฏเตเดฏเตเด เดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดฒเตเดฒเดพ เดฎเตเดฌเตเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดฟเดฒเตเด เดเดเตเดเตพ เดเดเตเดเดจเตเดฏเดพเดฃเต CI/CD เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเต, เดเดเตเดเตพ เดเดเตเดเดจเต เด
เดตเดฟเดเต เดเดคเตเดคเดฟ, เด
เดตเดธเดพเดจเด เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเดคเต.
เดเตเดณเดฟเดฒเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเตฝ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดตเตเดฃเตเดเดคเตเดฐ เดฎเตเดฑเตเดฑเตเดฐเดฟเดฏเตฝ เดเดฃเตเดเต, เด เดคเต เดเดเตเดเตพเดเตเดเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต เดเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ เดเดพเตป เดฎเดจเดเดชเตเตผเดตเตเดตเด เดเดชเดเดฐเดฃเดคเตเดคเต เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเดเตเดเตพเดเตเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเต เดชเดฐเดพเดฎเตผเดถเดฟเดเตเดเต:
เดเดฆเตเดฏเตเดเดฟเด เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเตเตป เดกเตเดเตเดฏเตเดฎเตเตปเตเดฑเตเดทเตป เดฎเดฑเตเดฑเต เดเดฎเตเดชเดจเดฟเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ Fastlane เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ iOS เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เด เดธเดเดฌเตเดฒเดฟ เดเดเตเดเตเดฎเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเต
เดฒเตเดเดจเด เดฐเดฃเตเดเต เดญเดพเดเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต:
- เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดฎเตเดฌเตเตฝ เดธเดฟเด/เดธเดฟเดกเดฟเดฏเตเดเต เดเดตเดฟเตผเดญเดพเดตเดคเตเดคเดฟเตปเตเดฑเต เดชเดถเตเดเดพเดคเตเดคเดฒเด
- N-เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเดพเดฏเดฟ CI/CD เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดเตเดเตเดคเดฟเด เดชเดฐเดฟเดนเดพเดฐเด
เดเดฆเตเดฏเดญเดพเดเด เดชเดดเดฏ เดเดพเดฒเดคเตเดคเต เดเตเดเตเดคเตฝ เดเตเดนเดพเดคเตเดฐเดคเตเดตเดฎเดพเดฃเต, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดฏเด เดชเตเดฐเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เด เดจเตเดญเดตเดฎเดพเดฃเต.
เดเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏเดฟ เดธเดเดญเดตเดฟเดเตเดเดคเต เดเดเตเดเดจเตเดฏเดพเดฃเต
เดตเตผเดทเด 2015
เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดฎเตเดฌเตเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ, เดคเตเดเตผเดจเตเดจเต เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดธเดเดฏเตเดเดจเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเด DevOps-เดจเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดฎเดฑเตเดฑเต เดซเดพเดทเดจเดฌเดฟเตพ เดเดพเดฐเตเดฏเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเดเตเดเตพเดเตเดเต เดเดจเตเดจเตเด เด
เดฑเดฟเดฏเดฟเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เด
เดชเตโเดกเตเดฑเตเดฑเตเด เดกเดตเดฒเดชเตเดชเตผ เดคเดจเตเดจเต เดคเตปเตเดฑเต เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเดฟเดฑเดเตเดเดฟ. เดเตปเดกเตเดฐเตเดฏเดฟเดกเดฟเดจเต เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเตเดเตเดเดฟเตฝ - เดเดคเตเดคเตเดเตเตผเดจเตเดจเต, เดเดชเตเดชเดฟเดเตเดเต .apk
เดคเตเดเตผเดจเตเดจเต เด
เดคเต Google Developer Console-เดฒเตเดเตเดเต เด
เดชเตโเดฒเตเดกเต เดเตเดฏเตโเดคเต, เดคเตเดเตผเดจเตเดจเต iOS-เดจเตเดณเตเดณ เด
เดจเตเดจเดคเตเดคเต เดตเดฟเดคเดฐเดฃ เดเดชเดเดฐเดฃเด Xcode เดตเดดเดฟ เดเดเตเดเตพเดเตเดเต เดฎเดฟเดเดเตเด เดธเดพเดฏเดพเดนเตเดจเดเตเดเตพ เดธเดฎเตเดฎเดพเดจเดฟเดเตเดเต - เดเตผเดเตเดเตเดตเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดถเตเดฐเดฎเดเตเดเตพ เดชเดฒเดชเตเดชเตเดดเตเด เดชเดฟเดถเดเตเดเดณเดฟเตฝ เด
เดตเดธเดพเดจเดฟเดเตเดเต, เดเดเตเดเตพ เดตเตเดฃเตเดเตเด เดถเตเดฐเดฎเดฟเดเตเดเตเดฃเตเดเดคเดพเดฏเดฟ เดตเดจเตเดจเต. เดเดฑเตเดฑเดตเตเด เดจเตเดคเดจเดฎเดพเดฏ เดกเดตเดฒเดชเตเดชเตผ เดฎเดพเดธเดคเตเดคเดฟเตฝ เดชเดฒ เดคเดตเดฃ เดเตเดกเต เดเดดเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเดเดฐเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฑเดฟเดฒเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดตเตผเดทเด 2016
เดเดเตเดเตพ เดตเดณเตผเดจเตเดจเต, เดเดฐเต เดฑเดฟเดฒเตเดธเดฟเดจเดพเดฏเดฟ เดเดฐเต เดฆเดฟเดตเดธเด เดฎเตเดดเตเดตเตป เดกเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต เดเดเตเดเดจเต เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดเตเดเดพเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เดเดฟเดจเตเดคเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเด เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดเต, เดเดคเต เดเดเตเดเดณเต เดเดเตเดเตเดฎเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดเตเดคเตฝ เดคเดณเตเดณเดฟเดตเดฟเดเตเดเต. เด เดคเต เดตเตผเดทเด เดคเดจเตเดจเต, เดเดเตเดเตพ เดเตเดเตเดเดฟเตปเดธเต เดเดฆเตเดฏเดฎเดพเดฏเดฟ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดซเดพเดธเตเดฑเตเดฑเตโเดฒเตเดฏเตเตป เด เดคเดฟเตปเตเดฑเต เดกเตเดเตเดฏเตเดฎเตเตปเตเดฑเตเดทเดจเดฟเตฝ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต เดเตเดเตเดเด เดญเดฏเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดดเตเดคเตเดเดฏเตเด เดเตเดฏเตเดคเต.
$ 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
เดซเดพเดธเตเดฑเตเดฑเตโเดฒเตเตป เดเดจเตเดจเตเดฐเต เดธเดเดเดคเดฟ เดเดฃเตเดเตเดจเตเดจเต เด เดตเตผเดทเด เดเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดฟ. เดเดชเตเดชเตเดดเตเดณเตเดณ เด เดคเตเดฐเดฏเตเด เดตเดฟเดตเดฐเดเตเดเตพ เดเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต - เดเดฐเตเดฃเตเดฃเด เดเดเตเดเดจเต เดคเตเดเดเตเดเดพเด, เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เด เดธเดฎเดฏเดคเตเดคเต เดเดชเดเดฐเดฃเด เดคเดจเตเดจเต เด เดธเดเดธเตเดเตเดคเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต: เดจเดฟเดฐเดจเตเดคเดฐเดฎเดพเดฏ เดชเดฟเดถเดเตเดเตพ เดเดเตเดเดณเต เดจเดฟเดฐเดพเดถเดฐเดพเดเตเดเดฟ, เด เดตเตผ เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดค เดฎเดพเดจเตเดคเตเดฐเดฟเด เดเดเตเดเตเดฎเตเดทเดจเดฟเตฝ เดตเดฟเดถเตเดตเดธเดฟเดเตเดเดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดซเดพเดธเตเดฑเตเดฑเตโเดฒเตเตป เดเตเดฑเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดงเดพเดจ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ gym
ะธ pilot
, เดเดเตเดเตพ เด
เดคเต เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดเตเดเต.
เดเดเตเดเดณเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเตเดฑเดเตเดเตเดเตเดเดฟ เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต.
$ fastlane gym โ-workspace "Example.xcworkspace"
--scheme "AppName"
โ-buildlog_path "/tmp"
-โclean
เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดเดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเด เด
เดต เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟ xcodebuild
, เดจเดฟเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต - gym
เดเดตเดฟเดเต, เดเดจเตเดคเดพเดฃเต เดเดฟเดเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเด. เดเตเดเตเดคเตฝ เดซเตเตป-เดเตเดฏเตเดฃเดฟเดเดเดฟเดจเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เด
เดคเต เดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด xcodebuild
, เดเตเดเดณเตเดเต เดจเดพเดฎเดเดฐเดฃเด เดฎเดพเดคเตเดฐเดฎเต เดเตเดเตเดคเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเต.
เดเดคเตเดคเดตเดฃ, เดเดฟเดฎเตเดฎเดฟเดจเตเด เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป xcpretty เดซเตเตผเดฎเดพเดฑเตเดฑเดฑเดฟเดจเตเด เดจเดจเตเดฆเดฟ, เดฌเดฟเตฝเดกเต เดฒเตเดเตเดเตพ เดเตเดเตเดคเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดฃเต. เดเดคเต เดคเดเตผเดจเตเดจ เด เดธเดเดฌเตเดฒเดฟเดเตพ เดถเดฐเดฟเดฏเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดฎเดฏเด เดฒเดพเดญเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ, เดเดฟเดฒเดชเตเดชเตเตพ เดฑเดฟเดฒเตเดธเต เดเตเดฎเดฟเดจเต เด เดคเต เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด.
เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เด
เดธเดเดฌเตเดฒเดฟ เดธเตเดชเตเดกเต เด
เดณเดตเตเดเตพ xcodebuild
ะธ gym
เดเดเตเดเตพ เด
เดคเต เดเตเดฏเตเดคเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดกเตเดเตเดฏเตเดฎเตเตปเตเดฑเตเดทเตป เดเดเตเดเตพ เดตเดฟเดถเตเดตเดธเดฟเดเตเดเตเด - 30% เดตเดฐเต เดตเตเดเดค.
เดเดฒเตเดฒเดพ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเตเด เดเดฐเตเดฑเตเดฑ เดชเตเดฐเดเตเดฐเดฟเดฏ
เดตเตผเดทเด 2018 เดเด เดเดชเตเดชเตเดณเตเด
2018-เดเดเต, เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเตเดฑเดคเตเดคเตเดตเดฟเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดเตเดเตเดเดฟเตปเดธเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดฟ, เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด เดตเดฐเตเดเต เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฑเดฟเดฒเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเดฟ, เดฑเดฟเดฒเตเดธเต เดเตเดฎเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเต เดฑเดฟเดฒเตเดธเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เด เดตเดเดพเดถเดฎเตเดณเตเดณเต.
เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดเตเดฏเตเด เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเตปเตเดฑเตเดฏเตเด เดธเดฎเดพเดฐเดเดญเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดพเตป เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดเดเตเดฐเดนเดฟเดเตเดเดฟเดฐเตเดจเตเดจเต, เดเดเตเดเดณเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดตเดณเดฐเตเดเดฏเตเด เดตเดณเดฐเตเดเดฏเตเด เดเตเดฏเตเดคเต. เดเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเตเดชเตเดชเด เดตเดณเดฐเตเดเดฏเตเด เดฎเดพเดฑเตเดเดฏเตเด เดเตเดฏเตเดคเต. เด เดเตเดเดพเดฒเดคเตเดคเต, เดเดเตเดเตพเดเตเดเต เดฐเดฃเตเดเต เดชเตเดฒเดพเดฑเตเดฑเตเดซเตเดฎเตเดเตพ เดเดฃเตเดเตเดจเตเดจเต เดเดฃเดเตเดเดฟเดฒเตเดเตเดคเตเดคเต เดเดเดฆเตเดถเด 10 เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต เดเดเดฆเตเดถเด 20 "เดเตเดตเดจเตเดณเตเดณ" เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ.
เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเตเดเด เดเตเตผเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดคเดตเดฃเดฏเตเด, เดเดฒเตเดฒเดพ เดทเตเตฝ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเตเด เดเดเตเดเตพ เดเดทเดฃเดเตเดเตพ เดชเดเตผเดคเตเดคเดฟ-เดชเตเดธเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฐเตเดชเดเตเดทเต เดจเดฎเตเดเตเดเต เดเตเดเตเดคเตฝ เดถเตเดฐเดฆเตเดงเดฏเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเดเตเดทเต เดชเดฒเดชเตเดชเตเดดเตเด เด เดคเตเดคเดฐเด เดฎเดพเดฑเตเดฑเดเตเดเตพ เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเตเดเดณเดฟเตฝ เด เดตเดธเดพเดจเดฟเดเตเดเต, เดเดคเต เดฑเดฟเดฒเตเดธเต เดเตเดฎเดฟเดจเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดถเดฐเดฟเดฏเดพเดเตเดเดพเดจเตเด เดเดคเต เดฎเดฟเดเตเดเตเดเดจเดพเดฃเต เด เดเดฎเดพเตปเดกเต เดเตเตผเดคเตเดคเดคเตเดจเตเดจเตเด เด เดคเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเดพเดจเตเดณเตเดณ เดธเดพเดฏเดพเดนเตเดจเดเตเดเดณเดพเดฏเดฟ เดฎเดพเดฑเดฟ. เดชเตเดคเตเดตเต, เดเดฐเต เดชเตเดฒเดพเดฑเตเดฑเตโเดซเตเดฎเดฟเดจเดพเดฏเตเดณเตเดณ เด เดธเดเดฌเตเดฒเดฟเดเตเดเตเดณเตเดณ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดฐเต เดชเดฐเดฟเดงเดฟเดตเดฐเต เดธเดฎเดพเดจเดฎเดพเดฃเตเดจเตเดจเต เดชเดฑเดฏเดพเดจเดพเดตเดฟเดฒเตเดฒ. เด เดตเตผ เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เด เดคเต เดเดพเดฐเตเดฏเด เดคเดจเตเดจเต เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเดฒเตเด.
เดเดฐเต เดชเตเดคเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดฐเตเดธเดธเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฐเต "เดชเตเดคเดฟเดฏ" เดชเดคเดฟเดชเตเดชเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เด เดคเต เดกเตเดฌเดเต เดเตเดฏเตเดคเต "เด เดคเต, เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต" เดเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดฆเดฟเดตเดธเด เดเตเดฒเดตเดดเดฟเดเตเดเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต.
2018-เดฒเต เดตเตเดจเตฝเดเตเดเดพเดฒเดคเตเดคเต, เดเดชเตเดชเตเดดเตเด เดตเดฟเดเดธเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเดฟเดจเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดฐเดฟเดเตเดเตฝ เดเตเดเดฟ เดจเตเดเตเดเดฟ.
เดเดพเดธเตเดเต #1: เดเดฒเตเดฒเดพ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดเตเดเดเตเดเดณเตเด เดธเดเดเตเดฐเดนเดฟเดเตเดเต เด เดต เดซเดพเดธเตเดฑเตเดฑเตเดซเดฏเดฒเดฟเตฝ เดตเตเดฃเตเดเตเด เดเดดเตเดคเตเด
เดเดเตเดเตพ เดคเตเดเดเตเดเดฟเดฏเดชเตเดชเตเตพ, เดเดเตเดเดณเตเดเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเตเดเตเดเดฟเตปเดธเดฟเดฒเต เดเดฐเต เดทเตเตฝ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดเดฒเตเดฒเดพ เดธเตเดฑเตเดฑเตเดชเตเดชเตเดเดณเตเด เดเตเดฐเดเตเดเตเดเดณเตเด เด เดเดเตเดเตเดจเตเดจ เดเดฐเต เดเดพเตฝเดตเดธเตเดคเตเดฐเด เดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดเต. เดเดเตเดเตพ เดเดคเตเดตเดฐเต เดชเตเดชเตเดชเต เดฒเตเดจเดฟเดฒเตเดเตเดเตเด เดเดเตเดเด เดเดเตเดเดฎเดพเดฏเตเดณเตเดณ เดกเดฟเดตเดฟเดทเดจเดฟเดฒเตเดเตเดเตเด เดฎเดพเดฑเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดเดเตเดเดณเตเดเต เดชเดเตเดเดฒเตเดณเตเดณเดคเต เดเดเตเดเตพ เดจเตเดเตเดเดฟ, เดเดเตเดเดณเตเดเต CI/CD-เดฏเตเดเต เดตเดฟเดตเดฐเดฃเดคเตเดคเดฟเดจเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ 4 เดเดเตเดเดเตเดเตพ เดเดเตเดเตพ เดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดเตเดเต:
- เดฌเดฟเตฝเดกเต - เดกเดฟเดชเตปเดกเตปเดธเดฟเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด, เดเตผเดเตเดเตเดตเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเด,
- เดเตเดธเตเดฑเตเดฑเต - เดกเดตเดฒเดชเตเดชเตผ เดฏเตเดฃเดฟเดฑเตเดฑเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดจเดเดคเตเดคเตเดจเตเดจเต, เดเดตเดฑเตเดเต เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต,
- เดธเตเดฃเดพเตผ - เดเดฒเตเดฒเดพ เดฒเดฟเตปเตเดฑเดฑเตเดเดณเตเด เดฒเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดธเตเดจเดพเตผ เดเตเดฏเตเดฌเดฟเดจเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เด เดฏเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต,
- เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเด - เดเตฝเดซเดฏเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเตเดฐเดพเดตเดธเตเดคเต เด เดฏเดเตเดเตเดจเตเดจเต (เดเตเดธเตเดฑเตเดฑเตเดซเตเดฒเตเดฑเตเดฑเต).
เดจเดฟเดเตเดเตพ เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเดฟเดฏเดพเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เด 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
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเดดเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฟเดฒ เดเตเดฐเดเตเดเตเดเดณเตเด เดเดเตเดเตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเดตเตเด เดเดฃเดเตเดเดฟเดฒเตเดเตเดเตเดเตเดฎเตเดชเตเตพ เดเดเตเดเดณเตเดเต เดเดฆเตเดฏเดคเตเดคเต เดซเดพเดธเตเดฑเตเดฑเตเดซเดฏเตฝ เดญเดฏเดเตเดเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ:
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
เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดจเดฎเตเดเตเดเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเด เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดเดฐเต เดญเดพเดเด เดฎเดพเดคเตเดฐเด: เดเดตเดฏเดพเดฃเต เดฌเดฟเตฝเดกเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ - เดธเตเดเตเดฎ, เดเตเตบเดซเดฟเดเดฑเตเดทเตป, เดชเตเดฐเตเดตเดฟเดทเตป เดชเตเดฐเตเดซเตเตฝ เดชเตเดฐเตเดเตพ, เด
เดคเตเดชเตเดฒเต เดคเดจเตเดจเต เดตเดฟเดคเดฐเดฃ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ - เดกเตเดตเดฒเดชเตเดชเตผ เด
เดเตเดเตเดฃเตเดเดฟเตปเตเดฑเต เดเดชเตเดชเดฟเตพ เดเดกเดฟ, เดชเดพเดธเตโเดตเตเดกเต, เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดกเดฟ เดฎเตเดคเดฒเดพเดฏเดต เดเตบ. เดเดฆเตเดฏ เดเดเดฆเตเดถ เดเดฃเดเตเดเต เดเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดเดเตเดเตพ เด เดเตเดเดณเตเดฒเตเดฒเดพเด เดชเตเดฐเดคเตเดฏเตเด เดซเดฏเดฒเตเดเดณเดฟเตฝ เดเดเตเดจเตเดจเต - Gymfile
, Matchfile
ะธ Appfile
.
เดเดชเตเดชเตเตพ เดเตเดเตเดเดฟเตปเดธเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดดเตเด เดฎเดเตเดเดฟเดเตเดเดพเดคเตเดคเดคเตเด เดเดฃเตเดฃเตเดเตพเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดพเดฏเดฟเดเตเดเดพเดตเตเดจเตเดจเดคเตเดฎเดพเดฏ เดนเตเดฐเดธเตเดต เดเดฎเดพเตปเดกเตเดเตพ เดตเดฟเดณเดฟเดเตเดเดพเด:
# fastlane ios <lane_name>
$ fastlane ios build
$ fastlane ios test
$ fastlane ios run_sonar
$ fastlane ios deploy
เดนเตเดฑเต, เดเดเตเดเตพ เดฎเดฟเดเดเตเดเดตเดฐเดพเดฃเต
เดจเดฟเดจเดเตเดเตเดจเตเดคเต เดเดฟเดเตเดเดฟ? เดเดฐเต เดเดเตเดเดคเตเดคเดฟเดจเตเด เดเดฎเดพเตปเดกเตเดเตพ เดฎเดพเดฏเตโเดเตเดเตเด. เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเดฟ, เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเตเตป เดซเดฏเดฒเตเดเดณเดฟเตฝ เดญเดเดเดฟเดฏเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดธเดจเตเดคเตเดทเดคเตเดคเตเดเต, เดเดเตเดเตพ เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดเต เด เดเตเดคเตเดคเตเดเตเดเต เดเดเดฟ, เด เดตเตผเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฒเตเดฒเดพเด เด เดตเดฐเตเดเต เดถเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเดพเตป เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดเต.
เดเดจเตเดจเดพเตฝ เดเดเตเดเตพเดเตเดเตเด เดเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดจเตเดฐเดฟเดเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดจเตเดจเต เดเดพเดฒเดเตเดฐเดฎเตเดฃ เดเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดฟ - เดเดฐเต เดคเดฐเดคเตเดคเดฟเตฝ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดธเตเดตเดจเตเดคเด เดเตเดตเดฟเดคเด เดจเดฏเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจ 20 เด เดธเดเดฌเตเดฒเดฟ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดเตเดเดณเตเดเต เดชเดเตเดเดฒเตเดฃเตเดเดพเดเตเด, เด เดต เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเตเดเตเดคเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดพเดฐเดฃเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดถเตเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเด. เดเดเตเดเตพเดเตเดเต เด เดตเดฟเดเต เดชเตเดฐเดตเตเดถเดจเดฎเตเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เดเตเดเดพเดคเต, เดชเตเดคเตเดตเต, เดจเดฎเตเดฎเตเดเต เดตเตเดฆเดจ เด เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเดพเดธเตเดเต #2: N เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเตเดฑเตเดฑ Fastfile เดจเตเดเตเด
เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เด เดคเตเดฐ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดเดพเดฐเตเดฏเดฎเดฒเตเดฒเตเดจเตเดจเต เดเดชเตเดชเตเตพ เดคเตเดจเตเดจเตเดจเตเดจเต - เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเด, เดจเดฎเตเดเตเดเต เดชเตเดเดพเด. เด เดคเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด เดเตเดเดจเตเดฏเดพเดฃเต เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดคเต. เดเดจเตเดจเดพเตฝ เดเดเตเดเตพ เด เดคเต เดธเตเดเตเดฐเต เดเตเดฏเตเดค เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ, เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเดฟเดจเดฟเตฝ เดคเดจเตเดจเตเดฏเต, เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเตเตป เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฑเตเดฌเดฟเดฏเดฟเดฒเต, เดจเตเดฑเตเดฑเตเดตเตผเดเตเดเดฟเดฒเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฏ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเต เดเดเตเดเตพเดเตเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ - เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเดฟเดจเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เด เดจเตเดจเต เดเดดเตเดคเดฟเดฏ เดเดฒเตเดฒเดพเดตเดฐเตเด เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดกเตเดตเดฒเดชเตเดชเตผ.
Fastlane-เดจเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเตเดฏเดฟเตป เดชเดพเดธเตโเดตเตเดกเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดเตเดฃเตเดเต เดเดเตเดเตพ เดเดคเต เดเดคเดฟเดจเดเด เดชเดฐเตเดเตเดทเดฟเดเตเดเต:
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-เดจเต เดเดคเดฟเดจเต เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเตเดฃเตเดเต: .env
, .env.default
, .env.development
.
เดคเตเดเตผเดจเตเดจเต เด เดฒเตเดฌเตเดฐเดฑเดฟ เดเตเดฑเดเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดจเดฎเตเดเตเดเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดซเดพเดธเตเดฑเตเดฑเตเดฒเตเดฏเตเตป เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เด
เดคเดฟเตปเตเดฑเต เดฎเตเดฑเตเดฑเดพ เดตเดฟเดตเดฐเดเตเดเดณเตเด เด
เดฒเตเดฒ, เดซเดฏเดฒเดฟเดฒเต เด เดเดชเตเดฒเดฟเดเตเดเตเดทเตปเตเดฑเต เดคเดจเดคเดพเดฏ เดเตเดเตพ เดธเตเดฅเดพเดชเดฟเดเตเดเดพเด. .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
Fastfile เดตเดดเดฟ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต Fastlane-เดจเต เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเด เดเดฃเตเดเตเดเตเดเดฟเดฒเตเด, เดเดชเตเดชเตเตพ เด เดชเดฐเดฟเดนเดพเดฐเด เดเดชเตเดเตเดทเดฟเดเตเดเต import_from_git
, เดเดจเตเดจเดพเตฝ เดเดคเต Fastfile-เดจเต เดฎเดพเดคเตเดฐเดฎเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต, เดเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดซเดฏเดฒเตเดเตพเดเตเดเต เดตเตเดฃเตเดเดฟเดฏเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต "เดถเดฐเดฟเดเตเดเตเด เดฎเดจเตเดนเดฐเด" เดตเตเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดเดดเตเดคเดพเด action
.
Android เด
เดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเตเด ReactNative-เดจเตเด เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต เดธเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเต, เดซเดฏเดฒเตเดเตพ เดเดฐเต เดถเตเดเดฐเดคเตเดคเดฟเดฒเดพเดฃเต, เดชเดเตเดทเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดถเดพเดเดเดณเดฟเดฒเดพเดฃเต iOS
, android
ะธ react_native
.
เดฑเดฟเดฒเตเดธเต เดเตเด เดเดฟเดฒ เดชเตเดคเดฟเดฏ เดเดเตเดเดเตเดเตพ เดเตเตผเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ Git-เตฝ MR เดตเดดเดฟ เดฐเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต, เดคเดเตผเดจเตเดจ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเดเต เดเตเดฑเตเดฑเดตเดพเดณเดฟเดเดณเต เดเดจเดฟ เด เดจเตเดตเตเดทเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ, เดชเตเดคเตเดตเต, เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพ เด เดคเต เดคเดเตผเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดชเตเดชเตเตพ เด เดคเต เดเดฑเดชเตเดชเดพเดฃเต
เดฎเตเดฎเตเดชเต, เดเดฒเตเดฒเดพ เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเด เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เด เดต เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เด เดชเตโเดกเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฒเตเดฒเดพ เด เดจเดจเตเดคเดฐเดซเดฒเดเตเดเดณเตเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดเตเดเตพ เดธเดฎเดฏเด เดเตเดฒเดตเดดเดฟเดเตเดเต. เดฑเดฟเดฒเตเดธเตเดเดณเดฟเดฒเต เดชเดฟเดถเดเตเดเดณเตเดเตเดฏเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเดคเตเดคเดฟเตปเตเดฑเตเดฏเตเด เดเดพเดฐเดฃเดเตเดเตพ เดทเตเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเดณเตเดเต เดคเดฟเดฐเดเตเดเดฟเตฝ เดเตเดฐเดพเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดตเดณเดฐเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดฒเดณเดฟเดคเดฎเดพเดฏ เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเตเดเตพ เดเดฏเดฟเดฐเตเดจเตเดจเดชเตเดชเตเตพ เดเดคเต เดตเดณเดฐเต เดจเดฟเดฐเดพเดถเดพเดเดจเดเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดชเตเดชเตเตพ เด เดคเตเดคเดฐเด เดชเดฟเดถเดเตเดเตพ เดเตเดฑเดเตเดเดคเต เดเดฏเดฟ เดเตเดฑเดเตเดเต. เดเดฒเตเดฒเดพ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดฟเดฒเตเดเตเดเตเด เดเดฐเตเดธเดฎเดฏเด เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเตเดฃเตเดเตเดตเดฐเตเดจเตเดจเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเตเดฐเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป 15 เดฎเดฟเดจเดฟเดฑเตเดฑเต เดเดเตเดเตเดเตเด - CI-เดฏเดฟเตฝ เดเดฐเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดชเตเดชเตเดชเตเดฒเตเตป เดธเดเตเดเตเดเดฐเดฟเดเตเดเต เดกเดตเดฒเดชเตเดชเดฑเตเดเต เดถเตเดเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดเตเดเตพ เดเตเตผเดเตเดเตเด.
เดเตปเดกเตเดฐเตเดฏเดฟเดกเดฟเดจเตเดณเตเดณ Fastfile เดเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเดฟเดเตเดจเตเดเตเดเดฑเตเด เดเดณเตเดณ เดชเตเดฏเดฟเตปเตเดฑเต เดตเดฟเดถเดฆเตเดเดฐเดฟเดเตเดเดพเดจเดพเดเดพเดคเตเดคเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต, เดฒเตเดเดจเด เดฐเดธเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดเดพเตป เดเดฐเต เดคเตเดเตผเดเตเด เดเดดเตเดคเตเด. เด
เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเดฟเดฒเต เดเตเดฒเดฟเดเตเดฐเดพเดฎเดฟเดฒเต "เด เดชเตเดฐเดถเตเดจเด เดเดเตเดเดจเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเด" เดเดจเตเดจ เดจเดฟเดเตเดเดณเตเดเต เดเตเดฆเตเดฏเดเตเดเดณเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเต เดเดพเดฃเตเดจเตเดจเดคเดฟเตฝ เดเดจเดฟเดเตเดเต เดธเดจเตเดคเตเดทเดฎเตเดฃเตเดเต.
เด เดตเดฒเดเดฌเด: www.habr.com