Le symptôme est simple : le runner se désenregistre automatiquement, mais le Mac n’est pas forcément redevenu propre. La solution la plus sûre est donc de choisir un runner temporaire pour le code public ou peu fiable, un runner fixe strictement contrôlé pour la signature et les périphériques, puis de réunir les deux dans une architecture à deux pools.

Cet article s’adresse aux équipes de plateforme qui veulent fournir un environnement propre aux demandes de fusion et aux tests ordinaires. Il concerne aussi les équipes mobiles qui gèrent des certificats, des appareils physiques ou un réseau fixe, ainsi que les responsables qui doivent estimer le nombre de Mac Mini M6 nécessaires.

Commencez par classer vos tâches, pas par choisir votre mode de runner

Le choix ne doit pas partir de la machine. Même si le Mac Mini M6 devient votre nœud de construction macOS, la première question est celle de la confiance accordée au code exécuté et aux secrets disponibles.

GitHub recommande les runners temporaires dans les architectures où les nœuds sont créés et détruits automatiquement. La documentation précise qu’un runner éphémère est destiné à recevoir un seul travail avant de se désenregistrer, et recommande de conserver les journaux et les données d’exécution à l’extérieur du runner afin de ne pas les perdre avec le nœud dans la documentation officielle des runners auto-hébergés.

Cette recommandation répond à un risque précis : un script de construction peut laisser des fichiers, modifier des outils, consulter des variables d’environnement ou tenter d’utiliser les identifiants accessibles au processus. Un runner fixe rend ces traces persistantes. Un runner temporaire limite leur durée, mais uniquement si le Mac physique est réellement réinitialisé ou remplacé.

Pour décider, séparez au moins ces familles :

  • Validation ordinaire : compilation, tests unitaires, analyse statique et génération d’artefacts non sensibles.
  • Code externe : demandes de fusion, contributions publiques ou dépendances dont la provenance n’est pas suffisamment contrôlée.
  • Publication : signature, téléversement vers une boutique, distribution interne ou accès à des certificats.
  • Dépendances physiques : appareils iPhone, cartes audio, interfaces vidéo, clés matérielles ou réseau privé.
  • Travaux fortement répétitifs : compilations où le cache et une chaîne d’outils stable ont une valeur importante.

Une contribution provenant d’une demande de fusion ne devient pas fiable parce que le dépôt principal est privé. Le script peut venir d’une branche externe, d’une dépendance modifiée ou d’un fichier de configuration inclus dans la demande. Les règles de sécurité de GitHub Actions rappellent notamment que le code exécuté dans un flux peut avoir accès au contexte et aux secrets selon la configuration du travail.

Pour une petite équipe, mesurez le coût du cache contre celui de la dérive

Pour un projet personnel ou une équipe travaillant uniquement sur des dépôts de confiance, le runner fixe est souvent le plus facile à exploiter. Vous installez Xcode, les outils de développement, les dépendances audio ou vidéo, les bibliothèques de design et les composants de test une seule fois. Les compilations suivantes peuvent réutiliser les caches locaux et éviter une préparation complète du poste.

Cette simplicité a toutefois un prix souvent sous-estimé :

  • un travail peut laisser un répertoire généré que le suivant réutilise par erreur ;
  • une mise à jour manuelle de Xcode ou d’un gestionnaire de paquets crée une dérive entre les nœuds ;
  • un secret temporaire peut rester dans un fichier, un journal ou le trousseau ;
  • un test qui ne libère pas correctement un appareil physique peut bloquer le travail suivant ;
  • un échec du système d’exploitation peut rendre indisponible tout le flux, même si le logiciel de construction est intact.

Dans ce contexte, le runner fixe ne signifie pas « aucun nettoyage ». Après chaque travail, supprimez le répertoire de travail, les artefacts temporaires et les fichiers contenant des variables sensibles. Contrôlez aussi les caches : conserver un cache de compilation est acceptable si son contenu ne peut pas influencer la sécurité du travail suivant.

Pour des dépôts privés et une concurrence faible, vous pouvez commencer avec un pool fixe limité. Ajoutez ensuite un runner temporaire pour les branches expérimentales ou les travaux dont les dépendances changent fréquemment. Cette séparation donne un meilleur résultat qu’un grand pool fixe auquel tous les flux ont accès.

Pour une équipe mobile active, séparez validation et publication

