iOS-applikaasjes publisearje nei de App Store mei GitLab en fastlane

iOS-applikaasjes publisearje nei de App Store mei GitLab en fastlane

Hoe GitLab mei fastlane iOS-applikaasjes sammelet, tekenet en publisearret yn 'e App Store.

Wy hienen koartlyn post oer hoe't jo fluch in Android-applikaasje bouwe en útfiere mei GitLab en snelle baan. Hjir sille wy sjen hoe't jo in iOS-app bouwe en útfiere en it publisearje nei TestFlight. Besjoch hoe cool it is Ik meitsje in feroaring op in iPad Pro mei GitLab Web IDE, Ik nim de gearkomste en krij in update foar de testferzje fan 'e applikaasje op deselde iPad Pro wêr't ik it ûntwikkele.

Hjir sille wy nimme ienfâldige iOS-app op Swift, mei wa't ik de fideo opnaam.

In pear wurden oer de konfiguraasje fan Apple Store

Wy hawwe in App Store-app, distribúsjesertifikaten en in foarsjenningsprofyl nedich om alles byinoar te binen.

It dreechste hjir is it ynstellen fan ûndertekeningsrjochten yn 'e App Store. Ik hoopje dat jo dit sels útfine kinne. As jo ​​​​nij binne, sil ik jo yn 'e goede rjochting wize, mar wy sille net prate oer de kompleksjes fan it behearen fan Apple-sertifikaten hjir, en se feroarje konstant. Dizze post sil jo helpe om te begjinnen.

Myn apps

Jo hawwe in app nedich yn App Store Connect sadat jo in ID hawwe foar konfiguraasje .xcodebuild. It profyl en de applikaasje ID kombinearje koade builds, prizen en beskikberens, en TestFlight-konfiguraasje foar it fersprieden fan testapplikaasjes oan brûkers. Doch gjin iepenbiere testen, privee testen sille genôch wêze as jo in lytse groep hawwe, maklike opset, en gjin ekstra tagongsrjochten fan Apple nedich binne.

Inisjalisaasje profyl

Neist de app-opset hawwe jo iOS-distribúsje- en ûntwikkelkaaien nedich makke yn 'e seksje sertifikaten, identifisearjes en profilen fan' e Apple Developer-konsole. Al dizze sertifikaten kinne wurde kombinearre yn in foarsjenningsprofyl.

Brûkers dy't authentisearre wurde moatte sertifikaten kinne oanmeitsje, oars de stappen cert en sucht jo sille in flater sjen.

oare opsjes

Njonken dizze ienfâldige metoade binne d'r oare manieren om sertifikaten en profilen te konfigurearjen. Dus, as jo oars wurkje, moatte jo miskien oanpasse. It wichtichste is dat jo konfiguraasje nedich binne .xcodebuild, dy't sil wize op de nedige triemmen, en de keychain moat beskikber wêze op de build kompjûter foar de brûker ûnder waans namme de runner rint. Foar digitale hantekening wy brûke fastlane, en as der problemen of jo wolle witte mear, check out harren details dokumintaasje oer digitale hantekeningen.

Yn dit foarbyld brûke ik de oanpak cert en sucht, mar foar echte gebrûk is it wierskynlik better geskikt wedstriid.

GitLab en fastlane tariede

Tariede CI Runner

Nei it sammeljen fan al dizze gegevens, geane wy ​​troch nei de konfiguraasje fan 'e GitLab-runner op it MacOS-apparaat. Spitigernôch kinne jo allinich iOS-apps meitsje op MacOS. Mar alles kin feroarje, en as jo ferwachtsje foarútgong op dit gebiet, hâld dan in each op projekten lykas xcbuild и teken, en ús ynterne taak gitlab-ce#57576.

It ynstellen fan de runner is heul ienfâldich. Folgje aktuele ynstruksjes foar it ynstellen fan GitLab Runner op macOS.

Noat. De runner moat in útfierber programma brûke shell. Dit is nedich om iOS op macOS te bouwen om direkt as brûker te wurkjen ynstee fan fia konteners. As jo ​​brûke shell, Bouwe en testen wurde útfierd as de runner brûker, direkt op 'e build host. It is net sa feilich as konteners, dus better blêdzje feiligens dokumintaasjesadat jo neat misse.

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 moat wurde konfigurearre op dizze host mei tagong ta de kaaien dy't Xcode moat bouwe. De maklikste manier om dit te testen is om oan te melden as de brûker dy't de build sil útfiere en besykje it mei de hân te bouwen. As it systeem freget om tagong ta kaaien, selektearje Altyd tastean foar CI om te wurkjen. It kin de muoite wurdich wêze om yn te gean en de earste pear pipelines te besjen om te soargjen dat se net mear om de keychain freegje. It probleem is dat Apple it ús net maklik makket om de Auto-modus te brûken, mar as jo it oan 'e gong krije, sil alles goed wêze.

