Publiceren van iOS-applicaties in de App Store met GitLab en fastlane

Publiceren van iOS-applicaties in de App Store met GitLab en fastlane

Hoe GitLab met fastlane iOS-applicaties verzamelt, ondertekent en publiceert in de App Store.

Wij hebben onlangs gehad post over hoe u snel een Android-applicatie kunt bouwen en uitvoeren met GitLab en fastlane. Hier zullen we zien hoe u een iOS-app kunt bouwen en uitvoeren en deze op TestFlight kunt publiceren. Kijk eens hoe cool het is Ik breng een wijziging aan op een iPad Pro met GitLab Web IDE, neem ik de montage en krijg een update van de testversie van de applicatie op dezelfde iPad Pro waar ik hem heb ontwikkeld.

Hier zullen we nemen eenvoudige iOS-app op Swift, met wie ik de video heb opgenomen.

Een paar woorden over de Apple Store-configuratie

We hebben een App Store-app, distributiecertificaten en een inrichtingsprofiel nodig om alles met elkaar te verbinden.

Het moeilijkste hier is het instellen van ondertekeningsrechten in de App Store. Ik hoop dat je dit zelf kunt uitzoeken. Als je nieuw bent, zal ik je in de goede richting wijzen, maar we zullen het hier niet hebben over de fijne kneepjes van het beheer van Apple-certificaten, en deze veranderen voortdurend. Dit bericht helpt je op weg.

Mijn apps

Je hebt een app nodig in App Store Connect, zodat je een ID hebt voor configuratie .xcodebuild. Het profiel en de applicatie-ID combineren codebuilds, prijzen en beschikbaarheid, en TestFlight-configuratie voor het distribueren van testapplicaties naar gebruikers. Voer geen openbare tests uit. Privétests zijn voldoende als u een kleine groep heeft, eenvoudig in te stellen bent en geen extra toestemming van Apple nodig heeft.

Initialisatieprofiel

Naast het instellen van de app heb je iOS-distributie- en ontwikkelingssleutels nodig die zijn gemaakt in het gedeelte Certificaten, ID's en profielen van de Apple Developer-console. Al deze certificaten kunnen worden gecombineerd in een inrichtingsprofiel.

Gebruikers die worden geverifieerd, moeten certificaten kunnen maken, anders volgen de stappen zeker en zucht u zult een fout zien.

andere opties

Naast deze eenvoudige methode zijn er nog andere manieren om certificaten en profielen te configureren. Als je dus anders gaat werken, kan het zijn dat je je moet aanpassen. Het belangrijkste is dat je configuratie nodig hebt .xcodebuild, die naar de benodigde bestanden verwijst, en de sleutelhanger moet beschikbaar zijn op de buildcomputer voor de gebruiker onder wiens naam de runner draait. Voor de digitale handtekening gebruiken we fastlane, en als er problemen zijn of als je meer wilt weten, bekijk dan hun gegevens documentatie over digitale handtekeningen.

In dit voorbeeld gebruik ik de aanpak zeker en zucht, maar voor echt gebruik is het waarschijnlijk beter geschikt match.

GitLab en fastlane voorbereiden

CI Runner voorbereiden

Nadat we al deze gegevens hebben verzameld, gaan we verder met de configuratie van de GitLab-runner op het MacOS-apparaat. Helaas kun je alleen iOS-apps maken op MacOS. Maar alles kan veranderen, en als je vooruitgang op dit gebied verwacht, houd dan projecten als deze in de gaten xcbuild и tekenen onze interne taak gitlab-ce#57576.

Het opzetten van de runner is heel eenvoudig. Volg de huidige instructies voor het instellen van GitLab Runner op macOS.

Opmerking. De runner moet een uitvoerbaar programma gebruiken shell. Dit is nodig om iOS op macOS te bouwen om rechtstreeks als gebruiker te werken in plaats van via containers. Als u gebruikt shell, het bouwen en testen worden uitgevoerd als runner-gebruiker, rechtstreeks op de build-host. Het is niet zo veilig als containers, dus je kunt beter bladeren veiligheidsdocumentatiezodat je niets mist.

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 deze host worden geconfigureerd met toegang tot de sleutels die Xcode moet bouwen. De eenvoudigste manier om dit te testen is door in te loggen als de gebruiker die de build gaat uitvoeren en deze handmatig te proberen te bouwen. Als het systeem om sleutelhangertoegang vraagt, selecteert u Altijd toestaan ​​dat CI werkt. Het kan de moeite waard zijn om naar binnen te gaan en de eerste paar pijpleidingen te bekijken om er zeker van te zijn dat ze niet meer om de sleutelhanger vragen. Het probleem is dat Apple het ons niet gemakkelijk maakt om de Auto-modus te gebruiken, maar als je het eenmaal op gang hebt, komt alles goed.

