เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ iOS เปƒเบซเป‰เบเบฑเบš App Store เบ”เป‰เบงเบ GitLab เปเบฅเบฐ fastlane

เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ iOS เปƒเบซเป‰เบเบฑเบš App Store เบ”เป‰เบงเบ GitLab เปเบฅเบฐ fastlane

GitLab เบเบฑเบš fastlane เป€เบเบฑเบšเบเบณ, เป€เบŠเบฑเบ™ เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเปˆเบ™ iOS เป„เบ›เบ—เบตเปˆ App Store เป„เบ”เป‰เปเบ™เบงเปƒเบ”.

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เป„เบ”เป‰ เบ›เบฐเบเบฒเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบฅเบฐเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Android เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ เบเบฑเบš GitLab เปเบฅเบฐ เบฅเบงเบ”เป„เบง. เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ app iOS เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบกเบฑเบ™เบเบฑเบš TestFlight. เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เป€เบขเบฑเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ” เบ‚เป‰เบญเบเบเบณเบฅเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡ iPad Pro เบ”เป‰เบงเบ GitLab Web IDE, เบ‚เป‰เบญเบเป€เบญเบปเบฒเบเบฒเบ™เบ›เบฐเบเบญเบšเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบเบฑเบšเป€เบงเบตเบŠเบฑเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ iPad Pro เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบ™.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบปเบฒ เปเบญเบฑเบš iOS เบ‡เปˆเบฒเบเป†เปƒเบ™ Swift, เบเบฑเบšเปƒเบœเบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบงเบดเบ”เบตเป‚เบญ.

เบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Apple Store

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบญเบฑเบš App Store, เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ เปเบฅเบฐเป‚เบ›เบฃเป„เบŸเบฅเปŒเบเบฒเบ™เบชเบฐเปœเบญเบ‡เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเบเบฑเบ™.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบเบ—เบตเปˆเบชเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบดเบ”เบเบฒเบ™เป€เบŠเบฑเบ™เปƒเบ™ App Store. เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เป„เบ”เป‰เบ”เป‰เบงเบเบ•เบปเบงเป€เบˆเบปเป‰เบฒเป€เบญเบ‡. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบ„เบปเบ™เปƒเปเปˆ, เบ‚เป‰เบญเบเบˆเบฐเบŠเบตเป‰เป€เบˆเบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปƒเบšเบฎเบฑเบšเบฎเบญเบ‡ Apple เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เปเบฅเบฐเบžเบงเบเบกเบฑเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เป‚เบžเบชเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰.

เปเบญเบฑเบš My เบ‚เบญเบ‡เบ‚เป‰เบญเบ

เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบญเบฑเบšเบฏเปƒเบ™ App Store Connect เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบต ID เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ .xcodebuild. ID เป‚เบ›เบฃเป„เบŸเบฅเปŒ เปเบฅเบฐเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”, เบฅเบฒเบ„เบฒ เปเบฅเบฐเบ„เบงเบฒเบกเบžเป‰เบญเบก, เปเบฅเบฐเบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒ TestFlight เบชเบณเบฅเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰. เบขเปˆเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปˆเบงเบ™เบ•เบปเบงเบˆเบฐเบžเบฝเบ‡เบžเปเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบเบธเปˆเบกเบ™เป‰เบญเบ, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‡เปˆเบฒเบ, เปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบˆเบฒเบ Apple.

เบ›เบฐเบซเบงเบฑเบ”เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เบ™เบญเบเป€เปœเบทเบญเป„เบ›เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบš, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฐเปเบˆเบเบฒเบ™เปเบˆเบเบขเบฒเบ เปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ iOS เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบชเปˆเบงเบ™เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™, เบ•เบปเบงเบฅเบฐเบšเบธ เปเบฅเบฐเป‚เบ›เบฃเป„เบŸเบฅเปŒเบ‚เบญเบ‡ Apple Developer console. เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบ—เบฑเบ‡เปเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป€เบ›เบฑเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบเบฒเบ™เบชเบฐเปœเบญเบ‡เป„เบ”เป‰.

เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™ cert เปเบฅเบฐ sigh เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เป€เบซเบฑเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™

เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ™เบตเป‰โ€‹, เบเบฑเบ‡โ€‹เบกเบตโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เปƒเบšโ€‹เบขเบฑเป‰เบ‡โ€‹เบขเบทเบ™โ€‹เปเบฅเบฐโ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฑเบšเบ•เบปเบง. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ .xcodebuild, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบŠเบตเป‰เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐ keychain เบ•เป‰เบญเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบžเบฒเบเปƒเบ•เป‰เบŠเบทเปˆเบ—เบตเปˆเบ™เบฑเบเปเบฅเปˆเบ™เปเบฅเปˆเบ™. เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ fastlane, เปเบฅเบฐเบ–เป‰เบฒเบกเบตเบšเบฑเบ™เบซเบฒเบซเบผเบทเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ เป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฒเบเป€เบŠเบฑเบ™เบ”เบดเบˆเบดเบ•เบญเบ™.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ cert เปเบฅเบฐ sigh, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบ”เบตเบเบงเปˆเบฒ เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™.

เบเบฒเบ™เบเบฐเบเบฝเบก GitLab เปเบฅเบฐ fastlane

เบเบฒเบ™เบเบฐเบเบฝเบก CI Runner

เป‚เบ”เบเป„เบ”เป‰เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡ GitLab runner เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™ MacOS. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบฏ iOS เปƒเบ™ MacOS เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เปเบ•เปˆเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰, เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบ„เบงเบฒเบกเบเป‰เบฒเบงเบซเบ™เป‰เบฒเปƒเบ™เบ‚เบปเบ‡เป€เบ‚เบ”เบ™เบตเป‰, เบฎเบฑเบเบชเบฒเบ•เบฒเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบฑเปˆเบ™ xcbuild ะธ เป€เบŠเบฑเบ™, เปเบฅเบฐเบงเบฝเบเบ‡เบฒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ gitlab-ce#57576.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบฑเบเปเบฅเปˆเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ›เบฐเบˆเบธเบšเบฑเบ™ เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ GitLab Runner เปƒเบ™ macOS.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เบœเบนเป‰เปเบฅเปˆเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป‚เบ›เบฃเปเบเบฃเบกเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ shell. เบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ iOS เปƒเบ™ macOS เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบปเบ‡เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบœเปˆเบฒเบ™เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰ shell, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เปเบฅเปˆเบ™, เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบˆเบปเป‰เบฒเบžเบฒเบš. เบกเบฑเบ™เบšเปเปˆเบ›เบญเบ”เป„เบžเบ„เบทเบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบชเบฐเบ™เบฑเป‰เบ™เป€เบฅเบทเบญเบเป€เบšเบดเปˆเบ‡เบ”เบตเบเบงเปˆเบฒ เป€เบญเบเบฐเบชเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเบฐเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบšเปเปˆเบžเบฒเบ”เบซเบเบฑเบ‡.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Apple Keychain เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบขเบนเปˆเปƒเบ™เป‚เบฎเบ”เบ™เบตเป‰เบ”เป‰เบงเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฐเปเบˆเบ—เบตเปˆ Xcode เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡. เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบชเป‰เบฒเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ keychain, เป€เบฅเบทเบญเบ Always Allow for CI to work. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบ—เปเปˆเบ„เบนเปˆเบ—เปเบฒเบญเบดเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบฎเป‰เบญเบ‡เบ‚เปเป€เบญเบปเบฒเบžเบงเบ‡เบเบธเบ™เปเบˆเบญเบตเบเบ•เปเปˆเป„เบ›. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒ Apple เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป‚เบซเบกเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบ•เปˆเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบ”เบต.

เป„เบงเป€เบฅเบ™ init

เป€เบžเบทเปˆเบญเปƒเบŠเป‰ fastlane เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ fastlane init. เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเปเบฅเปˆเบ™ fastlane, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบžเบฒเบเบเปˆเบฝเบงเบเบฑเบš Gemfile, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป„เบงเปเบฅเบฐเบ„เบฒเบ”เบ„เบฐเป€เบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เปเปˆ CI เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เปƒเบ™เบฅเบฒเบเบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane เบˆเบฐเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡เป‚เบŸเบ™เป€เบ”เบต fastlane เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบชเบฒเบกเป„เบŸเบฅเปŒ:

1. fastlane/Appfile

เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบชเบฑเบšเบชเบปเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ Apple ID เปเบฅเบฐ App ID เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเบ•เป‰เบญเบ‡.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile เบเปเบฒเบ™เบปเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบ™เบ•เบปเบงเบ‚เบญเบ‡ fastlane เบซเบผเบฒเบเบญเบฑเบ™, เบชเบฐเบ™เบฑเป‰เบ™เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบ„เบทเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเบฒเบเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบกเบฑเบ™เปƒเบชเปˆ TestFlight. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบญเบญเบเป€เบ›เบฑเบ™เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰ (get_certificates, get_provisioning_profile, gym ะธ upload_to_testflight) เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™ fastlane เปเบฅเป‰เบง.

เบเบฒเบ™เบเบฐเบ—เปเบฒ get_certificates ะธ get_provisioning_profile เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบก cert เปเบฅเบฐ sigh. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰ เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™ เบซเบผเบทเบญเบฑเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ›เปˆเบฝเบ™เปเบ›เบ‡.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เปเบ•เปˆเบ‚เป‰เบญเบเบชเป‰เบฒเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบงเบฒเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ›เบฐเบˆเบธเบšเบฑเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ CI เบ‡เปˆเบฒเบ. เบ–เป‰เบฒเบชเบปเบ™เปƒเบˆ, เบญเปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบš gym เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™.

https://docs.fastlane.tools/actions/gym/

เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เป€เบฎเบปเบฒ .gitlab-ci.yml

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบต CI runner เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ—เบปเบ”เบชเบญเบšเบ—เปเปˆ. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบขเบนเปˆเปƒเบ™ .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

! เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเป€เบ›เบฑเบ™ UTF-8 เบชเปเบฒเบฅเบฑเบš fastlane เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™, เปƒเบŠเป‰เบเบธเบ”เบ—เบฐเบชเบฒเบ” clone เบเบฑเบšโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹ shell, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบชเบฐเบญเบฒเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบชเบฐเบžเบฒเปเบซเปˆเบ‡, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเป‚เบ—เบซเบฒ flappybuild fastlane, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบš, เบฅเบฒเบเป€เบŠเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบเบญเบšเบซเบฅเป‰เบฒเบชเบธเบ”เปƒเบ™ TestFlight.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบ›เบญเบกเปเบฅเบฐเบ›เบฐเบซเบเบฑเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบเบญเบš. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบฎเบนเบšเปเบšเบš .ipa เป€เบ›เบฑเบ™ ARM เบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™ simulator. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบชเปเบฒเบฅเบฑเบš simulator, เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบœเบฐเบฅเบดเบ”เบกเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เบฐเบเบญเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เบ›เบญเบก.

เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบญเบทเปˆเบ™เป†

เบกเบตเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเบญเบ‡เบชเบฒเบกเบญเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ะธ FASTLANE_SESSION

เบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบชเบณเบฅเบฑเบš fastlane เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปƒเบ™ App Store เปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เป„เบ›เบ—เบตเปˆ TestFlight. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เปƒเบ™ CI. เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบ—เบตเปˆเบ™เบตเป‰.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ›เบฑเบ”เปƒเบˆ, เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ› FASTLANE_SESSION (เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™).

FASTLANE_USER ะธ FASTLANE_PASSWORD

เบ—เบตเปˆ cert เปเบฅเบฐ sigh เป€เบญเบตเป‰เบ™เบงเปˆเบฒ profile เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ› FASTLANE_USER ะธ FASTLANE_PASSWORD. เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบ—เบตเปˆเบ™เบตเป‰. เบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบฅเบปเบ‡เบ™เบฒเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เปƒเบ™เบเบฒเบ™เบชเบฐเบซเบฅเบธเบš

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ‡เบซเบกเบปเบ” เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ.

เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ” เปเบฅเบฐเป€เบ›เบฑเบ™เปเบฎเบ‡เบšเบฑเบ™เบ”เบฒเบ™เปƒเบˆเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš iOS builds เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ GitLab. เบ™เบตเป‰เปเบกเปˆเบ™เบญเบฑเบ™เบญเบทเปˆเบ™ เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ CI เบชเปเบฒเบฅเบฑเบš fastlane, เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบต. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ CI_BUILD_ID (เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹) เบเบฑเบšโ€‹ เป€เบžเบตเปˆเบกเบชเบฐเบšเบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบขเบฑเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ fastlane เปเบกเปˆเบ™ เบžเบฒเบšเบซเบ™เป‰เบฒเบˆเปเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เบชเปเบฒโ€‹เบฅเบฑเบš App Storeโ€‹, เป€เบŠเบดเปˆเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹.

เบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ GitLab เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ app iOS.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™