ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° iOS прилоТСния Π² App Store с GitLab ΠΈ fastlane

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° iOS прилоТСния Π² App Store с GitLab ΠΈ fastlane

Как GitLab с fastlane ΡΡŠΠ±ΠΈΡ€Π°, подписва ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° iOS прилоТСния Π² App Store.

Наскоро ΠΈΠΌΠ°Ρ…ΠΌΠ΅ публикация Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΈ стартиратС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Android с GitLab ΠΈ fastlane. Π’ΡƒΠΊ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° създадСм ΠΈ стартирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° iOS ΠΈ Π΄Π° Π³ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ Π² TestFlight. Π’ΠΈΠΆΡ‚Π΅ ΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΡ‚ΠΈΠ½ΠΎ ΠŸΡ€Π°Π²Ρ промяна Π½Π° iPad Pro с GitLab Web IDE, Π²Π·Π΅ΠΌΠ°ΠΌ компилацията ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌ актуализация Π½Π° тСстовата вСрсия Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ‰ΠΈΡ iPad Pro, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ….

Π’ΡƒΠΊ Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° iOS Π² Swiftс ΠΊΠΎΠΉΡ‚ΠΎ записах Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ.

Няколко Π΄ΡƒΠΌΠΈ Π·Π° конфигурацията Π½Π° Apple Store

Π©Π΅ Π½ΠΈ трябва ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² App Store, сСртификати Π·Π° разпространСниС ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° осигуряванС, Π·Π° Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ всичко Π·Π°Π΅Π΄Π½ΠΎ.

Най-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ Π΅ Π΄Π° настроитС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° подписванС Π² App Store. Надявам сС, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Π·Π° сСбС си. Ако стС Π½ΠΎΠ², Ρ‰Π΅ Π²ΠΈ насоча Π² ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° посока, Π½ΠΎ Ρ‚ΡƒΠΊ няма Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° сСртификатитС Π½Π° Apple, Π° Ρ‚Π΅ постоянно сС промСнят. Π’Π°Π·ΠΈ публикация Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅.

ΠœΠΎΠΈΡ‚Π΅ прилоТСния

НуТдаСтС сС ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² App Store Connect, Π·Π° Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ ID Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ .xcodebuild. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ID ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠΎΠ΄, Ρ†Π΅Π½ΠΎΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ ΠΈ наличност ΠΈ конфигурацията Π½Π° TestFlight Π·Π° разпространСниС Π½Π° тСстови прилоТСния Π΄ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. НС ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ тСстванС, частното тСстванС Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠ° Π³Ρ€ΡƒΠΏΠ°, проста настройка ΠΈ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ Apple.

ΠŸΡ€ΠΎΡ„ΠΈΠ» Π·Π° осигуряванС

Π’ допълнСниС към настройката Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π²ΠΈ трябват ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° разпространСниС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° iOS, създадСни Π² сСкцията Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΈ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Apple. Всички Ρ‚Π΅Π·ΠΈ сСртификати ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ Π² ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° осигуряванС.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ удостовСрСни, сС нуТдаят ΠΎΡ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ сСртификати, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅ cert ΠΈ въздишка Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°.

Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ†ΠΈΠΈ

ОсвСн Ρ‚ΠΎΠ·ΠΈ прост ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° настройка Π½Π° сСртификати ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ. Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° сС прСнастроитС. Най-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Ρ‰Π΅ Π²ΠΈ трябва конфигурация .xcodebuild, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сочи към Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅Π»ΡΡ‚ трябва Π΄Π° Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π° Π·Π° компилация Π·Π° потрСбитСля, ΠΏΠΎΠ΄ Ρ‡ΠΈΠ΅Ρ‚ΠΎ ΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ runner-ΡŠΡ‚. НиС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ fastlane Π·Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎ подписванС ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ искатС Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅, Π²ΠΈΠΆΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ подробности докумСнтация Π·Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ² подпис.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° cert ΠΈ въздишка, Π½ΠΎ Π·Π° Ρ€Π΅Π°Π»Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° вСроятно Π΅ ΠΏΠΎ-подходящ ΠΌΠ°Ρ‡.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° GitLab ΠΈ fastlane

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° CI Runner

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ±Ρ€Π°Ρ…ΠΌΠ΅ всички Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към конфигурацията Π½Π° GitLab runner Π½Π° MacOS устройство. Π—Π° съТалСниС ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прилоТСния Π·Π° iOS Π΅ възмоТно само Π½Π° MacOS. Но всичко ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ Π°ΠΊΠΎ Ρ‡Π°ΠΊΠ°Ρ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊ Π² Ρ‚Π°Π·ΠΈ област, слСдвайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ xcbuild ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½, ΠΈ Π½Π°ΡˆΠ°Ρ‚Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° Π·Π°Π΄Π°Ρ‡Π° gitlab-ce#57576.

