Objavljanje iOS aplikacij v App Store z GitLab in fastlane

Objavljanje iOS aplikacij v App Store z GitLab in fastlane

Kako GitLab s Fastlane zbira, podpisuje in objavlja iOS aplikacije v App Store.

Pred kratkim smo imeli objava o tem, kako hitro zgraditi in zagnati aplikacijo za Android z GitLabom in prehitevalni pas. Tukaj bomo videli, kako zgraditi in zagnati aplikacijo za iOS ter jo objaviti v TestFlight. Preverite, kako kul je Izvajam spremembe na iPadu Pro s spletnim IDE GitLab, vzamem sklop in dobim posodobitev testne različice aplikacije na istem iPadu Pro, kjer sem jo razvil.

Tukaj bomo vzeli preprosta aplikacija za iOS na Swiftu, s katerim sem posnel video.

Nekaj ​​besed o konfiguraciji Apple Store

Potrebovali bomo aplikacijo App Store, distribucijska potrdila in profil za zagotavljanje, da vse povežemo skupaj.

Najtežja stvar pri tem je nastavitev pravic za podpisovanje v App Store. Upam, da lahko to ugotovite sami. Če ste novi, vas bom usmeril v pravo smer, vendar tukaj ne bomo govorili o zapletenosti upravljanja potrdil Apple, ki se nenehno spreminjajo. Ta objava vam bo pomagala začeti.

Moje aplikacije

Potrebujete aplikacijo v App Store Connect, da imate ID za konfiguracijo .xcodebuild. Profil in ID aplikacije združujeta gradnje kode, cene in razpoložljivost ter konfiguracijo TestFlight za distribucijo testnih aplikacij uporabnikom. Ne izvajajte javnega testiranja, zasebno testiranje bo zadostovalo, če imate majhno skupino, preprosto nastavitev in ne potrebujete dodatnih dovoljenj podjetja Apple.

Inicializacijski profil

Poleg nastavitve aplikacije potrebujete distribucijske in razvojne ključe za iOS, ustvarjene v razdelku Certifikati, identifikatorji in profili konzole Apple Developer. Vsa ta potrdila je mogoče združiti v profil zagotavljanja.

Uporabniki, ki bodo preverjeni, morajo imeti možnost ustvariti potrdila, drugače pa korake cert in vzdih videli boste napako.

druge možnosti

Poleg te preproste metode obstajajo tudi drugi načini za konfiguriranje potrdil in profilov. Torej, če delate drugače, se boste morda morali prilagoditi. Najpomembnejša stvar je, da potrebujete konfiguracijo .xcodebuild, ki bo pokazal na potrebne datoteke, obesek ključev pa mora biti na voljo na računalniku za gradnjo za uporabnika, pod imenom katerega se izvaja tekač. Za digitalni podpis uporabljamo fastlane, če pa se pojavijo težave ali želite izvedeti več, si oglejte njihove podrobnosti dokumentacijo o digitalnih podpisih.

V tem primeru uporabljam pristop cert in vzdih, vendar je za resnično uporabo verjetno bolj primeren ujemajo.

Priprava GitLab in fastlane

Priprava CI Runnerja

Ko zberemo vse te podatke, preidemo na konfiguracijo izvajalca GitLab v napravi MacOS. Na žalost lahko aplikacije za iOS izdelujete samo v sistemu MacOS. A vse se lahko spremeni in če pričakujete napredek na tem področju, bodite pozorni na projekte, kot je xcbuild и znak, in naša interna naloga gitlab-ce#57576.

Nastavitev tekača je zelo preprosta. Sledite toku navodila za nastavitev GitLab Runner v sistemu macOS.

Opomba. Tekač mora uporabljati izvršljiv program shell. To je potrebno za izgradnjo sistema iOS na macOS, da deluje neposredno kot uporabnik in ne prek vsebnikov. Če uporabljate shell, gradnjo in testiranje izvajata kot uporabnik tekača, neposredno na gostitelju gradnje. Ni tako varen kot zabojniki, zato raje brskajte varnostno dokumentacijotako da nič ne zamudiš.

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 mora biti konfiguriran na tem gostitelju z dostopom do ključev, ki jih mora zgraditi Xcode. To najlažje preizkusite tako, da se prijavite kot uporabnik, ki bo zagnal gradnjo in jo poskusite zgraditi ročno. Če sistem zahteva dostop do obeska ključev, izberite Vedno dovoli, da CI deluje. Morda bi bilo vredno vstopiti in opazovati prvih nekaj cevovodov, da se prepričate, da ne bodo več zahtevali obeska za ključe. Težava je v tem, da nam Apple ne olajša uporabe samodejnega načina, a ko ga enkrat zaženete, bo vse v redu.