Une équipe iOS ou macOS qui construit souvent peut être tentée de placer toutes les tâches sur les mêmes Mac. Le cache semble justifier ce choix, surtout lorsque la chaîne comprend de gros projets, des tests d’interface, des ressources audio ou vidéo et plusieurs variantes de design.

Le problème apparaît lorsque les tâches n’ont pas le même niveau de sensibilité. Une compilation de demande de fusion ne doit pas partager les mêmes certificats, le même trousseau ou le même compte de publication qu’un travail de mise en production.

Une organisation plus robuste utilise deux routes :

  1. Pool de validation : compilation, tests et génération d’artefacts sans secrets de publication. Ce pool peut être temporaire ou réinitialisable.
  2. Pool de publication : nœuds fixes en nombre limité, accès restreint aux dépôts autorisés, branches protégées et flux explicitement approuvés.

Les étiquettes de runner permettent d’orienter un travail vers un environnement correspondant à ses besoins. La documentation GitHub sur l’utilisation des runners auto-hébergés dans un flux montre comment exprimer ces contraintes dans la configuration du travail.

Le pool de publication doit également avoir une procédure de relève. Vous devez savoir quoi faire si le Mac est hors ligne, si le trousseau est verrouillé, si un certificat arrive à expiration ou si l’appareil de test n’est plus reconnu. Un runner fixe est acceptable pour la signature seulement lorsque son périmètre est plus petit que celui d’un runner généraliste.

Pour les tâches audio, vidéo et design, la présence de périphériques ou de logiciels sous licence peut rendre un runner temporaire moins pratique. Cela ne justifie pas de donner au même nœud les accès de publication et les droits nécessaires à tous les projets. Conservez l’environnement fixe, mais réduisez ses dépôts autorisés et documentez son état de référence.

Point de vigilance : « temporaire » décrit le cycle de vie du runner GitHub, pas l’effacement automatique du Mac. Après le désenregistrement, les caches, les fichiers, le trousseau et les outils installés peuvent toujours exister sur le disque.

Pour une organisation ouverte, traitez chaque demande de fusion comme une frontière

Dans un projet open source, la difficulté n’est pas seulement la disponibilité des machines. Le code reçu peut exécuter des commandes avant même que vous ne considériez la contribution comme acceptable. Les secrets ne doivent donc pas être exposés à un travail dont la provenance n’est pas validée.

Un runner temporaire est alors préférable pour les travaux de vérification. Il doit être enregistré juste avant l’exécution, recevoir le travail prévu, exporter ses journaux vers un emplacement contrôlé, puis être retiré. Après cela, l’orchestrateur doit vérifier l’état du Mac ou le remplacer par une image connue.

Cette dernière étape est essentielle. Le retrait de l’enregistrement côté GitHub ne supprime pas automatiquement :

  • les fichiers de construction présents dans le répertoire de travail ;
  • les caches téléchargés pendant le travail ;
  • les outils installés avec des droits administrateur ;
  • les clés ou certificats ajoutés au trousseau ;
  • les extensions, profils ou services modifiés par un script.

Le guide GitHub sur les runners auto-hébergés doit être lu comme une description du runner logiciel. La remise à zéro du Mac relève de votre exploitation matérielle et système. Vous devez donc prévoir une réinitialisation vérifiable, un remplacement par une image de référence ou un nœud qui ne conserve aucun secret utile.

Évitez aussi de transmettre les journaux uniquement au runner. Un runner à usage unique peut disparaître après le travail ; les journaux, rapports de test et informations de diagnostic doivent être envoyés vers une destination dont les droits sont séparés du poste de construction.

Pour une plateforme multi-projets, automatisez le cycle complet du nœud

Lorsque plusieurs équipes partagent une plateforme, le problème n’est plus seulement « temporaire ou fixe ». Il faut orchestrer l’identité du runner, le routage, l’image système, les journaux, la récupération et la suppression des nœuds en erreur.

