ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° iOS Π²ΠΎ App Store со GitLab ΠΈ fastlane

ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° iOS Π²ΠΎ App Store со GitLab ΠΈ fastlane

Како GitLab со fastlane собира, ΠΏΠΎΡ‚ΠΏΠΈΡˆΡƒΠ²Π° ΠΈ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π° iOS Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ App Store.

НСодамна ΠΈΠΌΠ°Π²ΠΌΠ΅ објава Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π±Ρ€Π·ΠΎ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΈ стартуватС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° Android со GitLab ΠΈ Π±Ρ€Π·Π° Π»Π΅Π½Ρ‚Π°. ОвдС ќС Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌΠ΅ ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° 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. Π‘ΠΈΡ‚Π΅ ΠΎΠ²ΠΈΠ΅ сСртификати ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Π²ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅.

ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠΎΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ сСртификати, ΠΈΠ½Π°ΠΊΡƒ Ρ‡Π΅ΠΊΠΎΡ€ΠΈΡ‚Π΅ сСрт ΠΈ воздишка ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°.

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

ΠŸΠΎΠΊΡ€Π°Ρ˜ овој СдноставСн ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° сСртификати ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ. Π—Π½Π°Ρ‡ΠΈ, Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΈΠ½Π°ΠΊΡƒ, ΠΌΠΎΠΆΠ΅Π±ΠΈ ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡ‚Π΅. НајваТно Π΅ Π΄Π΅ΠΊΠ° Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° .xcodebuild, ΡˆΡ‚ΠΎ ќС ΡƒΠΊΠ°ΠΆΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ, Π° ΠΏΡ€ΠΈΠ²Ρ€Π·ΠΎΠΊΠΎΡ‚ Π·Π° ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ достапСн Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚ Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° корисникот ΠΏΠΎΠ΄ Ρ‡ΠΈΠ΅ ΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚Ρ€ΠΊΠ°Ρ‡ΠΎΡ‚. Π—Π° Π΄ΠΈΠ³ΠΈΡ‚Π°Π»Π΅Π½ потпис користимС fastlane, Π° Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠ»ΠΈ сакатС Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ повСќС, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π³ΠΈ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° Π΄ΠΈΠ³ΠΈΡ‚Π°Π»Π½ΠΈ потписи.

Π’ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³ΠΎ користам пристапот сСрт ΠΈ воздишка, Π½ΠΎ Π·Π° вистинска ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€.

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

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

ΠžΡ‚ΠΊΠ°ΠΊΠΎ Π³ΠΈ собравмС ситС ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΏΡ€Π΅ΠΌΠΈΠ½ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° GitLab Ρ‚Ρ€ΠΊΠ°Ρ‡ΠΎΡ‚ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚ MacOS. Π—Π° ΠΆΠ°Π», ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° iOS само Π½Π° MacOS. Но, сè ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΈ Π°ΠΊΠΎ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Ρ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄ΠΎΠΊ Π²ΠΎ ΠΎΠ²Π°Π° област, Π²Π½ΠΈΠΌΠ°Π²Π°Ρ˜Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ xcbuild ΠΈ Π·Π½Π°ΠΊ, ΠΈ Π½Π°ΡˆΠ°Ρ‚Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π° Π·Π°Π΄Π°Ρ‡Π° gitlab-ce#57576.

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€ΠΊΠ°Ρ‡ΠΎΡ‚ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Сдноставно. Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ ја ΡΡ‚Ρ€ΡƒΡ˜Π°Ρ‚Π° инструкции Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° GitLab Runner Π½Π° macOS.

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°. Π’Ρ€ΠΊΠ°Ρ‡ΠΎΡ‚ ΠΌΠΎΡ€Π° Π΄Π° користи ΠΈΠ·Π²Ρ€ΡˆΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° shell. Ова Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ iOS Π½Π° macOS Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΊΠ°ΠΊΠΎ корисник намСсто ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ. Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ користитС shell, Π³Ρ€Π°Π΄Π΅ΡšΠ΅Ρ‚ΠΎ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ сС ΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ ΠΊΠ°ΠΊΠΎ корисник Π½Π° Ρ‚Ρ€ΠΊΠ°Ρ‡, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° build-Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. НС Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ Π±Π΅Π·Π±Π΅Π΄Π΅Π½ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅, Π·Π°Ρ‚ΠΎΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ ΠΏΡ€Π΅Π»ΠΈΡΡ‚ΡƒΠ²Π°Ρ˜Ρ‚Π΅ бСзбСдносна Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Π·Π° Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚ΠΈΡ‚Π΅ Π½ΠΈΡˆΡ‚ΠΎ.

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. НајлСсСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π³ΠΎ тСстиратС ΠΎΠ²Π° Π΅ Π΄Π° сС Π½Π°Ρ˜Π°Π²ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ корисник кој ќС ја ΠΈΠ·Π²Ρ€ΡˆΠΈ ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° ΠΈ Π΄Π° сС ΠΎΠ±ΠΈΠ΄Π΅ Ρ€Π°Ρ‡Π½ΠΎ Π΄Π° Π³ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ. Ако систСмот Π±Π°Ρ€Π° пристап Π΄ΠΎ ΡΠΈΠ½ΡŸΠΈΡ€ΠΎΡ‚ Π½Π° ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Always Allow for CI Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. МоТСби Π²Ρ€Π΅Π΄ΠΈ Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΈ Π΄Π° Π³ΠΈ Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΏΡ€Π²ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° Π΄Π° Π±ΠΈΠ΄Π΅Ρ‚Π΅ сигурни Π΄Π΅ΠΊΠ° повСќС Π½Π΅ Π³ΠΎ Π±Π°Ρ€Π°Π°Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π·ΠΎΠΊΠΎΡ‚. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ Π΅ ΡˆΡ‚ΠΎ Apple Π½Π΅ Π½ΠΈ Π³ΠΎ олСснува ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° автоматскиот Ρ€Π΅ΠΆΠΈΠΌ, Π½ΠΎ ΡˆΡ‚ΠΎΠΌ ќС Π³ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅, сè ќС Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ±Ρ€ΠΎ.

