
Kako GitLab s Fastlane zbira, podpisuje in objavlja iOS aplikacije v App Store.
Pred kratkim smo imeli z GitLabom in . Tukaj bomo videli, kako zgraditi in zagnati aplikacijo za iOS ter jo objaviti v TestFlight. Preverite, kako kul je , vzamem sklop in dobim posodobitev testne različice aplikacije na istem iPadu Pro, kjer sem jo razvil.
Tukaj bomo vzeli , 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 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 .
V tem primeru uporabljam pristop , vendar je za resnično uporabo verjetno bolj primeren .
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 и , in naša interna naloga .
Nastavitev tekača je zelo preprosta. Sledite toku .
Opomba. Tekač mora uporabljati izvršljiv program shellTo je potrebno za vgradnjo iOS-a v macOSza neposredno delo 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 tako 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 startApple 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 , še posebej v razdelku o , 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 initfastlane 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("your-email@your-domain.com") # Your Apple email address2. 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 . Če uporabljate 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
end3. 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 .
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.ipaVse je v redu! , 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 .
Če imate dvostopenjsko avtentikacijo, ustvarite spremenljivko FASTLANE_SESSION (navodila tam).
FASTLANE_USER и FASTLANE_PASSWORD
To ki se imenuje inicializacijski profil in potrdila na zahtevo, morate nastaviti spremenljivke FASTLANE_USER и FASTLANE_PASSWORD. Podrobnosti . To ni potrebno, če uporabljate drug način podpisovanja.
Na koncu
Lahko vidite, kako vse deluje .
Upam, da je bilo to koristno in vas je navdihnilo za delo z različicami iOS v projektu GitLab. Tukaj je še ena za fastlane, za vsak slučaj. Morda boste želeli uporabiti CI_BUILD_ID (za postopne gradnje) do .
Še ena kul lastnost fastlanea je 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
