เจฎเฉเจ เจซเจพเจธเจเจฒเฉเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจฎเฉเจฌเจพเจเจฒ เจเจชเจธ เจฒเจ เจจเจฟเจฐเฉฐเจคเจฐ เจเจเฉเจเจฐเจฃ เจ
เจคเฉ เจกเจฟเจฒเฉเจตเจฐเฉ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจจเจพ เจเจพเจนเจพเจเจเจพเฅค เจ
เจธเฉเจ เจธเจพเจฐเฉเจเจ เจฎเฉเจฌเจพเจเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ 'เจคเฉ CI/CD เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเจพเจ, เจ
เจธเฉเจ เจเฉฑเจฅเฉ เจเจฟเจตเฉเจ เจชเจนเฉเฉฐเจเฉ เจ
เจคเฉ เจ
เฉฐเจค เจตเจฟเฉฑเจ เจเฉ เจนเฉเจเจเฅค
เจเฉเจฒ 'เจคเฉ เจจเฉเจเจตเจฐเจ 'เจคเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจพเจซเจผเฉ เจธเจฎเฉฑเจเจฐเฉ เจนเฉ, เจเจฟเจธเจฆเฉ เจธเจพเจกเฉ เจเฉเจฒ เจธเจผเฉเจฐเฉเจเจค เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจเจพเจ เจธเฉ, เจเจธ เจฒเจ เจฎเฉเจ เจเจพเจฃเจฌเฉเฉฑเจ เจเฉ เจเฉเจฒ เจฆเจพ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจตเจฐเจฃเจจ เจจเจนเฉเจ เจเจฐเจพเจเจเจพ, เจชเจฐ เจธเจฟเจฐเจซ เจเจธ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเฉเจตเจพเจเจเจพ เจเฉ เจธเจพเจกเฉ เจเฉเจฒ เจธเฉ:
เจ เจงเจฟเจเจพเจฐเจค เจซเจพเจธเจเจฒเฉเจจ เจฆเจธเจคเจพเจตเฉเจเจผ เจนเฉเจฐ เจเฉฐเจชเจจเฉเจเจ เจฆเฉเจเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจ เจธเฉเจ เจซเจพเจธเจเจฒเฉเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ iOS เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฆเฉ เจ เจธเฉเจเจฌเจฒเฉ เจจเฉเฉฐ เจธเจตเฉเจเจฒเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ
เจฒเฉเจ เจฆเฉ เจฆเฉ เจญเจพเจ เจนเจจ:
- เจเฉฐเจชเจจเฉ เจตเจฟเฉฑเจ เจฎเฉเจฌเจพเจเจฒ CI/CD เจฆเฉ เจเจญเจพเจฐ เจฆเจพ เจชเจฟเจเฉเจเฉ
- N-เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ CI/CD เจฐเฉเจฒ เจเจเจ เจเจฐเจจ เจฒเจ เจคเจเจจเฉเจเฉ เจนเฉฑเจฒ
เจชเจนเจฟเจฒเจพ เจญเจพเจ เจชเฉเจฐเจพเจฃเฉ เจฆเจฟเจจเจพเจ เจฒเจ เจตเจงเฉเจฐเฉ เจฏเจพเจฆเจพเจ เจฆเจพ เจนเฉ, เจ เจคเฉ เจฆเฉเจเจพ เจเฉฑเจ เจ เจจเฉเจญเจต เจนเฉ เจเฉ เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐ เจธเจเจฆเฉ เจนเฉ.
เจเจคเจฟเจนเจพเจธเจ เจคเฉเจฐ 'เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจนเฉเจเจ เจนเฉ
เจธเจพเจฒ 2015
เจ
เจธเฉเจ เจนเฉเจฃเฉ เจฎเฉเจฌเจพเจเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ เจนเฉ, เจซเจฟเจฐ เจธเจพเจจเฉเฉฐ เจฒเจเจพเจคเจพเจฐ เจเจเฉเจเจฐเจฃ, DevOps เจ
เจคเฉ เจนเฉเจฐ เจซเฉเจธเจผเจจเจฏเฉเจ เจเฉเจเจผเจพเจ เจฌเจพเจฐเฉ เจเฉเจ เจจเจนเฉเจ เจชเจคเจพ เจธเฉเฅค เจนเจฐเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจ
เจชเจกเฉเจ เจจเฉเฉฐ เจกเจฟเจตเฉเจฒเจชเจฐ เจฆเฉเจเจฐเจพ เจเฉเจฆ เจเจชเจฃเฉ เจฎเจธเจผเฉเจจ เจคเฉเจ เจฐเฉเจฒ เจเจเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจ
เจคเฉ เจเฉเจเจฐ เจเจเจกเจฐเฉเจเจก เจฒเจ เจเจน เจเจพเจซเจผเฉ เจธเจงเจพเจฐเจจ เจนเฉ - เจ
เจธเฉเจเจฌเจฒ, เจนเจธเจคเจพเจเจฐเจฟเจค .apk
เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจเฉเจเจฒ เจกเจฟเจตเฉเจฒเจชเจฐ เจเฉฐเจธเฉเจฒ 'เจคเฉ เจ
เจชเจฒเฉเจก เจเฉเจคเจพ, เจซเจฟเจฐ เจเจเจเจเจธ เจฒเจ เจเจเจธเจเฉเจก เจฆเฉเจเจฐเจพ เจคเจคเจเจพเจฒเฉ เจกเจฟเจธเจเฉเจฐเฉเจฌเจฟเจเจธเจผเจจ เจเฉเจฒ เจจเฉ เจธเจพเจจเฉเฉฐ เจฌเจนเฉเจค เจตเจงเฉเจ เจธเจผเจพเจฎเจพเจ เจจเจพเจฒ เจเฉฑเจก เจฆเจฟเฉฑเจคเจพ - เจเจฐเจเจพเจเจต เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉเจเจ เจเฉเจธเจผเจฟเจธเจผเจพเจ เจ
เจเจธเจฐ เจเจฒเจคเฉเจเจ เจตเจฟเฉฑเจ เจเจคเจฎ เจนเฉ เจเจพเจเจฆเฉเจเจ เจธเจจ เจ
เจคเฉ เจธเจพเจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจเฉ เจชเฉเจเจฆเฉ เจธเฉเฅค เจเจน เจชเจคเจพ เจเจฒเจฟเจ เจเจฟ เจธเจญ เจคเฉเจ เจเฉฑเจจเจค เจกเจฟเจตเฉเจฒเจชเจฐ เจฎเจนเฉเจจเฉ เจตเจฟเฉฑเจ เจเจ เจตเจพเจฐ เจเฉเจก เจจเจนเฉเจ เจฒเจฟเจเจฆเจพ, เจธเจเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจเจพเจฐเฉ เจเจฐเจฆเจพ เจนเฉ.
เจธเจพเจฒ 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: เจธเจพเจฐเฉ เจธเจเฉเจฐเจฟเจชเจ เจชเฉเจพเจตเจพเจ เจจเฉเฉฐ เจธเฉฐเจเฉเจช เจเจฐเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจซเจพเจธเจเจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจเฉ
เจเจฆเฉเจ เจ เจธเฉเจ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ, เจธเจพเจกเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจเฉเจจเจเจฟเจจเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจผเฉเฉฑเจฒ เจฒเจฟเจชเฉ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจเจฆเจฎเจพเจ เจ เจคเฉ เจฌเฉเจธเจพเจเฉเจเจ เจตเจพเจฒเฉ เจเฉฑเจ เจซเฉเฉฑเจเจเฉเจฅ เจตเจพเจเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉเจเจ เจธเจจเฅค เจ เจธเฉเจ เจ เจเฉ เจคเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจ เจคเฉ เจชเฉเจพเจ เจฆเฉเจเจฐเจพ เจตเฉฐเจก เจจเฉเฉฐ เจจเจนเฉเจ เจฌเจฆเจฒเจฟเจ เจนเฉ.
เจ เจธเฉเจ เจฆเฉเจเจฟเจ เจเจฟ เจธเจพเจกเฉ เจเฉเจฒ เจเฉ เจนเฉ เจ เจคเฉ 4 เจเจฆเจฎเจพเจ เจฆเฉ เจชเจเจพเจฃ เจเฉเจคเฉ เจนเฉ เจเฉ เจธเจพเจกเฉ CI/CD เจฆเฉ เจตเจฐเจฃเจจ เจฆเฉ เจ เจจเฉเจเฉเจฒ เจนเจจ:
- เจฌเจฟเจฒเจก - เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจเจพ, เจเจฐเจเจพเจเจต เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเจจเจพ,
- เจเฉเจธเจ โ เจกเจฟเจตเฉเจฒเจชเจฐ เจฏเฉเจจเจฟเจ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃเจพ, เจเจตเจฐเฉเจ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจเจพ,
- เจธเฉเจจเจพเจฐ - เจธเจพเจฐเฉ เจฒเจฟเจจเจเจฐ เจฒเจพเจเจ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจธเฉเจจเจพเจฐเจเจฟเจเจฌ เจจเฉเฉฐ เจฐเจฟเจชเฉเจฐเจเจพเจ เจญเฉเจเจฆเจพ เจนเฉ,
- เจคเฉเจจเจพเจค โ เจ เจฒเจซเจผเจพ (เจเฉเจธเจเจซเจฒเจพเจเจ) เจจเฉเฉฐ เจเฉฑเจ เจเจฐเจเฉเจซเฉเจเจ เจญเฉเจเจฃเจพเฅค
เจ เจคเฉ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจพเจฐเจตเจพเจเจเจ เจตเจฟเฉฑเจ เจตเจฐเจคเฉเจเจ เจเจเจเจ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจเฉฑเจก เจเฉ เจตเฉเจฐเจตเจฟเจเจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเจพเจเจฆเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจซเจพเจธเจเจซเจพเจเจฒ เจฎเจฟเจฒเฉเจเฉ:
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 เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจซเจพเจธเจเจซเจพเจเจฒ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ
เจนเฉเจฃ เจเจน เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจเจพ เจเฉฐเจจเจพ เจฎเฉเจธเจผเจเจฒ เจจเจนเฉเจ เจนเฉ - เจตเฉเจฐเฉเจเจฌเจฒ เจธเฉเฉฑเจ เจเจฐเฉ, เจ เจคเฉ เจเจฒเฉ. เจนเจพเจ, เจ เจธเจฒ เจตเจฟเฉฑเจ, เจเจธ เจคเจฐเฉเจนเจพเจ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจนเฉฑเจฒ เจเฉเจคเจพ เจเจฟเจ เจธเฉ. เจชเจฐ เจเจธ เจธเจฎเฉเจ เจเจฆเฉเจ เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจตเจฟเจเจพเฉ เจฆเจฟเฉฑเจคเจพ, เจธเจพเจกเฉ เจเฉเจฒ เจจเจพ เจคเจพเจ เจซเจพเจธเจเจฒเฉเจจ เจตเจฟเฉฑเจ เจฎเฉเจนเจพเจฐเจค เจธเฉ, เจจเจพ เจนเฉ เจฐเฉเจฌเฉ เจตเจฟเฉฑเจ, เจเจฟเจธ เจตเจฟเฉฑเจ เจซเจพเจธเจเจฒเฉเจจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉ, เจ เจคเฉ เจจเจพ เจนเฉ เจจเฉเจเจตเจฐเจ เจคเฉ เจเจชเจฏเฉเจเฉ เจเจฆเจพเจนเจฐเจฃเจพเจ - เจนเจฐ เจเฉเจ เจเจฟเจธเจจเฉ เจซเจพเจธเจเจฒเฉเจจ เจฌเจพเจฐเฉ เจฒเจฟเจเจฟเจ เจธเฉ, เจเจธ เจธเจฎเฉเจ เจฒเจ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเจ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจคเฉฑเจ เจธเฉเจฎเจฟเจค เจธเฉเฅค เจเฉฑเจ เจกเจฟเจตเฉเจฒเจชเจฐ.
เจซเจพเจธเจเจฒเฉเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒ เจธเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจ เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉเจเฉเจจ เจชเจพเจธเจตเจฐเจก เจธเฉเฉฑเจ เจเจฐเจเฉ เจเจธ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจเฉเฉฑเจเฉ เจนเจพเจ:
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
เจนเฉเจฃ, เจซเจพเจธเจเจฒเฉเจจ เจซเจพเจเจฒเจพเจ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจเฉเฉฐเจเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ, เจธเจพเจจเฉเฉฐ เจเจน เจชเจคเจพ เจฒเจเจพเจเจฃเจพ เจชเจฟเจ เจเจฟ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจฅเฉ เจเจฟเจตเฉเจ เจชเจนเฉเฉฐเจเจพเจเจฃเจพ เจนเฉเฅค เจซเจพเจธเจเจฒเฉเจจ เจเฉเจฒ เจเจธเจฆเจพ เจนเฉฑเจฒ เจนเฉ: .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
เจเจธ เจนเฉฑเจฒ เจจเฉเฉฐ เจนเฉเจฃ เจฒเจ เจเฉฑเจก เจฆเจฟเฉฑเจคเจพ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ เจซเจพเจธเจเจฒเฉเจจ เจเฉเจฒ เจซเจพเจธเจเจซเจพเจเจฒ เจฆเฉเจเจฐเจพ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเจพ เจนเฉฑเจฒ เจนเฉ import_from_git
, เจชเจฐ เจเจน เจธเจฟเจฐเจซเจผ Fastfile เจฒเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจนเฉเจฐ เจซเจพเจเจฒเจพเจ เจฒเจ เจจเจนเฉเจเฅค เจเฉ เจคเฉเจธเฉเจ "เจธเฉฑเจเจฎเฉเฉฑเจ เจธเฉเฉฐเจฆเจฐ" เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเจชเจฃเจพ เจฒเจฟเจ เจธเจเจฆเฉ เจนเฉ action
.
เจเฉฑเจ เจธเจฎเจพเจจ เจธเฉเฉฑเจ เจเจเจกเจฐเฉเจเจก เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจ
เจคเฉ เจฐเฉเจเจเจเจจเฉเจเจฟเจต เจฒเจ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉ, เจซเจพเจเจฒเจพเจ เจเฉฑเจเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจนเจจ, เจชเจฐ เจตเฉฑเจ-เจตเฉฑเจ เจธเจผเจพเจเจพเจตเจพเจ เจตเจฟเฉฑเจ iOS
, android
ะธ react_native
.
เจเจฆเฉเจ เจฐเฉเจฒเฉเจเจผ เจเฉเจฎ เจเฉเจ เจจเจตเจพเจ เจเจฆเจฎ เจเฉเฉเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ, เจธเจเฉเจฐเจฟเจชเจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจเจฟเฉฑเจ เจตเจฟเฉฑเจ MR เจฆเฉเจเจฐเจพ เจฐเจฟเจเจพเจฐเจก เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจนเฉเจฃ เจเฉเฉฑเจเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉ เจฆเฉเจธเจผเฉเจเจ เจจเฉเฉฐ เจฒเฉฑเจญเจฃ เจฆเฉ เจเฉเจ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจ เจคเฉ เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจนเฉเจฃ เจคเฉเจนเจพเจจเฉเฉฐ เจเจธเจจเฉเฉฐ เจคเฉเฉเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจเฉ เจชเจตเฉเจเฉเฅค
เจนเฉเจฃ เจเจน เจฏเจเฉเจจเฉ เจเจฐเจจ เจฒเจ เจนเฉ
เจชเจนเจฟเจฒเจพเจ, เจ เจธเฉเจ เจธเจพเจฐเฉเจเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจจเฉเฉฐ เจเจพเจเจฎ เจฐเฉฑเจเจฃ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเจจ เจ เจคเฉ เจ เฉฑเจชเจกเฉเจ เจฆเฉ เจธเจพเจฐเฉ เจจเจคเฉเจเจฟเจเจ เจจเฉเฉฐ เจ เฉเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจธเจฎเจพเจ เจฌเจฟเจคเจพเจเจ เจธเฉเฅค เจเจน เจฌเจนเฉเจค เจจเจฟเจฐเจพเจธเจผเจพเจเจจเจ เจธเฉ เจเจฆเฉเจ เจฐเฉเจฒเฉเจเจผเจพเจ เจตเจฟเฉฑเจ เจคเจฐเฉเฉฑเจเฉเจเจ เจ เจคเฉ เจกเจพเจเจจเจเจพเจเจฎ เจฆเฉ เจเจพเจฐเจจ เจธเจงเจพเจฐเจจ เจเจพเจเจชเฉ เจธเจจ เจเฉ เจธเจผเฉเฉฑเจฒ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉ เจเจฒเจเจฃ เจตเจฟเฉฑเจ เจเจฐเฉเจ เจฐเฉฑเจเจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจเจฒ เจธเจจเฅค เจนเฉเจฃ เจ เจเจฟเจนเฉเจเจ เจเจฒเจคเฉเจเจ เจเฉฑเจ เจคเฉเจ เจเฉฑเจ เจนเฉ เจเจเจเจ เจนเจจเฅค เจคเจฌเจฆเฉเจฒเฉเจเจ เจธเจพเจฐเฉเจเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจตเจพเจฐ เจตเจฟเฉฑเจ เจฐเฉเจฒเจเจเจ เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค เจ เจคเฉ เจเฉฑเจ เจจเจตเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจชเจพเจเจฃ เจฒเจ 15 เจฎเจฟเฉฐเจ เจฒเฉฑเจเจฆเฉ เจนเจจ - CI 'เจคเฉ เจเฉฑเจ เจเฉเจเจชเจฒเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจธเฉเจ เจ เจช เจเจฐเฉ เจ เจคเฉ เจกเจฟเจตเฉเจฒเจชเจฐ เจฆเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉเฅค
เจ
เจเจฟเจนเจพ เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจเจเจกเจฐเฉเจเจก เจฒเจ เจซเจพเจธเจเจซเจพเจเจฒ เจ
เจคเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจนเจธเจคเจพเจเจฐ เจฆเฉ เจจเจพเจฒ เจฌเจฟเฉฐเจฆเฉ เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉ, เจเฉเจเจฐ เจฒเฉเจ เจฆเจฟเจฒเจเจธเจช เจนเฉ, เจคเจพเจ เจฎเฉเจ เจเฉฑเจ เจจเจฟเจฐเฉฐเจคเจฐเจคเจพ เจฒเจฟเจเจพเจเจเจพ. เจเจฟเฉฑเจชเจฃเฉเจเจ เจเจพเจ เจเฉเจฒเฉเจเฉเจฐเจพเจฎ 'เจคเฉ "เจคเฉเจธเฉเจ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจนเฉฑเจฒ เจเจฐเฉเจเฉ" เจคเฉเจนเจพเจกเฉ เจธเจตเจพเจฒเจพเจ เจเจพเจ เจธเฉเจเจพเจตเจพเจ เจจเฉเฉฐ เจฆเฉเจ เจเฉ เจฎเฉเจจเฉเฉฐ เจเฉเจธเจผเฉ เจนเฉเจตเฉเจเฉ
เจธเจฐเฉเจค: www.habr.com