Publication d'applications iOS sur l'App Store avec GitLab et fastlane

Publication d'applications iOS sur l'App Store avec GitLab et fastlane

Comment GitLab avec Fastlane collecte, signe et publie des applications iOS sur l'App Store.

Nous avons récemment eu article expliquant comment créer et exécuter rapidement une application Android avec GitLab et voie rapide. Ici, nous verrons comment créer et exécuter une application iOS et la publier sur TestFlight. Regarde à quel point c'est cool J'apporte une modification sur un iPad Pro avec GitLab Web IDE, je prends l'assemblage et reçois une mise à jour de la version de test de l'application sur le même iPad Pro où je l'ai développée.

Ici, nous prendrons application iOS simple sur Swift, avec qui j'ai enregistré la vidéo.

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 cert et soupir vous verrez une erreur.

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 documentation sur les signatures numériques.

Dans cet exemple, j'utilise l'approche cert et soupir, mais pour un usage réel, c'est probablement mieux adapté rencontre.

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 xcbuild и signe, et notre tâche interne gitlab-ce#57576.

La configuration du coureur est très simple. Suivre le courant instructions pour configurer GitLab Runner sur macOS.

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 documentation de sécuritépour que vous ne manquiez de rien.

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 instructions pour l'installation et l'exécution de Fastlane, en particulier dans la section sur Fichier gemme, car nous avons besoin d'un lancement rapide et prévisible via un pipeline CI automatisé.

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 cert et soupir. Si vous utilisez rencontre ou autre, apportez des modifications.

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 documentation.

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! Nous définissons le format sur UTF-8 pour Fastlane selon les besoins, utiliser la stratégie 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 ici.

Si vous disposez d'une authentification à deux facteurs, créez une variable FASTLANE_SESSION (instructions là-bas).

FASTLANE_USER и FASTLANE_PASSWORD

Que cert et soupir appelé profil d'initialisation et certificats sur demande, vous devez définir les variables FASTLANE_USER и FASTLANE_PASSWORD. Détails ici. Cela n'est pas nécessaire si vous utilisez une méthode de signature différente.

En conclusion

Vous pouvez voir comment tout cela fonctionne dans mon exemple simple.

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 Conseils CI pour Fastlane, juste au cas où. Vous voudrez peut-être utiliser CI_BUILD_ID (pour les builds incrémentielles) à incrémenter automatiquement la version.

Une autre fonctionnalité intéressante de Fastlane est captures d'écran automatiques pour l'App Store, très simples à mettre en place.

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

Ajouter un commentaire