runnerhut
Réponses
Des réponses directes aux questions que les ingénieurs posent sur la CI.
Facturation et coût21
Suis-je facturé lorsqu'une tâche GitHub Actions échoue ?Oui. Vous êtes facturé pour les minutes consommées jusqu'au point d'échec, et non pour un résultat positif.Les GitHub Actions sont-ils gratuits pour l'open source ?Oui, sur les exécuteurs standard hébergés sur GitHub pour les référentiels publics, sans frais à la minute.Les GitHub Actions sont-ils gratuits pour les référentiels privés ?Non. Les référentiels privés bénéficient d'une allocation mensuelle de minutes incluses par forfait, puis facturent à la minute.Dois-je payer des frais de siège pour les coureurs gérés ?Sur runnerhut, non. La facturation s'effectue par minute de calcul, sans frais par développeur.Dois-je payer le temps d'attente ?Non. La facturation commence lors de l'exécution de votre première étape, et non lorsque la tâche est mise en file d'attente.Dois-je payer à la fois pour le coureur et le constructeur Docker distant ?Oui, mais le constructeur n'est facturé que pour les secondes pendant lesquelles il construit activement.Comment est facturée une mission annulée ?Vous payez les minutes écoulées avant l'annulation, arrondies à l'incrément de facturation.Y a-t-il un incrément de facturation minimum ?runnerhut facture par seconde avec un minimum d'une minute par tâche.Combien coûtent les coureurs GitHub Actions gérés ?runnerhut Les coureurs Linux x64 commencent à 0,004 $ par minute, soit environ la moitié du prix catalogue de GitHub pour la taille équivalente.Quelle est la taille de coureur la moins chère ?La plus petite taille qui maintient votre tâche sur son chemin critique : généralement 2 ou 4 vCPU pour les tests de charpie et unitaires.Arm64 est-il moins cher que x64 ?Oui. Les coureurs runnerhut arm64 ont un prix environ 20 % inférieur à la taille x64 équivalente.Est-il moins coûteux de courir avec moins de coureurs plus grands ?Seulement si votre charge de travail est réellement parallèle. Sinon, vous payez plus par minute pour les cœurs inactifs.Puis-je fixer une limite de dépenses ?Oui. runnerhut prend en charge des plafonds budgétaires stricts par organisation et par référentiel.Que se passe-t-il lorsque les crédits gratuits sont épuisés ?Les tâches cessent d'être planifiées jusqu'à ce que vous ajoutiez un mode de paiement ou augmentiez le plafond.Comment estimer ma facture GitHub Actions ?Multipliez les minutes mensuelles par système d'exploitation par le tarif par minute de ce système d'exploitation, puis ajoutez du stockage pour les artefacts et le cache.Comment puis-je prévoir les dépenses des coureurs ?Prenez 90 jours par flux de travail, appliquez la croissance de votre taux de fusion et ajoutez de la marge pour les modifications matricielles.Pourquoi ma facture GitHub Actions est-elle si élevée ?Généralement l'une des quatre choses suivantes : minutes macOS, explosion matricielle, pas d'annulation de concurrence ou coureurs surdimensionnés.Les référentiels publics paient-ils pour les exécuteurs gérés ?Sur les coureurs standard hébergés sur GitHub, non. Sur les fournisseurs gérés, notamment runnerhut, oui, mais des programmes open source sont disponibles.Combien coûte le stockage du cache Actions ?GitHub inclut 10 Go par référentiel sans frais et expulse au-delà de cela. Le cache runnerhut est illimité et inclus.Comment le stockage d’instantanés est-il facturé ?Par gigaoctet-mois pour l’instantané conservé, distinct des minutes de calcul.Puis-je exécuter plus de tâches simultanées que ce que mon plan GitHub permet ?Oui. La simultanéité des coureurs gérés est définie par votre fournisseur de coureurs, et non par les limites des coureurs hébergés de votre plan GitHub.
Performances10
Pourquoi les GitHub Actions sont-elles lentes ?Le plus souvent : processeur virtuel partagé, caches froids, disque connecté au réseau et temps d'attente avant même le démarrage de la tâche.À quelle vitesse les exécuteurs démarrent-ils une fois qu'un travail est mis en file d'attente ?Les coureurs de runnerhut partent dans environ trois secondes depuis une piscine chaude.Dois-je modifier mon flux de travail ?Non. Changez l’étiquette de coulure et laissez tout le reste tel quel.Comment choisir une taille de coureur ?Commencez une taille au-dessus de votre coureur actuel, puis vérifiez l'utilisation du processeur et arrêtez-vous lorsque la courbe s'aplatit.Pourquoi mes travaux font-ils la queue les uns derrière les autres ?Vous avez atteint une limite de simultanéité : celle de votre plan, celle de votre groupe d'exécution ou celle d'un groupe de simultanéité dans le flux de travail.Pourquoi mes tests Python s'exécutent-ils plus lentement en CI qu'en local ?pytest is serial by default, and your laptop has faster single-core performance and a warm filesystem cache.Pourquoi l'installation de npm est-elle lente dans CI ?node_modules écrit des dizaines de milliers de petits fichiers, et le disque CI connecté au réseau gère cela mal.Pourquoi le démon Gradle démarre-t-il à chaque exécution ?Chaque tâche CI est une nouvelle machine, il n'y a donc pas de démon à réutiliser - et sans le cache de configuration, Gradle réévalue l'ensemble de la version.Pourquoi mon travail affiche-t-il une attente d'E/S élevée ?La charge de travail est liée au disque : il s'agit généralement d'une installation de dépendances, d'une extraction de couche de conteneur ou d'une base de données dans un conteneur de service.Combien de tâches peuvent être exécutées simultanément ?Cela dépend de votre plan pour les exécuteurs hébergés sur GitHub et de la simultanéité configurée pour les exécuteurs gérés.
Mise en cache38
Pourquoi Cargo reconstruit tout ?Votre clé de cache change à chaque exécution, ou target/ n'est pas du tout mis en cache.Pourquoi la restauration du cache est-elle lente ?GitHub limite la bande passante du cache, de sorte qu'un cache de plusieurs gigaoctets peut prendre quelques minutes à restaurer.Comment écrire une bonne clé de cache ?Hachez exactement les fichiers qui déterminent le contenu mis en cache (généralement le fichier de verrouillage) et rien d'autre.Que sont les clés de restauration ?Les préfixes ordonnés ont été essayés lorsque la clé de cache exacte manque, de sorte qu'une correspondance partielle peut toujours être restaurée.Pourquoi mon cache manque-t-il à chaque exécution ?La clé inclut quelque chose qui change à chaque exécution – généralement github.sha ou un horodatage.Combien de temps durent les caches ?GitHub supprime les caches inutilisés pendant 7 jours, ou plus tôt si le référentiel dépasse 10 Go.Comment vider un cache ?Supprimez-le de la page de cache Actions du référentiel, ou via l'API REST ou gh CLI.Les caches sont-ils transmis à travers les branches ?Une branche peut lire des caches depuis elle-même et depuis sa branche de base, mais pas depuis des branches non liées.Puis-je partager un cache entre les workflows ?Sur les exécuteurs hébergés sur GitHub, uniquement dans la même portée de référentiel et de branche. Les caches runnerhut sont partagés entre les flux de travail de l'organisation.Quelle est la limite de taille du cache GitHub Actions ?10 Go par référentiel, après quoi les entrées les moins récemment utilisées sont expulsées.Comment mettre en cache node_modules ?Mettez en cache ~/.npm saisi sur package-lock.json, ou restaurez directement node_modules si votre installation est déterministe.Comment mettre en cache les dépendances pip ?Mettez en cache ~/.cache/pip saisi sur Requirements.txt, ou mettez en cache l'intégralité de l'environnement virtuel pour un gain plus important.Comment mettre en cache les modules Go ?Cache ~/go/pkg/mod et ~/.cache/go-build saisis sur go.sum.Comment mettre en cache les dépendances Cargo ?Cache ~/.cargo/registry, ~/.cargo/git et target/ saisis sur Cargo.lock.Comment mettre en cache les dépendances Maven ?Cache ~/.m2/repository saisi sur un hachage de chaque pom.xml.Comment mettre en cache les builds Gradle ?Mettez en cache ~/.gradle/caches et ~/.gradle/wrapper, et activez les caches de construction et de configuration.Comment puis-je mettre en cache les gemmes Bundler ?Fournisseur/bundle de cache saisi sur Gemfile.lock afin que les extensions natives soient compilées une fois.Comment mettre en cache les dépendances de Composer ?Cache ~/.composer/cache saisi sur composer.lock.Comment mettre en cache les CocoaPods ?Cache Pods/ et ~/Library/Caches/CocoaPods saisis sur Podfile.lock.Comment mettre en cache les dépendances de Swift Package Manager ?Cache .build et ~/Library/Caches/org.swift.swiftpm saisis sur Package.resolved.Comment puis-je mettre en cache Yarn Berry ?Cachez .yarn/cache et .yarn/install-state.gz saisis sur Yarn.lock.Comment mettre en cache les environnements UV ou Poetry ?Cachez ~/.cache/uv ou ~/.cache/pypoetry saisi sur le fichier de verrouillage, ainsi que sur le répertoire .venv.Comment mettre en cache les navigateurs Playwright ?Cache ~/.cache/ms-playwright saisi sur la version Playwright à partir de votre fichier de verrouillage.Comment mettre en cache les couches Docker ?Utilisez un générateur distant qui conserve le cache localement ou exportez vers un registre avec cache vers et cache depuis.La mise en cache fonctionne-t-elle dans une tâche de conteneur ?Oui, mais les chemins à l'intérieur du conteneur diffèrent des chemins sur l'hôte, les clés de cache doivent donc faire référence aux chemins du conteneur.Les caches fonctionnent-ils sur toutes les architectures ?Non. Les artefacts compilés pour x64 ne sont pas valides sur arm64, l'architecture doit donc faire partie de la clé.Les caches fonctionnent-ils sur les exécuteurs Windows ?Oui, mais les séparateurs de chemin et la sensibilité à la casse diffèrent, les clés et les chemins nécessitent donc une gestion spécifique à Windows.Comment conserver un cache de couche Docker entre les demandes d'extraction ?Utilisez un générateur distant persistant : son cache n'est pas limité à une branche.Puis-je mettre en cache une image créée plutôt que de la reconstruire ?Oui : transférez-le vers un registre étiqueté par hachage de contenu et extrayez-le lorsque les entrées sont inchangées.Puis-je garder une base de données au chaud entre deux tâches ?Pas avec les conteneurs de service, qui sont détruits au fur et à mesure du travail. Chargez plutôt un vidage de schéma pré-migré.Puis-je conserver Xcode DerivedData entre les exécutions ?Oui. Persist ~/Library/Developer/Xcode/DerivedData — c'est la plus grande victoire pour iOS CI.Les exécuteurs d'instantanés remplacent-ils les actions/le cache ?Ils le peuvent. Un instantané restaure l'état complet de la machine, de sorte que l'étape d'installation disparaît au lieu de s'accélérer.Qu’est-ce qui se retrouve dans un instantané ?L'ensemble du système de fichiers au moment de l'instantané : packages installés, extensions construites, répertoires de chaîne d'outils et cache de pages chaudes.Comment invalider un instantané ?Saisissez-le sur le hachage de votre fichier de verrouillage afin qu'un changement de dépendance déclenche automatiquement une reconstruction.Combien de temps durent les instantanés ?14 jours par défaut sur runnerhut, puis reconstruit à la prochaine utilisation.Puis-je prendre un instantané sur une branche de fonctionnalités ?Oui, et les instantanés de branche sont isolés les uns des autres.Que sont les exécuteurs d'instantanés ?Les exécuteurs qui démarrent à partir d'une image du système de fichiers capturée après l'installation de vos dépendances, l'installation est donc entièrement ignorée.Les instantanés fonctionnent-ils sur les exécuteurs macOS ?Oui, et ils y sont particulièrement précieux car CocoaPods et DerivedData sont tous deux lents à se reconstruire.
bras6412
Les GitHub Actions peuvent-ils exécuter arm64 ?Oui. GitHub propose des coureurs arm64 sur des forfaits payants, et des fournisseurs gérés, notamment runnerhut, les proposent sur tous les forfaits.Puis-je créer des images arm64 sur un runner x64 ?Oui, avec QEMU – mais c'est 5 à 40 fois plus lent que la construction native.Qu'est-ce qui change lors du passage de x64 à arm64 ?Les modules natifs, les roues Python et tout assemblage x86 nécessitent la prise en charge d'aarch64. La plupart des dépendances traditionnelles l'ont désormais.Puis-je exécuter des tâches arm64 et x64 dans le même flux de travail ?Oui. Utilisez une matrice avec une étiquette de coureur différente par architecture.Les coureurs arm64 prennent-ils en charge buildx ?Oui, et sur le matériel arm64 natif, buildx produit des images arm64 sans émulation.Puis-je exécuter des versions ARM 32 bits sur des exécuteurs arm64 ?Oui, via une compilation croisée avec une chaîne d'outils armhf ou avec le support multilib le cas échéant.Comment exécuter des tests d'intégration arm64 ?Exécutez l'intégralité du travail sur un exécuteur arm64 natif, y compris tous les conteneurs de services, qui doivent avoir des images arm64.Quelles tailles de coureurs arm64 sont disponibles ?runnerhut propose 2 à 64 runners vCPU arm64 sur Ubuntu 22.04 et 24.04.Les coureurs arm64 utilisent-ils un répertoire de travail différent ?Non. Les chemins correspondent aux images x64, donc les flux de travail sont portés sans changement.Comment puis-je créer un binaire Rust pour plusieurs cibles ?Utilisez une matrice avec un exécuteur natif par cible, plutôt que de tout compiler de manière croisée sur une seule machine.Les GitHub Actions peuvent-ils créer des images multi-arch ?Oui, soit avec QEMU sur un seul exécutable, soit nativement sur des exécuteurs par architecture et fusionnés dans une liste de manifestes.QEMU ou arm64 natif sont-ils plus rapides ?Natif, d'un facteur de 5 à 40 selon le degré de compilation du build.
macOS et iOS15
Les exécuteurs GitHub Actions prennent-ils en charge macOS ?Oui, les fournisseurs hébergés et gérés sur GitHub proposent des exécuteurs macOS sur le silicium Apple.Puis-je créer des applications iOS sans exécuteur Mac ?Non. Xcode ne fonctionne que sur macOS, donc une version iOS nécessite un exécuteur macOS.Xcode est-il préinstallé sur les exécuteurs macOS ?Oui. Les images runnerhut sont livrées avec plusieurs versions de Xcode avec des outils de ligne de commande correspondants.Comment sélectionner une version de Xcode ?Exécutez sudo xcode-select -s /Applications/Xcode_16.4.app avant vos étapes de construction.Quelles versions de Xcode sont disponibles ?Les images runnerhut macOS 15 portent Xcode 16.0, 16.2 et 16.4 ; Les images macOS 14 portent les versions 15.2 et 15.4.Quelles versions de macOS sont prises en charge ?runnerhut propose des images macOS 14 et macOS 15 sur silicium Apple.GitHub Actions prend-il en charge le silicium Apple ?Oui. Les exécuteurs macOS hébergés et gérés sur GitHub fonctionnent désormais sur le silicium Apple.De combien de disque disposent les exécuteurs macOS ?Les coureurs macOS runnerhut fournissent de 250 Go à 1 To de NVMe selon la taille.Quels environnements d'exécution de simulateur sont disponibles sur les exécuteurs macOS ?iOS 17.5 à 18.4, ainsi que les environnements d'exécution watchOS, tvOS et visionOS.Puis-je utiliser Docker sur les exécuteurs macOS ?Uniquement via une VM Linux, qui est lente. Exécutez plutôt les charges de travail Docker sur les exécuteurs Linux.Puis-je exécuter des exécuteurs macOS dans l’UE ?Oui. runnerhut exploite la capacité macOS dans les régions de l'UE pour répondre aux exigences de résidence des données.Puis-je exécuter des versions Android et iOS dans un seul flux de travail ?Oui : utilisez une matrice avec un exécuteur macOS pour iOS et un exécuteur Linux pour Android.Comment puis-je accélérer les builds Xcode répétés ?Conservez DerivedData entre les exécutions et épinglez la version Xcode.Comment exécuter des tests iOS en parallèle ?Partage par cible de test ou classe de test sur plusieurs simulateurs sur un grand exécuteur macOS.Comment légaliser une application macOS dans CI ?Utilisez notarytool avec une clé API App Store Connect stockée comme secret.
Fenêtres11
Les GitHub Actions peuvent-ils exécuter des builds Windows ?Oui. Les exécuteurs Windows Server sont disponibles à la fois sur GitHub et auprès de fournisseurs gérés.Puis-je exécuter les versions de Windows Server 2022 ?Oui. runnerhut propose des images Windows Server 2022 et 2025.Quelles versions de Windows sont prises en charge ?Windows Serveur 2022 et Windows Serveur 2025.Visual Studio est-il préinstallé ?Oui. Les outils de build pour 2022 et 2025 sont livrés avec les charges de travail C++, .NET Desktop, ASP.NET et UWP.Comment installer des composants supplémentaires du SDK Windows ?Utilisez vs_installer.exe en modifiant avec --add et l'ID du composant.Pourquoi les programmes d’exécution Windows démarrent-ils plus lentement ?Windows démarre plus lentement et Defender analyse tout ce que la caisse écrit.Puis-je exécuter Docker sur les exécuteurs Windows ?Oui, pour les conteneurs Windows. Les conteneurs Linux nécessitent une virtualisation imbriquée.Les exécuteurs Windows prennent-ils en charge la virtualisation imbriquée ?Sur runnerhut, oui sur les images et tailles Windows Server 2025 qui exposent Hyper-V.Quelle est la plus petite taille du programme d’exécution Windows ?4 processeurs virtuels. Les tailles plus petites consacrent trop de temps au système d'exploitation pour être utiles.Puis-je exécuter des tests en parallèle sous Windows ?Oui. dotnet test --parallel et MSBuild -m utilisent tous deux plusieurs cœurs.Comment exécuter des scripts PowerShell ?Définissez shell : pwsh à l’étape pour PowerShell Core, ou shell : powershell pour Windows PowerShell 5.1.
Docker17
Comment puis-je réduire le temps d’extraction des images ?Utilisez un cache pull-through de registre dans le même réseau que le programme d'exécution.Comment réinitialiser le cache d'un générateur Docker ?Exécutez docker buildx prune sur le générateur ou recréez l'instance du générateur.Les constructeurs distants prennent-ils en charge les builds multiplateformes ?Oui. runnerhut exécute des constructeurs amd64 et arm64 distincts et fusionne les résultats.Comment puis-je envoyer une liste de manifestes ?Construisez chaque architecture par résumé, puis combinez-les avec docker buildx imagetools create.Pourquoi ma construction Docker est-elle lente ?Cache de couche froide, cache transféré sur le réseau ou arm64 construit sous émulation.Pourquoi la version Docker manque-t-elle de disque ?Les coureurs hébergés sur GitHub disposent d'environ 14 Go d'espace libre, que les grandes images et leur cache de couches épuisent rapidement.Pourquoi une mise à jour de l’image de base invalide-t-elle tout ?Chaque couche après FROM dépend du résumé de l'image de base, donc une nouvelle base les invalide toutes.Quelle est la différence entre le cache depuis et le cache vers ?cache-from importe un cache de couche existant ; cache-to exporte le cache produit par cette build.Ai-je besoin de buildx ?Pour les builds multiplateformes, les montages de cache ou les constructeurs distants, oui. Pour une construction simple à arche unique, non.Qu'est-ce qu'un générateur Docker distant ?Une instance BuildKit persistante à laquelle votre travail s'attache, qui conserve le cache de couches sur son propre disque.Comment est facturé un constructeur à distance ?Par seconde de temps de construction actif, séparément des minutes d'exécution.Deux emplois peuvent-ils partager un même constructeur ?Oui. Les segments matriciels et les flux de travail distincts peuvent s'attacher au même générateur et partager son cache.Comment puis-je créer et déployer en une seule étape ?Utilisez docker/build-push-action avec push: true.Comment utiliser Docker Bake ?Définissez des cibles dans docker-bake.hcl et exécutez docker buildx bake en une seule étape.Comment puis-je m'authentifier auprès d'un registre privé ?Utilisez docker/login-action avec un jeton ou OIDC pour les registres cloud.Puis-je exécuter Docker Compose ?Oui. Compose v2 est préinstallé ; utilisez docker compose up -d --wait pour que les étapes n'accélèrent pas le démarrage.Puis-je utiliser Podman au lieu de Docker ?Oui. Podman est disponible et est largement compatible CLI avec Docker.
Sécurité19
Les exécuteurs d'instantanés sont-ils sûrs pour les référentiels publics ?Uniquement si les instantanés sont pris à partir de branches de confiance et jamais à partir de requêtes fork pull.Comment générer un SBOM ?Activez la sortie sbom: true de buildx ou exécutez syft sur l'image construite.Comment puis-je joindre la provenance de la construction ?Utilisez actions/attestation-build-provenance, ou buildx's provenance: true attestation.Comment transmettre des secrets dans une version Docker ?Utilisez les secrets de construction de BuildKit avec --secret, jamais ARG ou ENV.Les coureurs GitHub Actions sont-ils sécurisés ?Les exécuteurs gérés et réputés hébergés sur GitHub sont des machines virtuelles éphémères à usage unique, ce qui constitue le bon modèle d'isolation.Les coureurs stockent-ils mon code source ?Uniquement pour la durée du travail. runnerhut détruit la VM et efface son disque à la fin du travail.La plateforme des coureurs peut-elle voir mes secrets ?Les secrets sont déchiffrés dans la mémoire du coureur pour être utilisés, ce qui est techniquement possible pour n'importe quelle plateforme de coureur.Comment définir les autorisations GITHUB_TOKEN ?Ajoutez un bloc d'autorisations au niveau du workflow ou de la tâche et accordez uniquement les étendues nécessaires.Comment puis-je m'authentifier auprès d'AWS avec OIDC ?Configurez GitHub en tant que fournisseur OIDC dans IAM et utilisez aws-actions/configure-aws-credentials avec un rôle.Les exécuteurs gérés modifient-ils mes autorisations GitHub ?Non. Les tâches s'exécutent avec le même GITHUB_TOKEN et les mêmes autorisations que sur les exécuteurs hébergés par GitHub.Puis-je restreindre les référentiels qui utilisent mes coureurs ?Oui, avec des groupes de coureurs limités à des organisations ou à des référentiels spécifiques.runnerhut SOC 2 est-il conforme ?runnerhut maintient SOC 2 Type 2, avec le rapport disponible sous NDA.Où mes données de build sont-elles stockées ?Dans la région que vous sélectionnez. Le calcul, le cache, les journaux et les métriques sont tous épinglés dans la même région.Puis-je conserver les builds dans l’UE uniquement ?Oui. Les déploiements uniquement dans l'UE associent le calcul, le cache, les journaux et les métriques aux régions de l'UE.Puis-je restreindre le trafic sortant ?Oui. Les politiques de sortie refusent par défaut et autorisent uniquement les destinations que vous répertoriez.Comment auditer les modifications de configuration du programme d'exécution ?Le journal d'audit enregistre l'acteur, l'horodatage, l'adresse IP source et les valeurs avant/après pour chaque modification de configuration.Où courent physiquement les coureurs gérés ?Dans les centres de données du fournisseur ou dans votre propre compte cloud sous BYOC.Qu'arrive-t-il aux disques d'exécution après une tâche ?Sur runnerhut, ils sont effacés cryptographiquement et la VM détruite.Les coureurs gardent-ils leur état entre les tâches ?Les coureurs éphémères ne le font pas. Les coureurs auto-hébergés persistants le font, ce qui constitue un risque de sécurité sur les référentiels publics.
Apportez votre propre cloud18
Les coureurs peuvent-ils accéder à mon réseau privé ?Oui, via des exécuteurs BYOC dans votre VPC ou un réseau maillé tel que Tailscale.Les coureurs peuvent-ils courir dans mon propre compte cloud ?Oui. BYOC déploie des exécuteurs dans votre compte AWS, GCP ou Azure pendant que le plan de contrôle reste géré.Que crée runnerhut dans mon compte cloud ?Un groupe de mise à l'échelle automatique, un compartiment de cache, un cache d'extraction de registre, un rôle IAM limité et un point de terminaison de VPC.De quelles autorisations AWS le BYOC a-t-il besoin ?Autorisations pour gérer son propre groupe de mise à l'échelle automatique, son compartiment de cache et son rôle d'instance – rien de plus.Puis-je utiliser mon propre VPC ?Oui. Vous fournissez les ID de VPC et de sous-réseau et les exécuteurs y sont placés.Les runners BYOC peuvent-ils accéder aux services internes ?Oui, c'est la principale raison d'utiliser le BYOC. Ils se trouvent à l'intérieur de votre réseau avec un routage normal.Les coureurs BYOC ont-ils besoin d’une passerelle NAT ?Ils ont besoin d’une connexion Internet sortante pour l’extraction d’images et de packages, ce qui signifie généralement une passerelle NAT.Les exécuteurs BYOC peuvent-ils fonctionner dans un sous-réseau privé ?Oui, et ils devraient le faire. L'accès sortant passe par les points de terminaison NAT ou VPC.Puis-je attacher un rôle IAM à un exécuteur BYOC ?Oui, via un profil d'instance : les tâches obtiennent ainsi des informations d'identification sans aucun secret stocké.Le BYOC fonctionne-t-il avec IMDSv2 ?Oui, et IMDSv2 est appliqué par défaut.Puis-je exécuter BYOC dans plusieurs régions ?Oui. Déployez le module par région et étiquetez les exécuteurs par région.BYOC prend-il en charge les images personnalisées ?Oui. Fournissez votre propre image AMI ou machine avec vos outils intégrés.BYOC prend-il en charge Windows ?Oui sur AWS et Azure. La prise en charge de GCP Windows est plus limitée.BYOC prend-il en charge les disques SSD locaux GCP ?Oui, sur les familles de machines qui le proposent.Comment fonctionne la facturation BYOC ?Vous payez à votre fournisseur de cloud pour le calcul et le réseau, et à runnerhut des frais de plan de contrôle réduits.Comment puis-je baliser les ressources BYOC ?Définir les balises de répartition des coûts dans le module Terraform ; ils se propagent à chaque ressource créée.Comment supprimer une pile BYOC ?Videz les coureurs, puis terraform détruisez le module.Puis-je contrôler la sortie des coureurs BYOC ?Oui, avec les groupes de sécurité, les NACL et la politique de sortie runnerhut ensemble.
Flux de travail30
Sur combien de tâches une matrice peut-elle s'étendre ?GitHub limite une matrice unique à 256 tâches par exécution de workflow.Comment reproduire localement une panne de CI ?Faites correspondre l'image du coureur, puis connectez-vous en SSH à un coureur en direct si l'échec n'apparaît que dans CI.Puis-je me connecter en SSH à un coureur ?Oui. runnerhut prend en charge l'ouverture d'une session de débogage sur une tâche en cours d'exécution avec une clé SSH autorisée.Puis-je mélanger des coureurs hébergés et gérés sur GitHub ?Oui. l'exécution s'effectue par tâche, de sorte que différentes tâches dans un flux de travail peuvent utiliser différents fournisseurs.Comment changer de coureur ?Modifiez la valeur d'exécution pour le travail. Rien d’autre ne doit changer.Comment exécuter une tâche uniquement lorsque les fichiers changent ?Utilisez des chemins ou des chemins ignorés sur le déclencheur, ou une action de détection de changement pour un contrôle plus précis.Comment exécuter un workflow manuellement ?Ajoutez un déclencheur workflow_dispatch, éventuellement avec des entrées saisies.Comment exécuter des tâches selon un planning ?Utilisez le déclencheur de planification avec la syntaxe cron, en UTC.Comment puis-je annuler les courses remplacées ?Définissez un groupe de concurrence saisi sur la référence avec Cancel-in-Progress : true.Comment limiter un flux de travail à une exécution à la fois ?Utilisez un nom de groupe de concurrence fixe avec Cancel-in-Progress : false.Que se passe-t-il lorsque deux workflows partagent un groupe de concurrence ?Ils sérialisent - le second attend ou annule le premier en fonction de l'annulation en cours.Comment définir un délai d'expiration d'une tâche ?Ajoutez des minutes d'expiration au travail. La valeur par défaut est de six heures.Comment réessayer une étape ayant échoué ?Utilisez une action de nouvelle tentative ou enveloppez la commande dans une boucle de nouvelle tentative du shell.Comment réutiliser un workflow dans plusieurs référentiels ?Publiez un workflow réutilisable et appelez-le avec workflow_call.Comment écrire une action composite ?Créez action.yml avec runs.using: composite et une liste d'étapes.Comment utiliser l'inclusion et l'exclusion matricielles ?inclure ajoute ou étend des combinaisons ; exclure les supprime du produit généré.Comment ignorer le CI lors d’un commit ?Ajoutez [skip ci] au message de validation.Comment rédiger un résumé de poste ?Ajoutez Markdown à $GITHUB_STEP_SUMMARY.Comment exécuter une base de données dans CI ?Déclarez-le comme conteneur de services avec un contrôle de santé.Comment publier un package ?Utilisez la publication approuvée OIDC là où le registre la prend en charge, sinon un jeton étendu dans un secret d'environnement.Comment partager des données entre les tâches ?Téléchargez un artefact dans une tâche et téléchargez-le dans la suivante, ou utilisez les sorties de la tâche pour les petites valeurs.Comment puis-je arrêter un flux de travail lent bloquant les déploiements ?Séparez les contrôles requis des contrôles consultatifs et marquez uniquement les travaux rapides et fiables requis.Comment exécuter des tests de navigateur sans tête ?Utilisez le drapeau sans tête pour votre coureur, ou xvfb-run pour les outils nécessitant un affichage.Comment puis-je exécuter des tests de détecteur de course Go ?Courez, allez test-race. Attendez-vous à une exécution environ 2 à 10 fois plus lente et à une utilisation de la mémoire plus élevée.Quelle est la différence entre un travail et une étape ?Un travail s'exécute sur un seul exécuteur et contient des étapes ; les étapes s’exécutent séquentiellement dans le même espace de travail.Quelle est la différence entre les coureurs hébergés sur GitHub et auto-hébergés ?Les sites hébergés sur GitHub sont gérés, éphémères et facturés à la minute. Les serveurs auto-hébergés sont à votre disposition, sur votre matériel.Quels systèmes d'exploitation les GitHub Actions peuvent-ils exécuter ?Linux, Windows et macOS, sur x64 et arm64 selon le fournisseur.Combien de temps les objets sont-ils conservés ?90 jours par défaut, configurable par référentiel ou par téléchargement jusqu'à un jour.Comment déboguer une tâche ayant échoué ?Activez la journalisation du débogage des étapes, ajoutez un résumé de la tâche ou ouvrez une session SSH sur le coureur.Comment exécuter un travail uniquement sur des requêtes pull ?Utilisez le déclencheur pull_request et une condition if pour un contrôle plus précis, comme ignorer les brouillons.
Observabilité19
Comment puis-je voir le coût par flux de travail ?Le tableau de bord runnerhut répartit les dépenses par flux de travail, tâche, étiquette et référentiel.Comment puis-je voir le coût par étiquette de coureur ?Filtrez le tableau de bord d'utilisation par étiquette pour voir les minutes et les dépenses par type de coureur.Comment détecter un coureur de petite taille ?Processeur soutenu proche de 100 %, pression de la mémoire ou activité d'échange tout au long du travail.Comment trouver l’étape la plus lente d’un flux de travail ?Triez les étapes par durée dans la vue d'exécution ou utilisez la chronologie de runnerhut qui affiche séparément la file d'attente, la configuration et la durée des étapes.Comment puis-je trouver quel flux de travail est devenu plus lent ?Comparez la durée p95 par flux de travail d'un mois à l'autre dans le tableau de bord d'analyse.Comment mesurer le taux de réussite du cache ?Le tableau de bord runnerhut indique le taux de réussite, l'heure de restauration et la taille par clé de cache.Comment exporter les données d'une tâche ?Utilisez l'API runnerhut ou l'API REST GitHub Actions et écrivez les résultats au format CSV.Un agent IA peut-il interroger mes métriques CI ?Oui, via le serveur MCP runnerhut, qui expose les builds, les durées, les échecs et les coûts sous forme d'outils.Les agents IA peuvent-ils déclencher des tâches CI ?Oui, via l’API ou en poussant des branches, comme tout autre acteur.Quelles métriques l’API expose-t-elle ?Temps d'attente, percentiles de durée, taux de réussite du cache, utilisation du processeur et de la mémoire, ainsi que coût par tâche, étiquette et flux de travail.Comment puis-je voir l'utilisation du processeur et de la mémoire pour une tâche ?runnerhut enregistre automatiquement l'utilisation par tâche et l'affiche sur la page d'exécution.Puis-je alerter en cas de tâches à mémoire insuffisante ?Oui. Alerte sur les kills du MOO ou sur l'utilisation de la mémoire dépassant un seuil.Comment produire un rapport de santé hebdomadaire CI ?Planifiez un flux de travail qui interroge l'API de métriques et publie la durée p95, le taux de réussite du cache, le taux de flocons et les dépenses.Pourquoi mon travail a-t-il été supprimé avec le code de sortie 137 ?Il s'agit d'une suppression du MOO : le processus a dépassé la mémoire disponible.Pourquoi mon travail est-il à court de disque ?Les coureurs hébergés sur GitHub disposent d'environ 14 Go d'espace libre ; Les couches Docker et node_modules épuisent cela rapidement.Les coureurs ont-ils de gros disques ?Les coureurs hébergés sur GitHub disposent d’environ 14 Go d’espace libre. Les coureurs runnerhut fournissent 150 Go à 2 To de NVMe local.Les groupes de coureurs limitent-ils la simultanéité ?Ils le peuvent. Un groupe peut avoir son propre plafond de simultanéité, indépendamment de la limite de votre compte.Quelles limites de débit de l’API GitHub affectent CI ?GITHUB_TOKEN est limité par référentiel et par heure ; les workflows effectuant de nombreux appels d'API peuvent l'épuiser.Pourquoi mes tâches atteignent-elles des délais d'attente réseau ?Il s'agit généralement d'une limitation du débit de registre, d'un goulot d'étranglement de la passerelle NAT ou d'une politique de sortie supprimant silencieusement le trafic.