Pubblicare applicazioni iOS su App Store utilizzando GitLab e fastlane

Pubblicare applicazioni iOS su App Store utilizzando GitLab e fastlane

Come GitLab con fastlane compila, firma e pubblica applicazioni iOS su App Store.

Recentemente abbiamo avuto un post su come compilare e lanciare rapidamente un'app Android con GitLab e fastlane. Qui vedremo come compilare e lanciare un'app iOS e pubblicarla su TestFlight. Guarda quanto è fantastico fare una modifica su iPad Pro con GitLab Web IDE, prendo la build e ricevo l'aggiornamento della versione beta dell'applicazione sullo stesso iPad Pro in cui l'ho sviluppata.

Qui prenderemo una semplice applicazione iOS in Swift, con cui ho registrato un video.

Due parole sulla configurazione dell'Apple Store

Avremo bisogno di un'app su App Store, di certificati di distribuzione e di un profilo di provisioning per mettere tutto insieme.

La parte più complicata qui è configurare i diritti di firma su App Store. Spero che voi possiate farlo da soli. Se siete principianti, vi indicherò la giusta direzione, ma qui non parleremo delle complessità della gestione dei certificati Apple, poiché sono in continua evoluzione. Questo post aiuterà a iniziare.

Le mie applicazioni

Occorre un'app su App Store Connect per avere un ID per la configurazione .xcodebuild. Il profilo e l'ID dell'applicazione combinano le build del codice, i prezzi e la disponibilità, oltre alla configurazione di TestFlight per la distribuzione delle app di test agli utenti. Non è necessario fare test pubblici; va bene anche quello privato se hai un piccolo gruppo, una configurazione semplice e non hai bisogno di permessi aggiuntivi da Apple.

Profilo di inizializzazione

Oltre alla configurazione dell'app, hai bisogno delle chiavi di distribuzione e sviluppo per iOS, create nella sezione Certificates, Identifiers & Profiles (Certificati, Identificatori e Profili) nella console Apple Developer. Tutti questi certificati possono essere combinati in un profilo di inizializzazione.

Gli utenti che devono effettuare l'autenticazione necessitano della possibilità di creare certificati, altrimenti nelle fasi cert e sigh visualizzerai un errore.

Altre opzioni

Oltre a questo metodo semplice, ci sono altri modi per configurare certificati e profili. Quindi, se stai lavorando in modo diverso, potresti dover adattarti. La cosa più importante è che avrai bisogno di una configurazione .xcodebuild, che indicherà i file necessari, e la coppia di chiavi deve essere disponibile sul computer di build per l'utente sotto il cui nome opera il runner. Per la firma digitale utilizziamo fastlane, e se ci sono problemi o vuoi saperne di più, consulta la loro dettagliata documentazione sulla firma digitale.

In questo esempio utilizzo un approccio cert e sigh, ma per un'applicazione reale probabilmente sarà più adatto corrispondenza.

Preparazione di GitLab e fastlane

Preparazione del CI Runner

Raccolte tutte queste informazioni, passiamo alla configurazione del GitLab Runner su un dispositivo MacOS. Sfortunatamente, è possibile sviluppare applicazioni iOS solo su MacOS. Ma tutto può cambiare, e se aspetti novità in questo campo, segui progetti come xcbuild e isign, e il nostro compito interno gitlab-ce#57576.

Configurare il runner è molto semplice. Segui le attuali istruzioni per la configurazione di GitLab Runner in macOS.

Nota. Il runner deve utilizzare un eseguibile shell. Questo è obbligatorio per compilare iOS in macOS, affinché funzioni direttamente come utente e non tramite container. Se stai usando shellla compilazione e il testing vengono eseguiti a nome dell'utente del runner, direttamente sull'host di compilazione. Non è così sicuro come i contenitori, quindi è meglio scorrere la documentazione sulla sicurezza, per non perdere nulla.

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

Il portachiavi Apple deve essere configurato su questo host con accesso alle chiavi necessarie per Xcode per la compilazione. Il modo più semplice per testarlo è accedere come utente che eseguirà la compilazione e provare a compilarla manualmente. Se il sistema richiede accesso al portachiavi, seleziona «Consenti sempre» affinché il CI funzioni. Potrebbe valere la pena accedere e osservare i primi paio di pipeline, per assicurarti che non richiedano più il portachiavi. Il problema è che Apple non facilita il lavoro con la modalità automatica, ma una volta che la imposti, andrà tutto bene.