fastlane begin

Als u fastlane in een project wilt gebruiken, voert u uit fastlane init. Gewoon volgen instructies voor het installeren en uitvoeren van fastlane, vooral in het gedeelte over Gembestand, omdat we een snelle en voorspelbare lancering nodig hebben via een geautomatiseerde CI-pijplijn.

Voer deze opdrachten uit in uw projectmap:

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

fastlane zal om een ​​basisconfiguratie vragen en vervolgens een fastlane-map in het project maken met drie bestanden:

1. fastlane/Appfile

Er is hier niets ingewikkelds. Zorg ervoor dat uw Apple ID en App ID correct zijn.

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

2. fastlane/Fastfile

Fastfile definieert de bouwstappen. We gebruiken veel ingebouwde functies van fastlane, dus ook hier is alles duidelijk. We creëren één lijn die certificaten ontvangt, de assemblage uitvoert en deze uploadt naar TestFlight. Indien nodig kunt u dit proces in verschillende taken verdelen. Al deze handelingen (get_certificates, get_provisioning_profile, gym и upload_to_testflight) zijn al opgenomen in fastlane.

acties get_certificates и get_provisioning_profile gerelateerd aan de ondertekenaanpak zeker en zucht. Als u gebruikt match of wat dan ook, breng wijzigingen aan.

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 een optioneel bestand, maar ik heb het handmatig gemaakt om de standaarduitvoermap te wijzigen en de uitvoer in de huidige map te plaatsen. Dit vereenvoudigt CI. Als u geïnteresseerd bent, lees dan verder gym en de parameters ervan documentatie.

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

Onze .gitlab-ci.yml

We hebben dus een CI-runner voor het project en we zijn klaar om de pijplijn te testen. Laten we eens kijken wat we binnen hebben .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

Alles is prima! We hebben het formaat indien nodig ingesteld op UTF-8 voor fastlane, gebruik strategie clone met het uitvoeren van programma shell, zodat wij voor iedere montage een schone werkplek hebben, en gewoon even bellen flappybuild fastlane, zoals hierboven te zien. Als gevolg hiervan krijgen we de assemblage, handtekening en implementatie van de nieuwste assemblage in TestFlight.

We krijgen ook het artefact en slaan het op met de montage. Houd er rekening mee dat het formaat .ipa is een ondertekend ARM-uitvoerbaar bestand dat niet in de simulator draait. Als u uitvoer voor de simulator wilt, voegt u gewoon het builddoel toe dat deze produceert, en neemt u dit vervolgens op in het artefactpad.

Andere omgevingsvariabelen

Er zijn hier een paar omgevingsvariabelen die ervoor zorgen dat alles werkt.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Authenticatie voor fastlane is vereist om te authenticeren in de App Store en te uploaden naar TestFlight. Maak hiervoor een wachtwoord aan voor de applicatie die in CI zal worden gebruikt. Details hier.

Als u tweefactorauthenticatie heeft, maakt u een variabele aan FASTLANE_SESSION (instructies daar).

FASTLANE_USER и FASTLANE_PASSWORD

Dat zeker en zucht Op verzoek het initialisatieprofiel en de certificaten genoemd, moet u de variabelen instellen FASTLANE_USER и FASTLANE_PASSWORD. Details hier. Dit is niet nodig als u een andere ondertekenmethode gebruikt.

Concluderend

Je kunt zien hoe het allemaal werkt in mijn eenvoudige voorbeeld.

Ik hoop dat dit nuttig was en je inspireerde om met iOS-builds in een GitLab-project te werken. Hier is er nog een CI-tips voor fastlane, voor het geval dat. Misschien wil je gebruiken CI_BUILD_ID (voor incrementele builds) naar versie automatisch verhogen.

Een andere coole functie van fastlane is automatische schermafbeeldingen voor de App Store, die heel eenvoudig in te stellen zijn.

Vertel ons in de reacties over uw ervaringen en deel uw ideeën voor het verbeteren van de ontwikkeling van GitLab voor iOS-apps.

Bron: www.habr.com

Voeg een reactie