GitLab เช…เชจเซ‡ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชธเชพเชฅเซ‡ เชเชช เชธเซเชŸเซ‹เชฐ เชชเชฐ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซ€

GitLab เช…เชจเซ‡ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชธเชพเชฅเซ‡ เชเชช เชธเซเชŸเซ‹เชฐ เชชเชฐ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซ€

เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชธเชพเชฅเซ‡ GitLab เชเชช เชธเซเชŸเซ‹เชฐ เชชเชฐ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชธเชพเช‡เชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชนเชคเซ€ Android เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเชกเชชเชฅเซ€ เชฌเชจเชพเชตเชตเซ€ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เชชเซ‹เชธเซเชŸ เช•เชฐเซ‹ GitLab เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชซเชพเชธเซเชŸ เชฒเซ‡เชจ. เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเชถเซเช‚ เช•เซ‡ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ TestFlight เชชเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซ€. เชคเซ‡ เช•เซ‡เชŸเชฒเซเช‚ เช เช‚เชกเซ เช›เซ‡ เชคเซ‡ เชคเชชเชพเชธเซ‹ เชนเซเช‚ GitLab เชตเซ‡เชฌ IDE เชธเชพเชฅเซ‡ iPad Pro เชชเชฐ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เชนเซเช‚ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฒเช‰เช‚ เช›เซเช‚ เช…เชจเซ‡ เช เชœ iPad Pro เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชŸเซ‡เชธเซเชŸ เชตเชฐเซเชเชจ เชฎเชพเชŸเซ‡ เช…เชชเชกเซ‡เชŸ เชฎเซ‡เชณเชตเซเช‚ เช›เซเช‚ เชœเซเชฏเชพเช‚ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชตเชฟเช•เชธเชพเชตเซเชฏเซเช‚ เชนเชคเซเช‚.

เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชฒเชˆเชถเซเช‚ เชธเซเชตเชฟเชซเซเชŸ เชชเชฐ เชธเชฐเชณ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฎเซ‡เช‚ เชตเซ€เชกเชฟเชฏเซ‹ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซเชฏเซ‹.

Apple Store เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเชพเช• เชถเชฌเซเชฆเซ‹

เช…เชฎเชจเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชฌเชพเช‚เชงเชตเชพ เชฎเชพเชŸเซ‡ เชเชช เชธเซเชŸเซ‹เชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ, เชตเชฟเชคเชฐเชฃ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช…เชจเซ‡ เชœเซ‹เช—เชตเชพเชˆ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เช…เชนเซ€เช‚ เชธเซŒเชฅเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชพเชฌเชค เชเชช เชธเซเชŸเซ‹เชฐเชฎเชพเช‚ เชธเชพเช‡เชจเชฟเช‚เช— เชฐเชพเช‡เชŸเซเชธ เชธเซ‡เชŸ เช•เชฐเชตเซ€ เช›เซ‡. เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เช† เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชœเซ€ เชถเช•เชถเซ‹. เชœเซ‹ เชคเชฎเซ‡ เชจเชตเชพ เช›เซ‹, เชคเซ‹ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฆเชฟเชถเชพเชฎเชพเช‚ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ€เชถ, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ Apple เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชŸเชฟเชฒเชคเชพเช“ เชตเชฟเชถเซ‡ เช…เชนเซ€เช‚ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเซ‡ เชธเชคเชค เชฌเชฆเชฒเชพเชคเชพ เชฐเชนเซ‡ เช›เซ‡. เช† เชชเซ‹เชธเซเชŸ เชคเชฎเชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชถเซ‡.

เชฎเชพเชฐเซ€ เชเชชเซเชธ

เชคเชฎเชจเซ‡ เชเชช เชธเซเชŸเซ‹เชฐ เช•เชจเซ‡เช•เซเชŸเชฎเชพเช‚ เชเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชฅเซ€ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช—เซ‹เช เชตเชฃเซ€ เชฎเชพเชŸเซ‡ ID เชนเซ‹เชฏ .xcodebuild. เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ ID เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชจเซเช‚ เชตเชฟเชคเชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชฌเชฟเชฒเซเชกเซเชธ, เช•เชฟเช‚เชฎเชค เช…เชจเซ‡ เช‰เชชเชฒเชฌเซเชงเชคเชพ เช…เชจเซ‡ เชŸเซ‡เชธเซเชŸเชซเซเชฒเชพเช‡เชŸ เช—เซ‹เช เชตเชฃเซ€เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡. เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚, เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชจเชพเชจเซเช‚ เชœเซ‚เชฅ เชนเซ‹เชฏ, เชธเชฐเชณ เชธเซ‡เชŸเช…เชช เชนเซ‹เชฏ เช…เชจเซ‡ Apple เชคเชฐเชซเชฅเซ€ เชตเชงเชพเชฐเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€เช“เชจเซ€ เชœเชฐเซ‚เชฐ เชจ เชนเซ‹เชฏ เชคเซ‹ เช–เชพเชจเช—เซ€ เชชเชฐเซ€เช•เซเชทเชฃ เชชเซ‚เชฐเชคเซเช‚ เชนเชถเซ‡.

เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเซเชฐเซ‹เชซเชพเช‡เชฒ

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชŸเช…เชช เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชพเชฐเซ‡ Apple เชกเซ‡เชตเชฒเชชเชฐ เช•เชจเซเชธเซ‹เชฒเชจเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹, เช“เชณเช–เช•เชฐเซเชคเชพเช“ เช…เชจเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชฌเชจเชพเชตเซ‡เชฒ iOS เชตเชฟเชคเชฐเชฃ เช…เชจเซ‡ เชตเชฟเช•เชพเชธ เช•เซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชคเชฎเชพเชฎ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‡ เชชเซเชฐเซ‹เชตเชฟเชเชจเชฟเช‚เช— เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เชœเซ‹เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชคเซ‡เช“ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅ เชนเซ‹เชตเชพ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เช…เชจเซเชฏเชฅเชพ เชชเช—เชฒเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช…เชจเซ‡ เชจเชฟเชธเชพเชธเซ‹ เชคเชฎเซ‡ เชเช• เชญเซ‚เชฒ เชœเซ‹เชถเซ‹.

เช…เชจเซเชฏ เชตเชฟเช•เชฒเซเชชเซ‹

เช† เชธเชฐเชณ เชชเชฆเซเชงเชคเชฟ เช‰เชชเชฐเชพเช‚เชค, เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช…เชจเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เช…เชจเซเชฏ เชฐเซ€เชคเซ‹ เช›เซ‡. เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เช…เชจเซเช•เซ‚เชฒเชจ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡. เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ€ เชฌเชพเชฌเชค เช เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ .xcodebuild, เชœเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเชพเช‡เชฒเซ‹ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเชถเซ‡, เช…เชจเซ‡ เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ เชจเชพเชฎ เชนเซ‡เช เชณ เชฐเชจเชฐ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฌเชฟเชฒเซเชก เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช•เซ€เชšเซ‡เชจ เช‰เชชเชฒเชฌเซเชง เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เชกเชฟเชœเชฟเชŸเชฒ เชนเชธเซเชคเชพเช•เซเชทเชฐ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชซเชพเชธเซเชŸเชฒเซ‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชœเซ‹ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชนเซ‹เชฏ เช…เชฅเชตเชพ เชคเชฎเซ‡ เชตเชงเซ เชœเชพเชฃเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเซ‡เชฎเชจเซ€ เชตเชฟเช—เชคเซ‹ เชคเชชเชพเชธเซ‹ เชกเชฟเชœเชฟเชŸเชฒ เชนเชธเซเชคเชพเช•เซเชทเชฐ เชตเชฟเชถเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ.

เช† เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชนเซเช‚ เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช…เชจเซ‡ เชจเชฟเชธเชพเชธเซ‹, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชคเซ‡ เช•เชฆเชพเชš เชตเชงเซ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เชฎเซ‡เชณ.

เช—เชฟเชŸเชฒเซ‡เชฌ เช…เชจเซ‡ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

CI เชฐเชจเชฐ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช† เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ MacOS เช‰เชชเช•เชฐเชฃ เชชเชฐ GitLab เชฐเชจเชฐเชจเซ€ เช—เซ‹เช เชตเชฃเซ€ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช เช›เซ€เช. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชคเชฎเซ‡ MacOS เชชเชฐ เชœ iOS เชเชชเซเชธ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ เชฌเชงเซเช‚ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เช† เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชชเซเชฐเช—เชคเชฟเชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ‹ เช›เซ‹, เชคเซ‹ เชœเซ‡เชตเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชชเชฐ เชจเชœเชฐ เชฐเชพเช–เซ‹ xcเชฌเชฟเชฒเซเชก ะธ เชนเชธเซเชคเชพเช•เซเชทเชฐ, เช…เชจเซ‡ เช†เชชเชฃเซเช‚ เช†เช‚เชคเชฐเชฟเช• เช•เชพเชฐเซเชฏ gitlab-ce#57576.

เชฐเชจเชฐเชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡. เชตเชฐเซเชคเชฎเชพเชจ เช…เชจเซเชธเชฐเซ‹ MacOS เชชเชฐ GitLab เชฐเชจเชฐเชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“.

เชจเซ‰เซ…เชง. เชฐเชจเชฐเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช shell. เช•เชจเซเชŸเซ‡เชจเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚ เชชเชฃ เชธเซ€เชงเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ macOS เชชเชฐ iOS เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹ 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 เช•เซ€เชšเซ‡เชจ เช† เชนเซ‹เชธเซเชŸ เชชเชฐ Xcode เชจเซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช•เซ€เชจเซ€ เชเช•เซเชธเซ‡เชธ เชธเชพเชฅเซ‡ เช—เซ‹เช เชตเซ‡เชฒเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เช†เชจเซ‡ เชšเช•เชพเชธเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เช เช›เซ‡ เช•เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ‹ เชœเซ‡ เชฌเชฟเชฒเซเชก เชšเชฒเชพเชตเชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡. เชœเซ‹ เชธเชฟเชธเซเชŸเชฎ เช•เซ€เชšเซ‡เชจ เชเช•เซเชธเซ‡เชธ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เซ‡ เช›เซ‡, เชคเซ‹ CI เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซ‹. เชคเซ‡ เชนเชตเซ‡ เช•เซ€เชšเซ‡เชจ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เชถเซ‡ เชจเชนเซ€เช‚ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฅเชฎ เชฌเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชฎเชพเช‚ เชœเชตเซเช‚ เช…เชจเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡. เชฎเซเชถเซเช•เซ‡เชฒเซ€ เช เช›เซ‡ เช•เซ‡ Apple เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช“เชŸเซ‹ เชฎเซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชเช•เชตเชพเชฐ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชšเชพเชฒเซ เช•เชฐเซ€ เชฆเซ‹, เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เชฅเชˆ เชœเชถเซ‡.

เชซเชพเชธเซเชŸเชฒเซ‡เชจ เช‡เชจเชฟเชŸ

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชซเชพเชธเซเชŸเชฒเซ‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชฒเชพเชตเซ‹ fastlane init. เชซเช•เซเชค เช…เชจเซเชธเชฐเซ‹ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชตเชฟเชถเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชœเซ‡เชฎเชซเชพเชˆเชฒ, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค CI เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชฆเซเชตเชพเชฐเชพ เชเชกเชชเซ€ เช…เชจเซ‡ เช…เชจเซเชฎเชพเชจเชฟเชค เชฒเซ‹เช‚เชšเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชคเชฎเชพเชฐเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚, เช† เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ‹:

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

เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เชถเซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชคเซเชฐเชฃ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเชถเซ‡:

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 เชฌเชฟเชฒเซเชก เชธเซเชŸเซ‡เชชเซเชธ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชซเชพเชธเซเชŸเชฒเซ‡เชจเชจเซ€ เช˜เชฃเซ€ เชฌเชงเซ€ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชฅเซ€ เช…เชนเซ€เช‚ เชชเชฃ เชฌเชงเซเช‚ เชธเซเชชเชทเซเชŸ เช›เซ‡. เช…เชฎเซ‡ เชเช• เชฒเชพเช‡เชจ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ TestFlight เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹ เชคเชฎเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เชตเชนเซ‡เช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เชคเชฎเชพเชฎ เช•เชพเชฎเช—เซ€เชฐเซ€ (get_certificates, get_provisioning_profile, gym ะธ upload_to_testflight) เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชซเชพเชธเซเชŸเชฒเซ‡เชจเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เช›เซ‡.

