Automatisation · Reliez le dépôt de l’équipe
Acheminez les tâches vers ce Mac grâce à des tags explicites
Le nœud est un Mac physique dédié, mais le nombre de tâches exécutables en parallèle dépend toujours de la mémoire, du stockage et de leur niveau d’isolation. Validez d’abord le processus complet avec un seul build, puis augmentez le nombre de tâches simultanées.
GitHub Actions self-hosted runner
Dans les paramètres Actions du dépôt ou de l’organisation, ajoutez un self-hosted runner et sélectionnez macOS et ARM64. Suivez les commandes de téléchargement, de vérification et d’enregistrement affichées sur la page ; n’utilisez pas d’ancien paquet d’installation provenant d’une source inconnue.
Lors de l’enregistrement, utilisez un compte système dédié et ajoutez des tags correspondant à l’usage, comme vmfly,ios-build . Orientez le workflow vers le tag correspondant avec runs-on afin que les tâches ne s’exécutent pas dans un environnement partagé.
runs-on: [self-hosted, macOS, ARM64, vmfly, ios-build]
GitLab Runner
Utilisez une version de Runner compatible avec votre environnement GitLab et obtenez un jeton d’authentification en suivant la procédure de création d’un runner au niveau du projet ou du groupe. Sur macOS, choisissez le shell executor et attribuez au nœud le tag macos-arm64 ainsi que des tags correspondant à son usage.
Indiquez les mêmes tags dans les tâches du pipeline. Vérifiez que le répertoire de travail du Runner appartient au compte qui l’exécute. Ce même compte doit pouvoir accéder aux certificats, au cache des dépendances et aux fichiers d’archive : vous éviterez ainsi qu’une tâche automatisée échoue alors qu’elle réussit dans le terminal interactif.
ios_archive:
tags:
- macos-arm64
- ios-build
script:
- bundle exec fastlane gym
Intégrez le redémarrage aux vérifications
Depuis le répertoire d’enregistrement du runner GitHub, exécutez son script de service avec ./svc.sh install et ./svc.sh start. Pour GitLab Runner, selon le mode d’installation, exécutez gitlab-runner install et gitlab-runner start. N’installez pas deux mécanismes de démarrage automatique pour un même runner.
Sur macOS, un service lancé comme LaunchAgent utilisateur dépend généralement de la session ouverte par cet utilisateur. Vérifiez la configuration réellement générée et l’identité du processus ; ne confondez pas le démarrage du Mac avec l’ouverture de session du compte de build. En l’absence de tâche de publication, vérifiez après un redémarrage que le runner se reconnecte, que les chemins sont corrects, que le trousseau est accessible et que les artefacts peuvent être exportés.
Conservez les éléments de signature dans un espace contrôlé
Transmettez les certificats de build et les profils de provisioning par un moyen sécurisé approuvé par l’équipe. Le certificat doit inclure la clé privée correspondante ; un certificat public importé seul ne permet pas de signer. Stockez les mots de passe de déverrouillage et les jetons d’automatisation dans les variables protégées de la CI, et limitez leur utilisation à certaines branches et tâches.
Si votre équipe utilise fastlane match, conservez ses règles de stockage et d’accès existantes. Lorsque la CI lit les éléments de signature déjà en place, privilégiez le mode lecture seule. Vérifiez la cohérence du bundle identifier, de l’équipe cible, de la méthode d’export et de la période de validité du profil de provisioning avant d’examiner la commande d’archivage.
Les tâches sans intervention doivent pouvoir accéder au trousseau prévu. N’inscrivez jamais de mot de passe permanent en clair dans un script et n’affichez pas toutes les variables d’environnement dans les logs. Avant de partager des logs, retirez les clés privées, jetons, mots de passe et contenus des éléments de signature.