Publishing iOS Apps à l'App Store cù GitLab è fastlane

Publishing iOS Apps à l'App Store cù GitLab è fastlane

Cumu GitLab cù fastlane raccoglie, firma è publica app iOS in l'App Store.

Avemu avutu pocu tempu un post nantu à cumu custruisce è eseguisce rapidamente una applicazione Android cù GitLab è corsia rapida. Quì vedemu cumu custruisce è eseguisce una app iOS è publichà in TestFlight. Scuprite quantu cool Aghju fattu un cambiamentu in un iPad Pro cù GitLab Web IDE, Pigliu a custruzzione è uttene un aghjurnamentu à a versione di prova di l'applicazione nantu à u stessu iPad Pro induve l'aghju sviluppatu.

Quì avemu pigliatu semplice app iOS in Swiftcù quale aghju arregistratu u video.

Uni pochi parolle nantu à a cunfigurazione di l'Apple Store

Avemu bisognu di una app in l'App Store, certificati di distribuzione, è un prufilu di pruvisione per ligà tuttu.

A cosa più difficiule quì hè di stallà i permessi di firma in l'App Store. Spergu chì pudete capisce questu per voi stessu. Sè vo site novu, vi indicheraghju in a direzzione ghjusta, ma ùn avemu micca da parlà di l'ins and outs di a gestione di i certificati Apple quì, è cambianu constantemente. Questu post vi aiuterà à principià.

My Apps

Avete bisognu di una app in App Store Connect per avè un ID per cunfigurà .xcodebuild. U prufilu di l'app è l'ID combinanu custruzzioni di codice, prezzi è dispunibilità, è a cunfigurazione TestFlight per a distribuzione di app di prova à l'utilizatori. Ùn fate micca a prova publica, a prova privata hè abbastanza s'è vo avete un picculu gruppu, installazione simplice è ùn avete micca bisognu di permessi supplementari da Apple.

Pruvisioning Profile

In più di a cunfigurazione di l'app, avete bisognu di e chjavi di distribuzione è di sviluppu iOS creati in a sezione Certificati, Identificatori è Profili di a cunsola Apple Developer. Tutti questi certificati ponu esse cumminati in un prufilu di pruvisione.

L'utilizatori chì saranu autentificati necessitanu a capacità di creà certificati, altrimenti i passi cert è suspiru vi vede un errore.

lucca ozzione

In più di stu metudu simplice, ci sò altre manere di stallà certificati è profili. Allora, sè vo travagliate in modu diversu, pudete avè da riajustà. A più impurtante, avete bisognu di una cunfigurazione .xcodebuild, chì indicà à i schedarii necessarii, è u keychain deve esse dispunibule nantu à l'urdinatore di custruzzione per l'utilizatore sottu u nome chì u corridore corre. Utilizemu fastlane per a firma digitale, è se avete prublemi o vulete sapè di più, verificate i so dettagli documentazione di firma digitale.

In questu esempiu aghju utilizatu l'approcciu cert è suspiru, ma per un usu veru, probabilmente più adattatu scintilla.

Preparazione di GitLab è fastlane

Préparation du CI Runner

Dopu avè cullatu tutte queste dati, andemu à a cunfigurazione di u corridore GitLab in un dispositivu MacOS. Sfurtunatamente, fà app iOS hè pussibule solu in MacOS. Ma tuttu pò cambià, è sè vo site aspittendu u prugressu in questa zona, seguite prughjetti cum'è xcbuild и disignu, è u nostru compitu internu gitlab-ce#57576.

Stallà u corridore hè assai faciule. Segui l'aghjurnamentu istruzioni per a configurazione di GitLab Runner su macOS.

Nota. U corridore deve aduprà un prugramma esecutivu shell. Hè ubligatoriu di custruisce iOS in macOS per travaglià direttamente cum'è utilizatore è micca attraversu cuntenituri. Sè vo aduprate shell, a custruzione è a prova sò fatti cum'è l'utilizatore di corridore, ghjustu nantu à l'ospite di custruzzione. Ùn hè micca sicuru cum'è i cuntenituri, cusì hè megliu flip documentazione di sicuritàallora ùn manchite nunda.

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 deve esse stallatu nantu à questu òspite cù accessu à e chjave chì Xcode hà bisognu di custruisce. U modu più faciule per pruvà questu hè di login cum'è l'utilizatore chì eseguirà a custruzzione è pruvà à custruisce manualmente. Se u sistema dumanda l'accessu à u keychain, selezziunate "Permette sempre" per CI per travaglià. Puderia vale a pena entre è fighjulà u primu paru di pipeline per assicurà ch'elli ùn dumandanu più un keychain. U prublema hè chì Apple ùn rende micca fàciule per noi di travaglià cù u modu automaticu, ma quandu avete stallatu, tuttu sarà bè.

