Comment GitLab avec Fastlane collecte, signe et publie des applications iOS sur l'App Store.
Nous avons récemment eu
Ici, nous prendrons
Quelques mots sur la configuration de l'Apple Store
Nous aurons besoin d'une application App Store, de certificats de distribution et d'un profil d'approvisionnement pour tout relier.
La chose la plus difficile ici est de configurer les droits de signature dans l'App Store. J'espère que vous pourrez découvrir cela par vous-même. Si vous êtes nouveau, je vous indiquerai la bonne direction, mais nous ne parlerons pas ici des subtilités de la gestion des certificats Apple, et ils changent constamment. Cet article vous aidera à démarrer.
Mes applications
Vous avez besoin d'une application dans App Store Connect pour disposer d'un identifiant pour la configuration. .xcodebuild
. Le profil et l'ID d'application combinent les versions de code, la tarification et la disponibilité, ainsi que la configuration TestFlight pour distribuer les applications de test aux utilisateurs. Ne faites pas de tests publics, des tests privés suffiront si vous avez un petit groupe, une configuration facile et n'avez pas besoin d'autorisations supplémentaires d'Apple.
Profil d'initialisation
En plus de la configuration de l'application, vous avez besoin des clés de distribution et de développement iOS créées dans la section Certificats, identifiants et profils de la console Apple Developer. Tous ces certificats peuvent être combinés dans un profil de provisionnement.
Les utilisateurs qui seront authentifiés doivent pouvoir créer des certificats, sinon les étapes
d'autres options
Outre cette méthode simple, il existe d'autres moyens de configurer des certificats et des profils. Donc, si vous travaillez différemment, vous devrez peut-être vous adapter. Le plus important est que vous ayez besoin d'une configuration .xcodebuild
, qui pointera vers les fichiers nécessaires, et le trousseau doit être disponible sur l'ordinateur de build pour l'utilisateur sous le nom duquel le programme d'exécution s'exécute. Pour la signature numérique, nous utilisons Fastlane, et s'il y a des problèmes ou si vous voulez en savoir plus, consultez leurs coordonnées
Dans cet exemple, j'utilise l'approche
Préparation de GitLab et fastlane
Préparation de CI Runner
Après avoir collecté toutes ces données, nous passons à la configuration du runner GitLab sur l'appareil MacOS. Malheureusement, vous ne pouvez créer des applications iOS que sur MacOS. Mais tout peut changer, et si vous attendez des progrès dans ce domaine, gardez un œil sur des projets comme
La configuration du coureur est très simple. Suivre le courant
Note. Le coureur doit utiliser un programme exécutable shell
. Ceci est nécessaire pour créer iOS sur macOS afin de travailler directement en tant qu'utilisateur plutôt que via des conteneurs. Si vous utilisez shell
, la construction et les tests sont effectués en tant qu'utilisateur exécuteur, directement sur l'hôte de construction. Ce n'est pas aussi sécurisé que les conteneurs, alors mieux vaut naviguer
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 Trousseau doit être configuré sur cet hôte avec accès aux clés que Xcode doit créer. Le moyen le plus simple de tester cela est de vous connecter en tant qu'utilisateur qui exécutera la build et d'essayer de la construire manuellement. Si le système demande l'accès au trousseau, sélectionnez Toujours autoriser le fonctionnement de CI. Cela vaut peut-être la peine d'aller observer les deux premiers pipelines pour s'assurer qu'ils ne demandent plus le trousseau. Le problème est qu'Apple ne nous facilite pas l'utilisation du mode Auto, mais une fois que vous l'aurez lancé, tout ira bien.
Fastlane init
Pour utiliser Fastlane dans un projet, exécutez fastlane init
. Il suffit de suivre
Dans le répertoire de votre projet, exécutez ces commandes :
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane demandera une configuration de base puis créera un dossier fastlane dans le projet avec trois fichiers :
1. fastlane/Appfile
Il n'y a rien de compliqué ici. Assurez-vous simplement que votre identifiant Apple et votre identifiant d'application sont corrects.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address
2. fastlane/Fastfile
Fastfile
définit les étapes de construction. Nous utilisons de nombreuses fonctionnalités intégrées de Fastlane, donc tout est clair ici aussi. Nous créons une ligne qui reçoit les certificats, effectue l'assemblage et la télécharge sur TestFlight. Vous pouvez diviser ce processus en différentes tâches si nécessaire. Toutes ces opérations (get_certificates
, get_provisioning_profile
, gym
и upload_to_testflight
) sont déjà inclus dans Fastlane.
Activité get_certificates
и get_provisioning_profile
liés à la démarche de signature
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
Il s'agit d'un fichier facultatif, mais je l'ai créé manuellement pour modifier le répertoire de sortie par défaut et placer la sortie dans le dossier actuel. Cela simplifie CI. Si vous êtes intéressé, lisez à propos gym
et ses paramètres dans
https://docs.fastlane.tools/actions/gym/
Notre .gitlab-ci.yml
Nous avons donc un CI Runner pour le projet et nous sommes prêts à tester le pipeline. Voyons ce que nous avons dedans .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
Tout va bien! clone
avec programme en cours d'exécution shell
, afin que nous ayons un espace de travail propre pour chaque assemblage, et appelons simplement flappybuild
voie rapide, comme vu ci-dessus. En conséquence, nous obtenons l'assemblage, la signature et le déploiement du dernier assemblage dans TestFlight.
Nous récupérons également l'artefact et le sauvegardons avec l'assemblage. Veuillez noter que le format .ipa
est un exécutable ARM signé qui ne s'exécute pas dans le simulateur. Si vous souhaitez une sortie pour le simulateur, ajoutez simplement la cible de construction qui la produit, puis incluez-la dans le chemin de l'artefact.
Autres variables d'environnement
Il y a ici quelques variables d'environnement qui font que tout fonctionne.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
и FASTLANE_SESSION
L'authentification pour Fastlane est requise pour s'authentifier dans l'App Store et télécharger sur TestFlight. Pour ce faire, créez un mot de passe pour l'application qui sera utilisée dans CI. Détails
Si vous disposez d'une authentification à deux facteurs, créez une variable FASTLANE_SESSION
(instructions là-bas).
FASTLANE_USER
и FASTLANE_PASSWORD
Que FASTLANE_USER
и FASTLANE_PASSWORD
. Détails
En conclusion
Vous pouvez voir comment tout cela fonctionne
J'espère que cela vous a été utile et vous a inspiré à travailler avec des versions iOS dans un projet GitLab. En voici un autre CI_BUILD_ID
(pour les builds incrémentielles) à
Une autre fonctionnalité intéressante de Fastlane est
Parlez-nous dans les commentaires de votre expérience et partagez vos idées pour améliorer le développement d'applications GitLab pour iOS.
Source: habr.com