fastlane 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 ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со пристапот Π½Π° ΠΏΠΎΡ‚ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ сСрт ΠΈ воздишка. Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ користитС Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ ΠΈΠ»ΠΈ ΡˆΡ‚ΠΎ ΠΈ Π΄Π° Π΅, Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

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 Π·Π° fastlane ΠΏΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°, користСтС ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡ˜Π° clone со ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ shell, Π·Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ чист Ρ€Π°Π±ΠΎΡ‚Π΅Π½ простор Π·Π° сСкоС ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΠΈ Сдноставно Ρ˜Π°Π²Π΅Ρ‚Π΅ сС flappybuild fastlane, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Π³Π»Π΅Π΄Π° ΠΏΠΎΠ³ΠΎΡ€Π΅. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅, потпис ΠΈ Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½Π°Ρ˜Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ TestFlight.

Π“ΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ‚ ΠΈ Π³ΠΎ Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΠΌΠ΅ со склопот. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ .ipa Π΅ ΠΏΠΎΡ‚ΠΏΠΈΡˆΠ°Π½Π° ΠΈΠ·Π²Ρ€ΡˆΠ½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π° ARM ΡˆΡ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ симулаторот. Ако сакатС ΠΈΠ·Π»Π΅Π· Π·Π° симулаторот, само Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ја Ρ†Π΅Π»Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° ΡˆΡ‚ΠΎ Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π°, Π° ΠΏΠΎΡ‚ΠΎΠ° Π²ΠΊΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ја Π²ΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚.

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

Има Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° ΡˆΡ‚ΠΎ ΠΏΡ€Π°Π²Π°Ρ‚ сè Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD ΠΈ FASTLANE_SESSION

ΠŸΠΎΡ‚Ρ€Π΅Π±Π½Π° Π΅ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° fastlane Π·Π° Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π²ΠΎ App Store ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° TestFlight. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ ќС сС користи Π²ΠΎ CI. Π”Π΅Ρ‚Π°Π»ΠΈ Ρ‚ΡƒΠΊΠ°.

Ако ΠΈΠΌΠ°Ρ‚Π΅ Π΄Π²ΠΎΡ„Π°ΠΊΡ‚ΠΎΡ€Π½Π° Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° FASTLANE_SESSION (инструкции Ρ‚Π°ΠΌΡƒ).

FASTLANE_USER ΠΈ FASTLANE_PASSWORD

Π”Π΅ΠΊΠ° сСрт ΠΈ воздишка Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ» Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΈ сСртификати ΠΏΠΎ Π±Π°Ρ€Π°ΡšΠ΅, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΈ поставитС ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ FASTLANE_USER ΠΈ FASTLANE_PASSWORD. Π”Π΅Ρ‚Π°Π»ΠΈ Ρ‚ΡƒΠΊΠ°. Ова Π½Π΅ Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π°ΠΊΠΎ користитС Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΏΠΎΡ‚ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅.

Π’ΠΎ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ сСто Ρ‚ΠΎΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π²ΠΎ ΠΌΠΎΡ˜ΠΎΡ‚ СдноставСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° бСшС корисно ΠΈ Π²Π΅ ΠΈΠ½ΡΠΏΠΈΡ€ΠΈΡ€Π°ΡˆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ со iOS-Π³Ρ€Π°Π΄Π±ΠΈΡ‚Π΅ Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° GitLab. Π•Π²Π΅ ΡƒΡˆΡ‚Π΅ Π΅Π΄Π΅Π½ CI совСти Π·Π° fastlane, Π·Π° сСкој ΡΠ»ΡƒΡ‡Π°Ρ˜. МоТСби ќС сакатС Π΄Π° користитС CI_BUILD_ID (Π·Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ Π³Ρ€Π°Π΄Π±ΠΈ) Π΄ΠΎ автоматски ја Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π°.

Π”Ρ€ΡƒΠ³Π° ΠΊΡƒΠ» карактСристика Π½Π° fastlane Π΅ автоматски слики ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ Π·Π° App Store, ΠΊΠΎΠΈ сС ΠΌΠ½ΠΎΠ³Ρƒ лСсни Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅.

ΠšΠ°ΠΆΠ΅Ρ‚Π΅ Π½ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ искуство ΠΈ сподСлСтС Π³ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° GitLab Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° iOS.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€