Publicació d'aplicacions iOS a l'App Store amb GitLab i Fastlane

Publicació d'aplicacions iOS a l'App Store amb GitLab i Fastlane

Com GitLab amb fastlane recull, signa i publica aplicacions d'iOS a l'App Store.

Fa poc que vam tenir una publicació sobre com crear i executar ràpidament una aplicació per a Android amb GitLab i carril ràpid. Aquí veurem com crear i executar una aplicació iOS i publicar-la a TestFlight. Mireu que xulo Faig un canvi en un iPad Pro amb GitLab Web IDE, agafo la compilació i rebo una actualització de la versió de prova de l'aplicació al mateix iPad Pro on la vaig desenvolupar.

Aquí agafem aplicació iOS senzilla a Swiftamb el qual vaig gravar el vídeo.

Unes paraules sobre la configuració de l'Apple Store

Necessitarem una aplicació a l'App Store, certificats de distribució i un perfil de subministrament per unir-ho tot.

El més difícil aquí és configurar els permisos de signatura a l'App Store. Espero que ho pugueu esbrinar vosaltres mateixos. Si sou nou, us indicaré la direcció correcta, però aquí no parlarem de les complexitats de la gestió dels certificats d'Apple, i estan canviant constantment. Aquesta publicació us ajudarà a començar.

Les meves aplicacions

Necessites una aplicació a App Store Connect perquè tinguis un identificador per configurar .xcodebuild. El perfil de l'aplicació i l'identificador combinen compilacions de codi, preus i disponibilitat, i la configuració de TestFlight per distribuir aplicacions de prova als usuaris. No feu proves públiques, les proves privades són suficients si teniu un grup reduït, una configuració senzilla i no necessiteu permisos addicionals d'Apple.

Perfil d'aprovisionament

A més de la configuració de l'aplicació, necessiteu les claus de desenvolupament i distribució d'iOS creades a la secció Certificats, identificadors i perfils de la consola Apple Developer. Tots aquests certificats es poden combinar en un perfil de subministrament.

Els usuaris que seran autenticats necessiten la possibilitat de crear certificats, en cas contrari els passos cert i sospir veureu un error.

altres opcions

A més d'aquest mètode senzill, hi ha altres maneres de configurar certificats i perfils. Per tant, si treballeu de manera diferent, potser haureu de reajustar-vos. El més important és que necessitareu una configuració .xcodebuild, que apuntarà als fitxers necessaris, i el clauer ha d'estar disponible a l'ordinador de compilació per a l'usuari amb el nom del qual s'executa el corredor. Utilitzem Fastlane per a la signatura digital, i si teniu problemes o voleu saber-ne més, consulteu el seu detall documentació de signatura digital.

En aquest exemple estic utilitzant l'enfocament cert i sospir, però per a un ús real, probablement més adequat partit.

Preparant GitLab i Fastlane

Preparant CI Runner

Recollides totes aquestes dades, passem a la configuració del corredor GitLab en un dispositiu MacOS. Malauradament, fer aplicacions per a iOS només és possible a MacOS. Però tot pot canviar, i si estàs esperant progressos en aquest àmbit, segueix projectes com xcbuild и disseny, i la nostra tasca interna gitlab-ce#57576.

Configurar el corredor és molt fàcil. Seguiu al dia instruccions per configurar GitLab Runner a macOS.

Nota. El corredor ha d'utilitzar un programa d'execució shell. Això és necessari per crear iOS a macOS perquè funcioni directament com a usuari i no mitjançant contenidors. Si estàs utilitzant shell, la construcció i les proves es fan com a usuari del corredor, just a l'amfitrió de compilació. No és tan segur com els contenidors, així que és millor que feu la volta documentació de seguretatperquè no et perdis res.

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 s'ha de configurar en aquest amfitrió amb accés a les claus que Xcode necessita per crear. La manera més senzilla de provar-ho és iniciar sessió com a usuari que executarà la compilació i provar de crear-la manualment. Si el sistema demana accés al clauer, seleccioneu "Permetre sempre" perquè CI funcioni. Potser val la pena entrar i mirar el primer parell de canonades per assegurar-se que ja no demanen un clauer. El problema és que Apple no ens facilita treballar amb el mode automàtic, però quan el configureu, tot anirà bé.