НастройванСто Π½Π° Π±Π΅Π³Π°Ρ‡Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ лСсно. Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎ инструкции Π·Π° настройка Π½Π° GitLab Runner Π½Π° macOS.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Π‘Π΅Π³Π°Ρ‡ΡŠΡ‚ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° shell. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° сС създадС iOS Π½Π° macOS, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π° Π½Π΅ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ shell, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΈ тСстванСто сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° runner, Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π° хоста Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. НС Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° бСзопасно, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ докумСнтация Π·Π° сигурностза Π΄Π° Π½Π΅ пропуснСтС Π½ΠΈΡ‰ΠΎ.

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 трябва Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ. Най-лСсният Π½Π°Ρ‡ΠΈΠ½ Π΄Π° тСстватС Ρ‚ΠΎΠ²Π° Π΅ Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ стартира компилацията ΠΈ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ Ρ€ΡŠΡ‡Π½ΠΎ. Ако систСмата поиска Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠ΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅Π»Ρ, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ β€žΠ’ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉβ€œ, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ CI. МоТС Π±ΠΈ си струва Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΈ Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π΄Π²ΠΎΠΉΠΊΠ° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ, Π·Π° Π΄Π° стС сигурни, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ няма Π΄Π° искат ΠΊΠ»ΡŽΡ‡ΠΎΠ΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅Π». ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Apple Π½Π΅ Π½ΠΈ улСснява Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΎ настроитС, всичко Ρ‰Π΅ бъдС Π½Π°Ρ€Π΅Π΄.

fastlane ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»

Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ 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 ΠΈ въздишка. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΌΠ°Ρ‡ ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ, Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

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 изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ сС изпълнява Π² симулатора. Ако искатС ΠΈΠ·Ρ…ΠΎΠ΄ ΠΎΡ‚ симулатора, просто Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Ρ†Π΅Π»Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, която Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ Π² ΠΏΡŠΡ‚Ρ Π½Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°.

Π”Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата

Π’ΡƒΠΊ ΠΈΠΌΠ° няколко ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата, Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΈΡ‚ΠΎ всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ΠΈ FASTLANE_SESSION

Π—Π° Π΄Π° сС удостовСритС Π² App Store ΠΈ Π΄Π° ΠΊΠ°Ρ‡ΠΈΡ‚Π΅ Π² TestFlight, ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ удостовСряванС Π·Π° fastlane. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, която Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² CI. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Ρ‚ΡƒΠΊ.

Ако ΠΈΠΌΠ°Ρ‚Π΅ Π΄Π²ΡƒΡ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎ удостовСряванС, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° FASTLANE_SESSION (инструкции Ρ‚Π°ΠΌ).

FASTLANE_USER ΠΈ FASTLANE_PASSWORD

Π§Π΅ cert ΠΈ въздишка Π½Π°Ρ€Π΅Ρ‡Π΅Π½ ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° инициализация ΠΈ сСртификати ΠΏΡ€ΠΈ поискванС, трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ FASTLANE_USER ΠΈ FASTLANE_PASSWORD. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Ρ‚ΡƒΠΊ. Π’ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° подписванС.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ всичко Π² моя прост ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Надявам сС, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ Π²ΠΈ Π΅ Π²Π΄ΡŠΡ…Π½ΠΎΠ²ΠΈΠ»ΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π½Π° iOS Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GitLab. Π•Ρ‚ΠΎ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° CI ΡΡŠΠ²Π΅Ρ‚ΠΈ Π·Π° фастлСйн, Π·Π° всСки случай. МоТС Π±ΠΈ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ CI_BUILD_ID (Π·Π° постСпСнни ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ) Π΄ΠΎ вСрсия с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ нарастванС.

Π”Ρ€ΡƒΠ³Π° страхотна функция Π½Π° fastlane Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈ Π΅ΠΊΡ€Π°Π½Π½ΠΈ снимки Π·Π° App Store, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΌΠ½ΠΎΠ³ΠΎ лСсни Π·Π° настройка.

Π Π°Π·ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½ΠΈ Π·Π° ΠΎΠΏΠΈΡ‚Π° си Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ ΠΈ сподСлСтС ΠΈΠ΄Π΅ΠΈ Π·Π° подобряванС Π½Π° GitLab Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° прилоТСния Π·Π° iOS.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€