fastlane init

Per utilizà fastlane in un prughjettu, eseguite fastlane init. Basta à seguità istruzioni per l'installazione e l'esecuzione di fastlanein particulare in a sezione nantu gemfile, perchè avemu bisognu di un lanciu rapidu è prevedibile attraversu un pipeline CI automaticu.

In u cartulare di u prughjettu, eseguite questi cumandamenti:

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

fastlane dumandà una cunfigurazione basica è poi creà un cartulare fastlane in u prugettu cù trè schedari:

1. fastlane/Appfile

Ùn ci hè nunda di complicatu quì. Solu verificate chì u vostru ID Apple è App ID sò curretti.

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

2. fastlane/Fastfile

Fastfile definisce i passi di custruzzione. Utilizemu assai funzioni integrate di fastlane, cusì tuttu hè chjaru ancu quì. Creemu una linea chì riceve certificati, custruisce è carica in TestFlight. Pudete dividisce stu prucessu in diverse attività se necessariu. Tutte queste operazioniget_certificates, get_provisioning_profile, gym и upload_to_testflight) sò digià inclusi in fastlane.

Actions get_certificates и get_provisioning_profile assuciatu cù l'approcciu di firma cert è suspiru. Sè vo aduprate scintilla o qualcosa altru, fate cambiamenti.

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

Questu hè un schedariu facultativu, ma l'aghju creatu manualmente per cambià u cartulare di output predeterminatu è mette l'output in u cartulare attuale. Questu simplifica CI. Sè interessatu, leghje circa gym è i so paràmetri in ducumentazione.

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

Nostru nostru .gitlab-ci.yml

Dunque, avemu un CI runner per u prugettu è simu pronti à pruvà u pipeline. Videmu ciò chì avemu .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

Все отлично! Avemu stabilitu u formatu UTF-8 per fastlane cum'è necessariu, usemu a strategia clone cù u prugramma in esecuzione shellcusì chì avemu un spaziu di travagliu pulitu per ogni custruzzione, è solu chjamate flappybuild fastlane cum'è vistu sopra. In u risultatu, avemu l'assemblea, a firma è a implementazione di l'ultima assemblea in TestFlight.

Avemu ancu ottene un artefattu è salvà cù l'assemblea. Nota chì u furmatu .ipa hè un eseguibile ARM firmatu chì ùn funziona micca in u simulatore. Se vulete output di simulatore, aghjunghje solu a destinazione di custruzzione chì u produce, è poi include in u percorsu di l'artefact.

Altre variabili ambientali

Ci hè un paru di variabili ambientali quì chì tuttu funziona.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Per autentificà in l'App Store è carica in TestFlight, avete bisognu di l'autentificazione per fastlane. Per fà questu, crea una password di l'applicazione chì serà usata in CI. Dettagli ccà.

Se tenete l'autentificazione à dui fattori, creanu una variabile FASTLANE_SESSION (istruzzioni quì).

FASTLANE_USER и FASTLANE_PASSWORD

chì cert è suspiru chjamatu u prufilu d'inizializazione è certificati nantu à dumanda, avete bisognu di stabilisce variàbili FASTLANE_USER и FASTLANE_PASSWORD. Dettagli ccà. Questu ùn hè micca necessariu s'è vo aduprate un metudu di firma diversu.

In cunclusioni

Pudete vede cumu tuttu funziona in u mo esempiu simplice.

Spergu chì questu hè statu utile è ispiratu à travaglià cù iOS builds in u prughjettu GitLab. Eccu un altru Cunsiglii CI per fastlane, in casu. Forsi vulete usà CI_BUILD_ID (per build incrementali) à versione d'incrementu automaticu.

Un'altra caratteristica interessante di fastlane hè screenshots automaticu per l'App Store, chì sò assai faciuli di stallà.

Parlaci di a vostra sperienza in i cumenti è sparte idee per migliurà GitLab per u sviluppu di l'app iOS.

Source: www.habr.com

Add a comment