Fastlane init

Per utilitzar Fastlane en un projecte, executeu fastlane init. Només seguiu instruccions per instal·lar i executar Fastlanesobretot a l'apartat sobre gemfile, perquè necessitem un llançament ràpid i previsible mitjançant un pipeline CI automàtic.

Al directori del projecte, executeu aquestes ordres:

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

fastlane sol·licitarà una configuració bàsica i després crearà una carpeta fastlane al projecte amb tres fitxers:

1. fastlane/Appfile

Aquí no hi ha res complicat. Només assegureu-vos que el vostre ID d'Apple i l'ID d'aplicació siguin correctes.

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

2. fastlane/Fastfile

Fastfile defineix els passos de construcció. Utilitzem moltes funcions integrades de Fastlane, de manera que aquí també queda tot clar. Creem una línia que rep certificats, la construeix i la puja a TestFlight. Podeu dividir aquest procés en diferents tasques si cal. Totes aquestes operacionsget_certificates, get_provisioning_profile, gym и upload_to_testflight) ja estan inclosos a Fastlane.

Activitat get_certificates и get_provisioning_profile relacionat amb l'enfocament de signatura cert i sospir. Si estàs utilitzant partit o una altra cosa, fer canvis.

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

Aquest és un fitxer opcional, però el vaig crear manualment per canviar el directori de sortida predeterminat i posar la sortida a la carpeta actual. Això simplifica CI. Si us interessa, llegiu-ne gym i els seus paràmetres documentació.

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

La nostra .gitlab-ci.yml

Així doncs, tenim un responsable de CI per al projecte i estem preparats per provar el pipeline. A veure què tenim .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

Tots els detalls! Definim el format UTF-8 per a Fastlane segons sigui necessari, fem servir l'estratègia clone amb el programa en execució shellde manera que tinguem un espai de treball net per a cada construcció i només truquem flappybuild Fastlane com es veu més amunt. Com a resultat, obtenim el muntatge, la signatura i el desplegament de l'últim muntatge a TestFlight.

També obtenim un artefacte i el guardem amb el muntatge. Tingueu en compte que el format .ipa és un executable ARM signat que no s'executa al simulador. Si voleu una sortida del simulador, només heu d'afegir l'objectiu de construcció que el produeix i, a continuació, incloure-lo al camí de l'artefacte.

Altres variables d'entorn

Aquí hi ha un parell de variables d'entorn amb les quals tot funciona.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Per autenticar-vos a l'App Store i pujar a TestFlight, necessiteu l'autenticació per a Fastlane. Per fer-ho, creeu una contrasenya d'aplicació que s'utilitzarà a CI. Detalls aquí.

Si teniu una autenticació de dos factors, creeu una variable FASTLANE_SESSION (instruccions allà).

FASTLANE_USER и FASTLANE_PASSWORD

Que cert i sospir anomenat perfil d'inicialització i certificats a petició, cal establir variables FASTLANE_USER и FASTLANE_PASSWORD. Detalls aquí. Això no és necessari si utilitzeu un mètode de signatura diferent.

en conclusió

Podeu veure com funciona tot en el meu exemple senzill.

Espero que us hagi estat útil i us hagi inspirat a treballar amb les compilacions d'iOS al projecte GitLab. Aquí hi ha un altre Consells de CI per Fastlane, per si de cas. Potser voleu utilitzar CI_BUILD_ID (per a compilacions incrementals) a versió d'increment automàtic.

Una altra característica interessant de Fastlane és captures de pantalla automàtiques per a l'App Store, que són molt fàcils de configurar.

Explica'ns la teva experiència als comentaris i comparteix idees per millorar el desenvolupament d'aplicacions GitLab per a iOS.

Font: www.habr.com

Afegeix comentari