Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurez des coureurs GitHub Actions auto-hébergés dans AWS CodeBuild
Vous pouvez configurer votre projet pour configurer des exécuteurs d' GitHub actions auto-hébergés dans des CodeBuild conteneurs afin de traiter vos tâches de flux de travail GitHub Actions. Cela peut être fait en configurant un webhook à l'aide de votre CodeBuild projet et en mettant à jour votre flux de travail GitHub Actions YAML pour utiliser des coureurs auto-hébergés hébergés sur des machines. CodeBuild Pour plus d'informations, consultez À propos des coureurs auto-hébergés
Les étapes de haut niveau pour configurer un CodeBuild projet afin d'exécuter GitHub des tâches Actions sont les suivantes :
-
Si vous ne l'avez pas encore fait, créez un jeton d'accès personnel ou connectez-vous à une application OAuth pour connecter votre projet. GitHub
-
Accédez à la CodeBuild console, créez un CodeBuild projet avec un webhook et configurez vos filtres webhook.
-
Mettez à jour votre flux de travail GitHub Actions YAML GitHub pour configurer votre environnement de génération.
Pour une procédure plus détaillée, voirTutoriel : Configuration d'un CodeBuild exécuteur d' GitHub actions auto-hébergé.
Cette fonctionnalité permet à vos tâches de flux de travail GitHub Actions de s'intégrer de manière native AWS, ce qui apporte sécurité et commodité grâce à des fonctionnalités telles que l'IAM AWS CloudTrail, AWS Secrets Manager l'intégration et Amazon VPC. Vous pouvez accéder aux derniers types d'instances, y compris les instances basées sur ARM.
Rubriques
Tutoriel : Configuration d'un CodeBuild exécuteur d' GitHub actions auto-hébergé
Ce didacticiel explique comment configurer vos CodeBuild projets pour exécuter GitHub des tâches Actions.
Prérequis
Pour effectuer ce didacticiel, vous devez d'abord :
-
Connectez-vous à une application OAuth ou créez un jeton d'accès personnel. Si vous souhaitez vous connecter à une application OAuth, vous devez utiliser la CodeBuild console pour ce faire. Si vous souhaitez créer un jeton d'accès personnel, vous pouvez utiliser la CodeBuild console ou l'ImportSourceCredentials API. Pour plus d'instructions, voirGitHub et jeton d'accès au serveur GitHub Enterprise.
-
Connectez-vous CodeBuild à votre GitHub compte. Pour ce faire, vous pouvez effectuer l'une des opérations suivantes :
-
Vous pouvez l'ajouter GitHub en tant que fournisseur de source dans la console. Vous pouvez vous connecter à l'aide d'une application OAuth ou d'un jeton d'accès personnel. Pour obtenir des instructions, veuillez consulter Connect GitHub avec un jeton d'accès (console) .
-
Vous pouvez importer vos GitHub informations d'identification via l'ImportSourceCredentials API. Cela ne peut être fait qu'avec un jeton d'accès personnel. Si vous vous connectez à l'aide d'une application OAuth, vous devez plutôt vous connecter à l'aide de la console. Pour obtenir des instructions, veuillez consulter Connectez-vous à GitHub l'aide d'un jeton d'accès (CLI) .
Note
Cela ne doit être fait que si vous n'êtes pas connecté GitHub à votre compte.
-
Étape 1 : Création d'un CodeBuild projet avec un webhook
Au cours de cette étape, vous allez créer un CodeBuild projet avec un webhook et le passer en revue dans la GitHub console.
Pour créer un CodeBuild projet avec un webhook
-
Ouvrez la AWS CodeBuild console à l'adresse https://console.aws.amazon.com/codesuite/codebuild/home
. -
Créez un projet de génération. Pour plus d'informations, consultez Création d'un projet de génération (console) et Exécution d'une génération (console).
-
Dans Source:
-
Dans le champ Source provider, sélectionnez GitHub.
-
Pour Repository, sélectionnez Repository dans mon GitHub compte.
-
Pour Repository URL (URL du référentiel), saisissez
https://github.com/
user-name
/repository-name
-
-
Dans les événements Webhook de la source principale :
-
Pour Webhook, facultatif, sélectionnez Reconstruire chaque fois qu'une modification de code est envoyée à ce référentiel.
-
Pour Type d'événement, sélectionnez WORKFLOW_JOB_QUEUED. Une fois cette option activée, les builds ne seront déclenchés que par GitHub les événements des jobs du flux de travail Actions.
Note
CodeBuild ne traitera les événements des tâches du flux de travail GitHub Actions que si un webhook possède des groupes de filtres contenant le filtre d'événements WORKFLOW_JOB_QUEUED.
-
-
Dans Environment (Environnement) :
-
Choisissez une image d'environnement compatible et calculez. Notez que vous avez la possibilité de remplacer les paramètres d'image et d'instance en utilisant une étiquette dans le code YAML de votre flux de travail GitHub Actions. Pour plus d’informations, consultez Étape 2 : mettez à jour votre flux de travail GitHub Actions YAML.
-
-
Dans Buildspec:
-
Notez que votre Buildspec sera ignoré. Au lieu de cela, il le CodeBuild remplacera pour utiliser des commandes qui configureront le coureur auto-hébergé. La principale responsabilité de ce projet est de configurer un runner in auto-hébergé CodeBuild pour exécuter les tâches du flux de travail GitHub Actions.
-
-
-
Continuez avec les valeurs par défaut, puis choisissez Create build project.
-
Ouvrez la GitHub console sur
https://github.com/
pour vérifier qu'un webhook a été créé et qu'il est activé pour diffuser des événements de tâches Workflow.user-name
/repository-name
/settings/hooks
Étape 2 : mettez à jour votre flux de travail GitHub Actions YAML
Au cours de cette étape, vous allez mettre à jour le fichier YAML de votre flux de travail GitHub Actions GitHub
Mettez à jour votre flux de travail GitHub Actions (YAML)
Accédez au runs-on
GitHub
-
Vous pouvez spécifier le nom du projet et l'ID d'exécution, auquel cas le build utilisera la configuration de votre projet existante pour le calcul, l'image, la version de l'image et la taille de l'instance. Le nom du projet est nécessaire pour lier AWS les paramètres associés de votre tâche GitHub Actions à un CodeBuild projet spécifique. En incluant le nom du projet dans le YAML, CodeBuild il est autorisé à invoquer des tâches avec les paramètres de projet corrects. En fournissant l'ID d'exécution, votre build CodeBuild sera mappé à des exécutions de flux de travail spécifiques et arrêtera la génération lorsque l'exécution du flux de travail est annulée. Pour plus d'informations, consultez
github
le contexte. runs-on: codebuild-
<project-name>
-${{ github.run_id }}-${{ github.run_attempt }}Note
Assurez-vous que vous
<project-name>correspondez au nom du projet que vous avez créé à l'étape précédente. S'il ne correspond pas, le webhook ne CodeBuild sera pas traité et le flux de travail GitHub Actions risque de se bloquer.
Voici un exemple de flux de travail GitHub Actions YAML :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
-
Vous pouvez également remplacer votre image et le type de calcul dans l'étiquette. Cela remplacera les paramètres d'environnement de votre projet. Pour remplacer les paramètres de votre environnement pour une version de calcul Amazon EC2, utilisez la syntaxe suivante :
runs-on: codebuild-
<project-name>
-${{ github.run_id }}-${{ github.run_attempt }}-<image>
-<image-version>
-<instance-size>
Pour remplacer les paramètres de votre environnement pour une version de calcul Lambda, utilisez la syntaxe suivante :
runs-on: codebuild-
<project-name>
-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>
-<runtime-version>
-<instance-size>
Voici un exemple de flux de travail GitHub Actions YAML :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-small steps: - run: echo "Hello World!"
Note
Si une dépendance fournie par GitHub -hosted runners n'est pas disponible dans l' CodeBuild environnement, vous pouvez l'installer à l'aide d' GitHub Actions dans votre flux de travail. Par exemple, vous pouvez utiliser l'setup-python
Images de calcul prises en charge
Dans votre étiquette, vous pouvez modifier les paramètres de votre environnement Amazon EC2 en utilisant les valeurs des trois premières colonnes. CodeBuild fournit les images de calcul Amazon EC2 suivantes :
Image | Version de l'image | Taille d’instance | Plateforme | Identificateur de l'image | Définition |
---|---|---|---|---|---|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-x86_64-standard:4.0 |
al2/standard/4.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
al2/standard/5.0 |
|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-aarch64-standard:2.0 |
al2/aarch64/standard/2.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
al2/aarch64/standard/3.0 |
|
|
|
|
Ubuntu 20.04 | aws/codebuild/standard:5.0 |
Ubuntu/standard/5.0 |
|
|
Ubuntu 22.04 | aws/codebuild/standard:6.0 |
Ubuntu/standard/6.0 |
|
|
|
Ubuntu 22.04 | aws/codebuild/standard:7.0 |
Ubuntu/standard/7.0 |
|
|
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-1.0 |
N/A |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-2.0 |
N/A | |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-3.0 |
N/A |
En outre, vous pouvez modifier les paramètres de votre environnement Lambda en utilisant les valeurs suivantes. Pour plus d'informations sur le calcul CodeBuild Lambda, consultez la section Utilisation de. Utilisation du AWS Lambda calcul dans AWS CodeBuild CodeBuild prend en charge les images de calcul Lambda suivantes :
Type d'environnement | Version d'environnement d'exécution | Taille d’instance |
---|---|---|
|
|
|
|
Pour plus d’informations, consultez Modes et types de calcul de l'environnement de création et Images Docker fournies par CodeBuild.
Étape 3 : Passez en revue vos résultats
Chaque fois qu'un flux de travail GitHub Actions est exécuté, CodeBuild il reçoit les événements de travail du flux de travail via le webhook. Pour chaque tâche du flux de travail, CodeBuild lance une compilation pour exécuter un exécuteur d' GitHub actions éphémère. Le coureur est responsable de l'exécution d'une seule tâche de flux de travail. Une fois le travail terminé, le lanceur et le processus de construction associé seront immédiatement interrompus.
Pour consulter les journaux des tâches de votre flux de travail GitHub, accédez à votre référentiel dans, choisissez Actions, choisissez le flux de travail souhaité, puis choisissez le travail spécifique dont vous souhaitez consulter les journaux.
Vous pouvez consulter les étiquettes demandées dans le journal pendant que le travail attend d'être récupéré par un coureur auto-hébergé. CodeBuild
![](images/hello-world-loading.png)
Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.
![](images/hello-world-log.png)
À propos CodeBuild de -hosted GitHub Actions runner
Quand dois-je inclure les remplacements d'image et d'instance dans l'étiquette ?
Vous pouvez inclure les remplacements d'image et d'instance dans l'étiquette afin de spécifier un environnement de génération différent pour chacune de vos tâches de flux de travail GitHub Actions. Cela peut être fait sans qu'il soit nécessaire de créer plusieurs CodeBuild projets ou webhooks. Par exemple, cela est utile lorsque vous devez utiliser une matrice pour vos tâches de flux de travail
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
Note
Les guillemets peuvent être nécessaires si runs-on
plusieurs libellés contiennent le contexte GitHub des actions.
Puis-je utiliser AWS CloudFormation cette fonctionnalité ?
Oui, vous pouvez inclure un groupe de filtres dans votre AWS CloudFormation modèle qui spécifie un filtre d'événements de travail du flux de travail GitHub Actions dans le webhook de votre projet.
Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED
Pour plus d’informations, consultez Filtrer les événements du GitHub webhook ()AWS CloudFormation.
Si vous avez besoin d'aide pour configurer les informations d'identification du projet dans votre AWS CloudFormation modèle, consultez AWS::CodeBuild::SourceCredentialle guide de AWS CloudFormation l'utilisateur pour plus d'informations.
Quelles régions proposent l'utilisation d'un CodeBuild programme GitHub Actions Runner hébergé ?
CodeBuild-Hosted GitHub Actions : les coureurs sont soutenus dans toutes les CodeBuild régions. Pour plus d'informations sur Régions AWS les CodeBuild zones disponibles, consultez la section AWS Services par région
Quelles plateformes prennent en charge l'utilisation d'un CodeBuild exécuteur d' GitHub actions hébergé ?
CodeBuild-hosted GitHub Actions Runners sont pris en charge à la fois sur Amazon EC2 AWS Lambdaet Compute. Vous pouvez utiliser les plateformes suivantes : Amazon Linux 2, Amazon Linux 2023, Ubuntu et Windows Server Core 2019. Pour plus d’informations, consultez images de calcul EC2 et Images de calcul Lambda.
Résolution des problèmes : Comment puis-je résoudre les problèmes si le webhook ne fonctionne pas ?
Problème : votre webhook ne fonctionne pas ou votre tâche de flux de travail est bloquée. GitHub
Cause possible : votre événement Webhook Workflow jobs ne parvient peut-être pas à déclencher une compilation. Consultez les journaux des réponses pour voir la réponse ou le message d'erreur.
Solution recommandée : Pour corriger cette erreur, suivez les instructions suivantes.
-
Ouvrez la GitHub console à l'adresse
https://github.com/
pour afficher les paramètres du webhook de votre dépôt. Sur cette page, vous verrez un webhook créé pour votre dépôt.user-name
/repository-name
/settings/hooks -
Choisissez Modifier et confirmez que le webhook est activé pour diffuser les événements relatifs aux jobs Workflow.
-
Accédez à l'onglet Livraisons récentes, recherchez l'
workflow_job.queued
événement correspondant et développez l'événement. -
Vérifiez le champ des étiquettes dans la charge utile et assurez-vous qu'il correspond à vos attentes.
-
Enfin, passez en revue l'onglet Réponse, car il contient la réponse ou le message d'erreur renvoyé par CodeBuild.