Le cycle opérationnel peut suivre cette séquence :

  1. Préparer une image de référence : version de macOS, outils de compilation, réglages réseau et logiciels autorisés doivent être documentés. Ne déduisez pas les performances réelles du Mac Mini M6 avant les mesures sur les premières machines livrées ; Apple a annoncé ce modèle, mais ses temps de remise à zéro et sa capacité de concurrence restent à valider en conditions réelles dans l’annonce officielle du Mac mini.
  2. Créer une identité à durée limitée : le processus d’enregistrement doit éviter les jetons exposés dans les journaux ou les scripts de diagnostic. Ne publiez jamais de jeton réel, de nom de dépôt ou d’identifiant d’organisation dans une procédure.
  3. Appliquer le routage : associez les travaux de validation, de publication et de test physique à des étiquettes et des groupes distincts.
  4. Lancer le travail : limitez les permissions du flux au strict nécessaire. Un travail qui n’a pas besoin de signature ne doit pas atteindre le trousseau de publication.
  5. Exporter les résultats : envoyez journaux et artefacts vers un stockage prévu pour survivre à la disparition du runner.
  6. Nettoyer et vérifier : supprimez le répertoire de travail, les secrets temporaires et les profils. Vérifiez ensuite l’état du Mac, pas seulement celui de l’enregistrement GitHub.
  7. Désenregistrer ou isoler le nœud : en cas d’échec du nettoyage, retirez la machine du pool et déclenchez une réinstallation ou une inspection manuelle.
  8. Mesurer la file : conservez la durée d’attente, la durée d’exécution, les reprises, les annulations et le temps de récupération.

L’API REST de GitHub permet de consulter et de gérer les runners auto-hébergés, notamment pour suivre les machines disponibles et supprimer celles qui ne doivent plus recevoir de travaux dans la référence officielle de l’API. Elle ne remplace pas l’automatisation du Mac : l’API peut retirer une identité logique alors que le système conserve encore ses fichiers.

Ne transposez pas directement une méthode d’extension conçue pour des conteneurs Linux. Un Mac physique doit démarrer, être joignable, accepter le travail, gérer les mises à jour et revenir à un état contrôlé. La création d’un nouvel enregistrement GitHub ne prouve pas que l’image système est saine.

Construisez la décision avec deux pools plutôt qu’avec un choix absolu

La plupart des équipes de production ont intérêt à associer un pool temporaire et un petit pool fixe. Le premier reçoit les travaux ordinaires et les demandes de fusion ; le second conserve les dépendances physiques, la signature ou les environnements qui doivent rester stables.

Dimension de décision Runner temporaire ou réinitialisable Runner fixe contrôlé
Code externe ou dépôt public Choix prioritaire, avec nettoyage et remise à zéro vérifiables À éviter, sauf permissions très limitées
Cache de compilation À reconstruire ou à stocker séparément Avantageux, mais à contrôler après chaque travail
Signature iOS et publication Possible uniquement avec injection et destruction auditées Adapté si le dépôt, la branche et les secrets sont strictement limités
Appareil physique, interface audio ou vidéo Possible si le matériel est réattribuable proprement Souvent plus simple à maintenir
Récupération après corruption Remplacement ou réinstallation automatisée Inspection et restauration obligatoires
Montée en capacité Bonne base pour créer plusieurs nœuds, sans supposer que macOS se réinitialise seul Ajout progressif de machines maîtrisées
Risque de pollution entre travaux Réduit après une vraie remise à zéro Présent tant que le nettoyage n’est pas prouvé
Usage recommandé Tests, compilation ordinaire, demandes de fusion Publication, signature, outils ou périphériques fixes

Pour estimer le nombre de Mac Mini M6, ne partez pas d’un taux d’utilisation théorique. Observez d’abord la file par catégorie de travail. Une file qui s’allonge uniquement pendant la publication ne demande pas nécessairement davantage de machines de validation. Inversement, un pool de compilation rapide peut rester insuffisant si les tests d’interface occupent longtemps les mêmes nœuds.

Le Mac Mini M6 n’a pas encore fourni de données publiques de terrain permettant de conclure sur son temps de réinitialisation, son rendement avec vos caches ou sa capacité réelle à exécuter plusieurs tâches. Les caractéristiques annoncées par Apple doivent donc servir à vérifier la compatibilité matérielle et logicielle, non à promettre une capacité de CI précise dans les spécifications officielles du Mac mini. Pour les applications natives, utilisez également les recommandations Apple relatives à la migration vers Apple Silicon dans la documentation développeur.

Validez l’architecture avant de louer ou d’acheter plusieurs nœuds

Avant de déployer un pool complet, choisissez un seul flux de validation sans secret de publication et faites-le passer par le cycle temporaire. Vérifiez que le nœud est enregistré, qu’il reçoit le travail, que les journaux sont conservés, qu’il est retiré et que le Mac ne contient plus de fichiers ou d’identifiants du travail précédent.

Ensuite, exécutez un flux de signature séparé sur un nœud fixe. Contrôlez l’accès au dépôt, à la branche, au trousseau et au compte de distribution. Le test doit aussi couvrir l’expiration d’un certificat, la perte du réseau et l’arrêt brutal du Mac.