fastlane init

Če želite uporabiti fastlane v projektu, zaženite fastlane init. Samo sledi navodila za namestitev in zagon fastlane, še posebej v razdelku o Gemfile, ker potrebujemo hiter in predvidljiv zagon prek avtomatiziranega cevovoda CI.

V imeniku vašega projekta zaženite te ukaze:

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

fastlane bo zahteval osnovno konfiguracijo in nato v projektu ustvaril mapo fastlane s tremi datotekami:

1. fastlane/Appfile

Tukaj ni nič zapletenega. Samo preverite, ali sta vaš Apple ID in App ID pravilna.

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

2. fastlane/Fastfile

Fastfile določa korake gradnje. Uporabljamo veliko vgrajenih funkcij fastlane, tako da je tudi tukaj vse jasno. Ustvarimo eno vrstico, ki prejme certifikate, izvede sestavo in jo naloži v TestFlight. Ta postopek lahko po potrebi razdelite na različne naloge. Vse te operacije (get_certificates, get_provisioning_profile, gym и upload_to_testflight) so že vključeni v fastlane.

Dejavnost get_certificates и get_provisioning_profile povezanih s pristopom podpisovanja cert in vzdih. Če uporabljate ujemajo ali karkoli drugega, spremenite.

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

To je izbirna datoteka, vendar sem jo ustvaril ročno, da spremenim privzeti izhodni imenik in postavim izhod v trenutno mapo. To poenostavlja CI. Če vas zanima, preberite o gym in njegove parametre v dokumentacijo.

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

Ours .gitlab-ci.yml

Torej imamo izvajalca CI za projekt in pripravljeni smo preizkusiti cevovod. Poglejmo, kaj imamo notri .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

Vse je v redu! Format smo nastavili na UTF-8 za fastlane, kot je potrebno, uporabite strategijo clone z izvajalnim programom shell, tako da imamo čist delovni prostor za vsako montažo in preprosto pokličite flappybuild fastlane, kot je prikazano zgoraj. Posledično dobimo sestavo, podpis in uvedbo najnovejše sestave v TestFlight.

Dobimo tudi artefakt in ga shranimo z montažo. Upoštevajte, da oblika .ipa je podpisana izvršljiva datoteka ARM, ki se ne izvaja v simulatorju. Če želite izhod za simulator, preprosto dodajte cilj gradnje, ki ga ustvari, in ga nato vključite v pot artefakta.

Druge spremenljivke okolja

Tukaj je nekaj spremenljivk okolja, zaradi katerih vse deluje.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Za preverjanje pristnosti v App Store in nalaganje v TestFlight je potrebna avtentikacija za Fastlane. Če želite to narediti, ustvarite geslo za aplikacijo, ki bo uporabljena v CI. Podrobnosti tukaj.

Če imate dvostopenjsko avtentikacijo, ustvarite spremenljivko FASTLANE_SESSION (navodila tam).

FASTLANE_USER и FASTLANE_PASSWORD

To cert in vzdih ki se imenuje inicializacijski profil in potrdila na zahtevo, morate nastaviti spremenljivke FASTLANE_USER и FASTLANE_PASSWORD. Podrobnosti tukaj. To ni potrebno, če uporabljate drug način podpisovanja.

Na koncu

Lahko vidite, kako vse deluje v mojem preprostem primeru.

Upam, da je bilo to koristno in vas je navdihnilo za delo z različicami iOS v projektu GitLab. Tukaj je še ena CI nasveti za fastlane, za vsak slučaj. Morda boste želeli uporabiti CI_BUILD_ID (za postopne gradnje) do samodejno poveča različico.

Še ena kul lastnost fastlanea je samodejni posnetki zaslona za App Store, ki jih je zelo enostavno nastaviti.

V komentarjih nam povejte o svojih izkušnjah in delite svoje zamisli za izboljšanje GitLaba za razvoj aplikacij za iOS.

Vir: www.habr.com

Dodaj komentar