Guide

Des runners macOS self-hosted pour GitHub Actions

Un runner macOS self-hosted est un Mac que vous contrôlez. Il exécute vos jobs GitHub Actions à la place des machines cloud partagées de GitHub. Vous enregistrez le runner une fois et vous pointez votre workflow dessus. Vos builds tournent alors sur une machine qui reste chaude entre deux jobs.

Pourquoi les équipes quittent les runners macOS hébergés

GitHub facture les runners macOS environ $0.062 à $0.102 la minute. C’est à peu près dix fois le tarif Linux. Ce prix convient pour des builds occasionnels. Il coûte cher à une équipe qui livre tous les jours. Trois choses changent quand la machine est à vous :

  • Le coût ne suit plus l’usage. Une machine à prix mensuel fixe coûte la même chose pour 1 000 ou 20 000 minutes.
  • Les caches survivent. Les caches DerivedData, CocoaPods, SwiftPM et npm restent sur le SSD local. Les builds incrémentaux sautent donc l’essentiel du travail qu’un runner neuf refait.
  • L’environnement est stable. Vous fixez Xcode une fois. Vous ne subissez plus les mises à jour d’images hébergées au rythme de quelqu’un d’autre.

Les compromis, sans détour

Le self-hosting a aussi ses inconvénients. Les jobs passent l’un après l’autre sur une machine. Une grosse matrice parallèle demande donc plus de machines. Si vous compilez des pull requests non fiables, la sécurité du runner est votre affaire. C’est pourquoi GitHub recommande les runners self-hosted pour les dépôts privés. Et quelqu’un doit gérer les mises à jour de macOS, les installations de Xcode et la bonne marche du service du runner.

MacRun existe pour vous retirer cette dernière partie. Vous avez la machine dédiée et le prix fixe. Nous gérons la mise en service, la supervision et les effacements.

À quoi ressemble le changement de workflow

L’enregistrement du runner se fait en une seule commande. Ensuite, le changement dans le pipeline tient en deux lignes :

 jobs:
   build:
-    runs-on: macos-latest
+    runs-on: [self-hosted, macOS, macrun-unit-01]

Tout le reste ne change pas, y compris vos étapes, vos secrets et vos artefacts. La procédure complète est dans le guide d’installation.

Le monter vous-même ou le louer

Si vous avez déjà du matériel Apple inutilisé et quelqu’un pour l’entretenir, un runner sur votre propre Mac est une option raisonnable. Si vous préférez ne pas acheter de matériel, ne pas l’installer et ne pas surveiller le service du runner, louez une machine dédiée. Vous obtenez la même économie sans le travail d’exploitation. Faites vos propres calculs avec le calculateur de coûts.

Questions fréquentes

Qu’est-ce qu’un runner macOS self-hosted ?

+

C’est un Mac que vous contrôlez et qui exécute vos jobs GitHub Actions à la place des machines hébergées et partagées de GitHub. Vous installez l’agent du runner Actions, vous l’enregistrez sur votre dépôt ou votre organisation, et vous le ciblez dans votre workflow avec un label runs-on.

Un runner macOS self-hosted coûte-t-il moins cher que les runners hébergés par GitHub ?

+

Cela dépend du volume. macOS hébergé par GitHub coûte environ $0.062 à $0.102 la minute. Un runner dédié à prix fixe de $139 par mois est rentabilisé vers 2,242 minutes par mois au tarif bas. Au-delà, chaque minute est gratuite.

Les runners self-hosted sont-ils sûrs pour les dépôts publics ?

+

GitHub recommande les runners self-hosted pour les dépôts privés. Sinon, la pull request d’un fork peut exécuter du code non fiable sur votre machine. Si vous devez les utiliser sur des dépôts publics, exigez une approbation pour les workflows des forks. Isolez aussi le runner de tout ce qui compte pour vous.

Dois-je maintenir le service du runner en marche ?

+

Oui, le runner doit être en ligne pour récupérer les jobs. Chez MacRun, un démon de supervision surveille le service. Il le redémarre en 30 secondes environ s’il plante, donc vous n’avez pas à le surveiller.

Guides associés