Configurez des coureurs GitHub Actions auto-hébergés dans AWS CodeBuild - AWS CodeBuild

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 :

  1. 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

  2. Accédez à la CodeBuild console, créez un CodeBuild projet avec un webhook et configurez vos filtres webhook.

  3. 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.

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 :

    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
  1. Ouvrez la AWS CodeBuild console à l'adresse https://console.aws.amazon.com/codesuite/codebuild/home.

  2. 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.

  3. Continuez avec les valeurs par défaut, puis choisissez Create build project.

  4. Ouvrez la GitHub console sur https://github.com/user-name/repository-name/settings/hooks pour vérifier qu'un webhook a été créé et qu'il est activé pour diffuser des événements de tâches Workflow.

É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 GitHubpour configurer votre environnement de construction et utiliser les coureurs auto-hébergés par GitHub Actions dans. CodeBuild Pour plus d'informations, consultez la section Utilisation d'étiquettes avec des coureurs auto-hébergés.

Mettez à jour votre flux de travail GitHub Actions (YAML)

Accédez au runs-onparamètre YAML de votre flux de travail GitHub Actions GitHubet mettez-le à jour pour configurer votre environnement de génération. Pour ce faire, vous pouvez effectuer l'une des opérations suivantes :

  • 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 githuble 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-pythonaction pour installer Python dans votre environnement de construction.

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

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 Ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 Ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 Ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 N/A

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 N/A

windows

3.0

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

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

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

Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.

À 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.

  1. Ouvrez la GitHub console à l'adresse https://github.com/user-name/repository-name/settings/hooks 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.

  2. Choisissez Modifier et confirmez que le webhook est activé pour diffuser les événements relatifs aux jobs Workflow.

  3. Accédez à l'onglet Livraisons récentes, recherchez l'workflow_job.queuedévénement correspondant et développez l'événement.

  4. Vérifiez le champ des étiquettes dans la charge utile et assurez-vous qu'il correspond à vos attentes.

  5. Enfin, passez en revue l'onglet Réponse, car il contient la réponse ou le message d'erreur renvoyé par CodeBuild.