fastlane init

Per utilizzare fastlane nel progetto, esegui fastlane init. Segui semplicemente le istruzioni per l'installazione e l'avvio di fastlane, specialmente nella sezione su Gemfile, poiché abbiamo bisogno di un avvio rapido e prevedibile tramite un pipeline CI automatizzato.

Nel catalogo del progetto, esegui questi comandi:

xcode-select --install
sudo gem install fastlane -NV
# In alternativa, usando Homebrew
# brew cask install fastlane
fastlane init

fastlane richiederà una configurazione di base e poi creerà nella cartella del progetto la cartella fastlane con tre file:

1. fastlane/Appfile

Qui non c'è nulla di complicato. Controlla solo che l'Apple ID e l'ID dell'app siano stati inseriti correttamente.

app_identifier("com.vontrance.flappybird") # L'identificativo del bundle della tua app
apple_id("your-email@your-domain.com") # Il tuo indirizzo email Apple

2. fastlane/Fastfile

Fastfile , definisce i passaggi di compilazione. Utilizziamo molte funzionalità integrate di fastlane, quindi anche qui tutto è chiaro. Creiamo una linea che ottiene i certificati, esegue la compilazione e la carica su TestFlight. Puoi dividere questo processo in diversi compiti, se necessario. Tutte queste operazioni (get_certificates, get_provisioning_profile, gym e upload_to_testflight) sono già incluse in fastlane.

Azioni get_certificates e get_provisioning_profile sono legate al metodo di firma cert e sigh. Se utilizzi corrispondenza o altro, apporta le modifiche necessarie.

default_platform(:ios)

platform :ios do
  desc "Compila l'applicazione"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Questo file è facoltativo, ma l'ho creato manualmente per cambiare la cartella di output predefinita e posizionare i risultati nella cartella corrente. Questo semplifica il CI. Se sei interessato, leggi di gym e delle sue opzioni in documentazione.

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

Il nostro .gitlab-ci.yml

Quindi, abbiamo un runner CI per il progetto e siamo pronti a testare il pipeline. Vediamo cosa abbiamo in .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

Tutto perfetto! Impostiamo il formato UTF-8 per fastlane, come richiesto, usando la strategia clone con il programma eseguibile shell, in modo da avere un ambiente di lavoro pulito per ogni build, e chiamiamo semplicemente flappybuild fastlane, come mostrato sopra. Alla fine otteniamo una build, una firma e il deploy dell'ultima build in TestFlight.

Otteniamo anche un artefatto e lo salviamo con la build. Nota che il formato .ipa è un file eseguibile ARM firmato, che non può essere eseguito nell'emulatore. Se desideri l'output per l'emulatore, basta aggiungere un target di build che lo produce e poi includerlo nel percorso dell'artefatto.

Altre variabili ambientali

Ci sono un paio di variabili ambientali su cui tutto si basa.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD e FASTLANE_SESSION

Per l'autenticazione su App Store e il caricamento su TestFlight è necessaria l'autenticazione per fastlane. Crea una password per l'applicazione da utilizzare nel CI. Ulteriori dettagli qui.

Se hai l'autenticazione a due fattori, crea una variabile FASTLANE_SESSION (le istruzioni sono lì).

FASTLANE_USER e FASTLANE_PASSWORD

Per creare un file di esportazione del database di gestione sul server di origine: cert e sigh hai richiesto il profilo di inizializzazione e i certificati, è necessario configurare le variabili FASTLANE_USER e FASTLANE_PASSWORD. Ulteriori dettagli qui. Questo non è necessario se utilizzi un altro metodo di firma.

In conclusione

Puoi vedere come funziona tutto questo nel mio semplice esempio.

Spero che questo sia stato utile e ti abbia ispirato a lavorare con le build iOS nel progetto GitLab. Ecco altri consigli sul CI per fastlane, nel caso decidessi di utilizzare CI_BUILD_ID (per build incrementali), per incrementare automaticamente la versione.

Un'altra funzionalità interessante di fastlane è gli screenshot automatici per l'App Store, che è molto semplice da configurare.

Raccontaci nei commenti della tua esperienza e condividi idee per migliorare GitLab per lo sviluppo di applicazioni iOS.

Fonte: habr.com

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster