Publiseer iOS-toepassings na die App Store met GitLab en fastlane

Publiseer iOS-toepassings na die App Store met GitLab en fastlane

Hoe GitLab met fastlane iOS-toepassings in die App Store versamel, teken en publiseer.

Ons het onlangs gehad 'n plasing oor hoe om vinnig 'n Android-toepassing te bou en uit te voer met GitLab en vinnige baan. Hier sal ons sien hoe om 'n iOS-toepassing te bou en te laat loop en dit na TestFlight te publiseer. Kyk hoe gaaf Ek maak 'n verandering op 'n iPad Pro met GitLab Web IDE, Ek neem die bou en kry 'n opdatering van die toetsweergawe van die toepassing op dieselfde iPad Pro waar ek dit ontwikkel het.

Hier neem ons eenvoudige iOS-toepassing in Swiftwaarmee ek die video opgeneem het.

'N Paar woorde oor die konfigurasie van die Apple Store

Ons het 'n toepassing in die App Store, verspreidingsertifikate en 'n voorsieningsprofiel nodig om alles saam te bind.

Die moeilikste ding hier is om ondertekeningstoestemmings in die App Store op te stel. Ek hoop jy kan dit self uitvind. As jy nuut is, sal ek jou in die regte rigting wys, maar ons sal nie hier praat oor die ingewikkeldhede van die bestuur van Apple-sertifikate nie, en hulle verander voortdurend. Hierdie pos sal jou help om te begin.

My programme

Benodig 'n toepassing in App Store Connect sodat jy 'n ID het om op te stel .xcodebuild. Die programprofiel en ID kombineer kodebou, pryse en beskikbaarheid, en die TestFlight-konfigurasie om toetsprogramme aan gebruikers te versprei. Moenie publieke toetse doen nie, privaat toetsing is genoeg as jy 'n klein groepie, eenvoudige opstelling het en nie bykomende toestemmings van Apple benodig nie.

Voorsieningsprofiel

Benewens die programopstelling, benodig jy die iOS-verspreiding- en ontwikkelingsleutels wat in die Sertifikate, Identifiseerders en Profiele-afdeling van die Apple-ontwikkelaarkonsole geskep is. Al hierdie sertifikate kan in 'n voorsieningsprofiel gekombineer word.

Gebruikers wat geverifieer sal word, moet die vermoë hê om sertifikate te skep, anders die stappe sert en sug jy sal 'n fout sien.

ander opsies

Behalwe hierdie eenvoudige metode, is daar ander maniere om sertifikate en profiele op te stel. Dus, as jy anders werk, moet jy dalk weer aanpas. Die belangrikste is dat u 'n konfigurasie benodig .xcodebuild, wat na die nodige lêers sal wys, en die sleutelhanger moet beskikbaar wees op die bourekenaar vir die gebruiker onder wie se naam die hardloper loop. Ons gebruik Fastlane vir digitale ondertekening, en as jy probleme het of meer wil weet, kyk na die besonderhede daarvan digitale handtekening dokumentasie.

In hierdie voorbeeld gebruik ek die benadering sert en sug, maar vir werklike gebruik, waarskynlik beter geskik ooreenstem met.

Berei GitLab en fastlane voor

Berei CI Runner voor

Nadat ons al hierdie data versamel het, gaan ons voort na die konfigurasie van die GitLab-hardloper op 'n MacOS-toestel. Ongelukkig is die maak van iOS-toepassings slegs moontlik op MacOS. Maar alles kan verander, en as jy wag vir vordering op hierdie gebied, volg projekte soos xcbou и ontwerp, en ons interne taak gitlab-ce#57576.

Die opstel van die hardloper is baie maklik. Volg op datum instruksies vir die opstel van GitLab Runner op macOS.

Let wel. Die hardloper moet 'n uitvoerende program gebruik shell. Dit is nodig om iOS op macOS te bou om direk as 'n gebruiker te werk en nie deur houers nie. As jy gebruik shell, gebou en toetsing word gedoen as die hardlopergebruiker, direk op die bougasheer. Dit is nie so veilig soos houers nie, so jy beter omdraai sekuriteit dokumentasiesodat jy niks mis nie.

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 moet op hierdie gasheer opgestel word met toegang tot die sleutels wat Xcode moet bou. Die maklikste manier om dit te toets, is om aan te meld as die gebruiker wat die bou sal laat loop en met die hand probeer bou. As die stelsel vir sleutelhouertoegang vra, kies "Laat altyd toe" sodat CI kan werk. Dit is dalk die moeite werd om in te gaan en die eerste paar pyplyne dop te hou om seker te maak hulle vra nie meer vir 'n sleutelhouer nie. Die probleem is dat Apple dit nie vir ons maklik maak om met outomatiese modus te werk nie, maar wanneer jy dit opgestel kry, sal alles reg wees.