เช•เซเชฐเชฟเชฏเชพเช“ get_certificates ะธ get_provisioning_profile เชนเชธเซเชคเชพเช•เซเชทเชฐ เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช…เชจเซ‡ เชจเชฟเชธเชพเชธเซ‹. เชœเซ‹ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹ เชฎเซ‡เชณ เช…เชฅเชตเชพ เช—เชฎเซ‡ เชคเซ‡ เชนเซ‹เชฏ, เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ‹.

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 เชฐเชจเชฐ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพ เชคเซˆเชฏเชพเชฐ เช›เซ€เช. เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เชถเซเช‚ เช›เซ‡ .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 เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ clone เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ€เช‚เช— เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชธเชพเชฅเซ‡ shell, เชœเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฆเชฐเซ‡เช• เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฎเชพเชŸเซ‡ เชธเซเชตเชšเซเช› เช•เชพเชฐเซเชฏเชธเซเชฅเชณ เชนเซ‹เชฏ, เช…เชจเซ‡ เชซเช•เซเชค เช•เซ‰เชฒ เช•เชฐเซ‹ flappybuild เชซเชพเชธเซเชŸเชฒเซ‡เชจ, เช‰เชชเชฐ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชจเซ‡ เชŸเซ‡เชธเซเชŸเชซเซเชฒเชพเช‡เชŸเชฎเชพเช‚ เชจเชตเซ€เชจเชคเชฎ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€, เชธเชนเซ€ เช…เชจเซ‡ เชœเชฎเชพเชตเชŸ เชฎเชณเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชชเชฃ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเชพเชฅเซ‡ เชธเชพเชšเชตเซ€เช เช›เซ€เช. เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ .ipa เช เชเช• เชนเชธเซเชคเชพเช•เซเชทเชฐเชฟเชค เชเช†เชฐเชเชฎ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช›เซ‡ เชœเซ‡ เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐเชฎเชพเช‚ เชšเชพเชฒเชคเซเช‚ เชจเชฅเซ€. เชœเซ‹ เชคเชฎเซ‡ เชธเชฟเชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชฎเชพเชŸเซ‡ เช†เช‰เชŸเชชเซเชŸ เช‡เชšเซเช›เชคเชพ เชนเซ‹, เชคเซ‹ เชซเช•เซเชค เชฌเชฟเชฒเซเชก เชฒเช•เซเชทเซเชฏ เช‰เชฎเซ‡เชฐเซ‹ เชœเซ‡ เชคเซ‡เชจเซ‡ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸ เชชเชพเชฅเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช•เชฐเซ‹.

เช…เชจเซเชฏ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹

เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเชพเช• เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เช›เซ‡ เชœเซ‡ เชฌเชงเซเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ะธ FASTLANE_SESSION

เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชเชช เชธเซเชŸเซ‹เชฐเชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ TestFlight เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฌเชจเชพเชตเซ‹ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— CI เชฎเชพเช‚ เชฅเชถเซ‡. เชตเชฟเช—เชคเซ‹ เช…เชนเซ€เช‚.

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เชนเซ‹เชฏ, เชคเซ‹ เชšเชฒ เชฌเชจเชพเชตเซ‹ FASTLANE_SESSION (เชคเซเชฏเชพเช‚ เชธเซ‚เชšเชจเชพเช“).

FASTLANE_USER ะธ FASTLANE_PASSWORD

เชชเซเชฐเชคเชฟ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช…เชจเซ‡ เชจเชฟเชธเชพเชธเซ‹ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เชšเชฒเซ‹ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ FASTLANE_USER ะธ FASTLANE_PASSWORD. เชตเชฟเช—เชคเซ‹ เช…เชนเซ€เช‚. เชœเซ‹ เชคเชฎเซ‡ เช•เซ‹เชˆ เช…เชฒเช— เชนเชธเซเชคเชพเช•เซเชทเชฐ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เชนเซ‹เชต เชคเซ‹ เช† เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€.

เช…เช‚เชคเชฎเชพ

เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชคเซ‡ เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชฎเชพเชฐเชพ เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚.

เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เช† เชฎเชฆเชฆเชฐเซ‚เชช เชนเชคเซเช‚ เช…เชจเซ‡ เชคเชฎเชจเซ‡ GitLab เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ iOS เชฌเชฟเชฒเซเชกเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‡เชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เชฌเซ€เชœเซเช‚ เช›เซ‡ CI เชŸเชฟเชชเซเชธ เชซเชพเชธเซเชŸเชฒเซ‡เชจ เชฎเชพเชŸเซ‡, เชฎเชพเชคเซเชฐ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚. เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹ เชถเช•เซ‡ เช›เซ‡ CI_BUILD_ID (เชตเซƒเชฆเซเชงเชฟเชถเซ€เชฒ เชฌเชฟเชฒเซเชกเซเชธ เชฎเชพเชŸเซ‡). เช†เชชเซ‹เช†เชช เชตเชงเชพเชฐเซ‹ เช†เชตเซƒเชคเซเชคเชฟ.

เชซเชพเชธเซเชŸเชฒเซ‡เชจเชจเซ€ เชฌเซ€เชœเซ€ เชถเชพเชจเชฆเชพเชฐ เชตเชฟเชถเซ‡เชทเชคเชพ เช›เซ‡ เช†เชชเซ‹เช†เชช เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ เชเชช เชธเซเชŸเซ‹เชฐ เชฎเชพเชŸเซ‡, เชœเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡.

เชคเชฎเชพเชฐเชพ เช…เชจเซเชญเชต เชตเชฟเชถเซ‡ เช…เชฎเชจเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เช•เชนเซ‹ เช…เชจเซ‡ iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชฎเชพเชŸเซ‡ GitLab เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชตเชฟเชšเชพเชฐเซ‹ เชถเซ‡เชฐ เช•เชฐเซ‹.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