Lorsque vous comparez un achat matériel avec une capacité temporaire, incluez les opérations souvent oubliées : préparation de l’image, remplacement d’un nœud, accès distant, stockage des journaux, supervision, licences, câblage, espace et temps d’intervention. La page française de kvmsync peut servir de point de départ pour examiner une capacité Mac distante avant d’immobiliser du matériel dans vos locaux ; la décision doit toutefois rester fondée sur vos exigences de sécurité et de continuité.

L’achat d’un Mac reste préférable si vous avez une charge stable, un besoin permanent de périphériques locaux ou une politique interdisant l’externalisation. À l’inverse, un nœud temporaire loué peut être pertinent pour un pic de publication, une migration de version, une campagne de tests ou une équipe qui ne veut pas maintenir une machine inactive entre deux projets. Les informations de disponibilité et de location de kvmsync doivent être confrontées à votre coût opérationnel complet, et non au seul prix d’une heure de calcul.

La solution actuelle, lorsqu’elle repose sur un runner fixe partagé, présente généralement trois défauts : les environnements dérivent, les secrets sont trop proches des tâches ordinaires et un seul Mac indisponible peut bloquer plusieurs équipes. Si elle repose sur une extension Linux ou un conteneur, elle ne reproduit pas automatiquement les contraintes d’un Mac physique, d’un trousseau ou d’un appareil iOS. Après avoir classé vos flux, louer auprès de kvmsync des Mac temporaires pour les validations ou les pics de capacité peut donc offrir une exploitation plus souple, à condition de conserver la même image, les mêmes limites de permissions et la même procédure de nettoyage que dans votre pool permanent.

Commencez par un flux de test non sensible. Si sa remise à zéro est fiable, étendez progressivement le pool temporaire ; si elle ne l’est pas, réduisez immédiatement les permissions du runner au lieu de le présenter comme isolé.

Questions fréquentes

Les réponses ci-dessous complètent la décision pour les équipes qui doivent choisir un modèle de runner sans confondre désenregistrement logiciel et nettoyage physique.

[FAQ présentée dans les métadonnées de la page.]

FAQ

Quelle différence faut-il retenir entre un runner GitHub Actions temporaire et un runner fixe ?

Un runner temporaire est destiné à un seul travail avant de se désenregistrer. Il réduit la persistance des fichiers et des identifiants, mais il ne nettoie pas automatiquement le Mac physique. Un runner fixe conserve son environnement et ses caches, ce qui facilite les builds répétitifs, mais exige un nettoyage vérifiable, une gestion stricte des accès et une procédure de restauration.

Le Mac Mini M6 peut-il servir de runner macOS à usage unique ?

Oui, si votre automatisation sait préparer le nœud, enregistrer le runner, exécuter le travail, exporter les journaux, supprimer l’enregistrement et remettre macOS dans un état vérifiable. Le désenregistrement du runner ne suffit pas à effacer les fichiers, les caches, le trousseau ou les extensions installées sur le Mac.

Les tâches de signature iOS doivent-elles utiliser un runner temporaire ?

Pas par défaut. La signature peut être temporaire si l’injection des certificats, l’usage du trousseau et leur destruction sont audités. Sinon, réservez un petit pool fixe, isolé par dépôt, branche et provenance du flux. Ne placez jamais les identifiants de publication dans le pool général destiné aux tests ou aux demandes de fusion.

Comment empêcher deux tâches de polluer le même runner macOS ?

Séparez les espaces de travail, supprimez les fichiers générés après chaque travail, contrôlez les caches et retirez les identifiants du trousseau. Pour du code externe ou difficile à qualifier, préférez un runner à usage unique et une remise à zéro vérifiable du Mac. Si cette remise à zéro n’est pas automatisée, réduisez les permissions plutôt que de qualifier le nœud de temporaire.

Quelles données utiliser pour dimensionner des runners Mac ?

Suivez la longueur de la file, le temps d’attente, la durée réelle des travaux, les échecs après nouvelle tentative, les annulations et le temps de récupération d’un nœud. Comparez ces données par type de tâche : tests ordinaires, compilation, signature et publication. Ajoutez un Mac seulement lorsque la file et les échecs montrent un besoin durable.

Nœud distant kvmsync M4

Accélérez vos builds avec kvmsync

Louez un Mac dédié auprès de kvmsync pour exécuter vos workflows iOS et macOS dans un environnement stable et performant.

Louer un Mac mini M4 Comparer les offres M4