fastlane init

Hardloop om fastlane in 'n projek te gebruik fastlane init. Volg net instruksies vir die installering en bestuur van Fastlaneveral in die afdeling oor gemfile, want ons benodig 'n vinnige en voorspelbare bekendstelling deur 'n outomatiese CI-pyplyn.

Voer hierdie opdragte in die projekgids uit:

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

fastlane sal 'n basiese konfigurasie aanvra en dan 'n fastlane-lêergids in die projek skep met drie lêers:

1. fastlane/Appfile

Hier is niks ingewikkeld nie. Maak net seker jou Apple ID en App ID is korrek.

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

2. fastlane/Fastfile

Fastfile definieer boustappe. Ons gebruik baie fastlane se ingeboude kenmerke, so alles is ook hier duidelik. Ons skep een lyn wat sertifikate ontvang, bou en oplaai na TestFlight. Jy kan hierdie proses in verskillende take verdeel indien nodig. Al hierdie operasiesget_certificates, get_provisioning_profile, gym и upload_to_testflight) is reeds ingesluit in fastlane.

Aktiwiteit get_certificates и get_provisioning_profile verband hou met die ondertekening benadering sert en sug. As jy gebruik ooreenstem met of iets anders, maak veranderinge.

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 'n opsionele lêer, maar ek het dit met die hand geskep om die verstek uitvoergids te verander en die uitvoer in die huidige gids te plaas. Dit vereenvoudig CI. As jy belangstel, lees oor gym en sy parameters in dokumentasie.

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

Наш .gitlab-ci.yml

So, ons het 'n CI-hardloper vir die projek en ons is gereed om die pyplyn te toets. Kom ons kyk wat ons het .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

Все отлично! Ons stel die UTF-8-formaat vir fastlane soos vereis, gebruik ons ​​die strategie clone met die uitvoering van program shellsodat ons 'n skoon werkspasie vir elke gebou het, en bel net flappybuild snellaan soos hierbo gesien. As gevolg hiervan kry ons die samestelling, handtekening en ontplooiing van die nuutste samestelling in TestFlight.

Ons kry ook 'n artefak en stoor dit saam met die samestelling. Let daarop dat die formaat .ipa is 'n getekende ARM-uitvoerbare program wat nie in die simulator loop nie. As jy simulatoruitset wil hê, voeg net die bouteiken by wat dit produseer, en sluit dit dan by die artefakpad in.

Ander omgewingsveranderlikes

Daar is 'n paar omgewingsveranderlikes hier waarop alles werk.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Om na die App Store te staaf en na TestFlight op te laai, benodig jy stawing vir fastlane. Om dit te doen, skep 'n programwagwoord wat in CI gebruik sal word. Besonderhede hier.

As jy twee-faktor-verifikasie het, skep 'n veranderlike FASTLANE_SESSION (instruksies daar).

FASTLANE_USER и FASTLANE_PASSWORD

Wat sert en sug genoem die inisialisering profiel en sertifikate op versoek, moet jy veranderlikes stel FASTLANE_USER и FASTLANE_PASSWORD. Besonderhede hier. Dit is nie nodig as jy 'n ander ondertekeningsmetode gebruik nie.

Ten slotte

Jy kan sien hoe dit alles werk in my eenvoudige voorbeeld.

Ek hoop dit was nuttig en het jou geïnspireer om met iOS-geboue in die GitLab-projek te werk. Hier is nog een CI wenke vir vinnige baan, net vir ingeval. Miskien wil jy gebruik CI_BUILD_ID (vir inkrementele bou) aan outomatiese inkrementweergawe.

Nog 'n oulike kenmerk van fastlane is outomatiese skermkiekies vir die App Store, wat baie maklik is om op te stel.

Vertel ons van jou ervaring in die opmerkings en deel idees vir die verbetering van GitLab vir iOS-toepassingsontwikkeling.

Bron: will.com

Voeg 'n opmerking