Hoe GitLab met fastlane iOS-applicaties verzamelt, ondertekent en publiceert in de App Store.
Wij hebben onlangs gehad
Hier zullen we nemen
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
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
In dit voorbeeld gebruik ik de aanpak
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
Het opzetten van de runner is heel eenvoudig. Volg de huidige
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
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
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
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
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! 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
Als u tweefactorauthenticatie heeft, maakt u een variabele aan FASTLANE_SESSION
(instructies daar).
FASTLANE_USER
и FASTLANE_PASSWORD
Dat FASTLANE_USER
и FASTLANE_PASSWORD
. Details
Concluderend
Je kunt zien hoe het allemaal werkt
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_BUILD_ID
(voor incrementele builds) naar
Een andere coole functie van fastlane is
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