fastlane init

Om fastlane te brûken yn in projekt, rinne fastlane init. Folgje gewoan ynstruksjes foar it ynstallearjen en útfieren fan fastlane, benammen yn 'e seksje oer Gemfile, om't wy rappe en foarsisbere lansearring nedich hawwe troch in automatisearre CI-pipeline.

Rin dizze kommando's út yn jo projektmap:

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

fastlane sil freegje om in basiskonfiguraasje en dan meitsje in fastlane map yn it projekt mei trije triemmen:

1. fastlane/Appfile

D'r is hjir neat yngewikkeld. Soargje gewoan dat jo Apple ID en App ID korrekt binne.

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

2. fastlane/Fastfile

Fastfile definiearret de boustappen. Wy brûke in protte ynboude funksjes fan Fastlane, dus alles is hjir ek dúdlik. Wy meitsje ien rigel dy't sertifikaten ûntfangt, de gearkomste útfiert en uploadt nei TestFlight. Jo kinne dit proses ferdiele yn ferskate taken as it nedich is. Al dizze operaasjes (get_certificates, get_provisioning_profile, gym и upload_to_testflight) binne al opnommen yn fastlane.

Aksjes get_certificates и get_provisioning_profile ferbân mei de ûndertekening oanpak cert en sucht. As jo ​​brûke wedstriid of wat dan ek, meitsje feroarings.

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

Dit is in opsjoneel bestân, mar ik haw it manuell makke om de standertútfiermap te feroarjen en de útfier yn 'e hjoeddeistige map te pleatsen. Dit simplifies CI. As ynteressearre, lês oer gym en syn parameters yn dokumintaasje.

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

Us .gitlab-ci.yml

Dat, wy hawwe in CI-rinner foar it projekt en wy binne ree om de pipeline te testen. Litte wy sjen wat wy yn hawwe .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

All отлично! Wy sette it formaat op UTF-8 foar fastlane as nedich, brûke strategy clone mei útfiering programma shell, sadat wy hawwe in skjinne wurkromte foar eltse gearkomste, en gewoan belje flappybuild fastlane, lykas hjirboppe sjoen. As gefolch krije wy de gearstalling, hantekening en ynset fan 'e lêste gearstalling yn TestFlight.

Wy krije ek it artefakt en bewarje it mei de gearkomste. Tink derom dat it formaat .ipa is in ûndertekene ARM útfierber dat net rint yn 'e simulator. As jo ​​​​útfier wolle foar de simulator, foegje dan gewoan it boudoel ta dat it produsearret, en befetsje it dan yn it artefaktpaad.

Oare omjouwingsfariabelen

D'r binne hjir in pear omjouwingsfariabelen dy't alles meitsje.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Ferifikaasje foar fastlane is fereaske om te autentisearjen yn 'e App Store en te uploaden nei TestFlight. Om dit te dwaan, meitsje in wachtwurd foar de applikaasje dy't sil wurde brûkt yn CI. Details hjir.

As jo ​​twa-faktor autentikaasje hawwe, meitsje in fariabele FASTLANE_SESSION (ynstruksjes dêr).

FASTLANE_USER и FASTLANE_PASSWORD

dat cert en sucht neamd it inisjalisaasjeprofyl en sertifikaten op oanfraach, jo moatte de fariabelen ynstelle FASTLANE_USER и FASTLANE_PASSWORD. Details hjir. Dit is net nedich as jo in oare ûndertekeningmetoade brûke.

Yn ôfsluting

Jo kinne sjen hoe't it allegear wurket yn myn ienfâldige foarbyld.

Ik hoopje dat dit nuttich wie en jo ynspireare om te wurkjen mei iOS-builds yn in GitLab-projekt. Hjir is noch ien CI tips foar fastlane, krekt yn gefal. Jo wolle miskien brûke CI_BUILD_ID (foar inkrementele builds) oan automatysk increment ferzje.

In oare koele skaaimerk fan fastlane is automatyske skermôfbyldings foar de App Store, dy't heul maklik yn te stellen binne.

Fertel ús yn 'e opmerkingen oer jo ûnderfining en diel jo ideeën foar it ferbetterjen fan GitLab foar iOS-appûntwikkeling.

Boarne: www.habr.com

Add a comment