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.
Tutoriel : Configuration d'un lanceur d' CodeBuild-hosted GitHub actions
Ce didacticiel explique comment configurer vos CodeBuild projets pour exécuter GitHub des tâches Actions. Pour plus d'informations sur l'utilisation d' GitHub Actions avec, CodeBuild voirTutoriel : Configuration d'un lanceur d' CodeBuild-hosted GitHub actions.
Pour effectuer ce didacticiel, vous devez d'abord :
-
Connectez-vous à l'aide d'un jeton d'accès personnel, d'un secret Secrets Manager, d'une application OAuth ou GitHub d'une application. Si vous souhaitez vous connecter à une application OAuth, vous devez utiliser la CodeBuild console pour le faire. Si vous souhaitez créer un jeton d'accès personnel, vous pouvez utiliser la CodeBuild console ou utiliser l'ImportSourceCredentials API. Pour plus d’informations, consultez GitHub et accès à GitHub Enterprise Server dans CodeBuild.
-
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 source dans la console. Vous pouvez vous connecter à l'aide d'un jeton d'accès personnel, d'un secret Secrets Manager, d'une application OAuth ou GitHub d'une application. Pour obtenir des instructions, veuillez consulter GitHub et accès à GitHub Enterprise Server dans CodeBuild.
-
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 consulter dans la GitHub console. Vous pouvez également choisir GitHub Enterprise comme fournisseur source. Pour en savoir plus sur la création d'un webhook dans GitHub Enterprise, consultezGitHub webhooks manuels.
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 Type de projet, choisissez Runner project.
Dans Runner :
-
Pour Runner provider, choisissez GitHub.
-
Pour Runner location, choisissez Repository.
-
Pour URL du référentiel, sous Référentiel, choisissez https://github.com/user-name/repository-name.
Note
Par défaut, votre projet ne recevra que des
WORKFLOW_JOB_QUEUEDévénements pour un seul référentiel. Si vous souhaitez recevoir des événements pour tous les référentiels d'une organisation ou d'une entreprise, consultezGitHub webhooks mondiaux et organisationnels. -
-
-
Dans Environment (Environnement) :
-
Choisissez une image d'environnement prise en charge et calculez. Notez que vous avez la possibilité de modifier les paramètres d'image et d'instance en utilisant une étiquette dans le code YAML de votre flux de travail GitHub Actions. Pour de plus amples informations, consultez Étape 2 : mettez à jour votre flux de travail GitHub Actions (YAML).
-
-
Dans Buildspec:
-
Notez que votre buildspec sera ignorée à moins qu'elle ne
buildspec-override:truesoit ajoutée en tant qu'étiquette. Au lieu de cela, il le CodeBuild remplacera pour utiliser des commandes qui configureront le coureur auto-hébergé.
-
-
-
Continuez avec les valeurs par défaut, puis choisissez Créer un projet de construction.
-
Ouvrez la GitHub console à l'adresse
https://github.com/pour vérifier qu'un webhook a été créé et qu'il est activé pour diffuser des événements liés aux 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-onGitHub
-
Vous pouvez spécifier le nom du projet et l'ID d'exécution, auquel cas la compilation 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 associer 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 permis d'invoquer des tâches avec les paramètres de projet corrects. En fournissant l'ID d'exécution, CodeBuild mappe votre build à des exécutions de flux de travail spécifiques et arrête la génération lorsque l'exécution du flux de travail est annulée. Pour plus d'informations, voir
githubcontexte. runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}Note
Assurez-vous que le nom du projet que vous avez créé à l'étape précédente
<project-name>correspond. 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 d' 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 votre type de calcul dans l'étiquette. Consultez Calculez les images prises en charge par le lanceur d' CodeBuild-hosted GitHub actions la liste des images sélectionnées. Pour utiliser des images personnalisées, consultezLes remplacements d'étiquettes sont pris en charge avec le lanceur d' CodeBuild-hosted GitHub actions. Le type de calcul et l'image figurant dans l'étiquette remplaceront les paramètres d'environnement de votre projet. Pour modifier les paramètres de votre environnement pour une version de calcul CodeBuild EC2 ou Lambda, utilisez la syntaxe suivante :
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} image:<environment-type>-<image-identifier>instance-size:<instance-size>Voici un exemple de flux de travail d' GitHub actions YAML :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} image:arm-3.0 instance-size:small steps: - run: echo "Hello World!" -
Vous pouvez modifier le parc utilisé pour votre build dans l'étiquette. Cela remplacera les paramètres de flotte configurés sur votre projet pour utiliser la flotte spécifiée. Pour de plus amples informations, veuillez consulter Exécutez des builds sur des flottes à capacité réservée. Pour modifier les paramètres de votre flotte pour une version de calcul Amazon EC2, utilisez la syntaxe suivante :
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>Pour remplacer à la fois la flotte et l'image utilisées pour la génération, utilisez la syntaxe suivante :
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>image:<environment-type>-<image-identifier>Voici un exemple de flux de travail d' GitHub actions YAML :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} fleet:myFleet image:arm-3.0 steps: - run: echo "Hello World!" -
Pour exécuter vos tâches GitHub Actions sur une image personnalisée, vous pouvez configurer une image personnalisée dans votre CodeBuild projet et éviter de fournir une étiquette de remplacement d'image. CodeBuild utilisera l'image configurée dans le projet si aucune étiquette de remplacement d'image n'est fournie.
-
Vous pouvez éventuellement fournir des étiquettes autres que celles prises CodeBuild en charge. Ces étiquettes seront ignorées dans le but de remplacer les attributs de la version, mais la demande de webhook n'échouera pas. Par exemple, l'ajout en
testLabeltant qu'étiquette n'empêchera pas l'exécution de la compilation.
Note
Si une dépendance fournie par GitHub-hosted les coureurs n'est pas disponible dans l' CodeBuildenvironnement, vous pouvez l'installer à l'aide d' GitHub Actions lors de l'exécution de votre flux de travail. Par exemple, vous pouvez utiliser cette setup-python
Exécutez les commandes buildspec dans les phases INSTALL, PRE_BUILD et POST_BUILD
Par défaut, CodeBuild ignore toutes les commandes buildspec lors de l'exécution d'une version d'Actions GitHub auto-hébergée. Pour exécuter les commandes buildspec pendant la compilation, buildspec-override:true vous pouvez ajouter un suffixe à l'étiquette :
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} buildspec-override:true
À l'aide de cette commande, CodeBuild vous allez créer un dossier appelé actions-runner dans le dossier source principal du conteneur. Lorsque le lanceur GitHub Actions démarre pendant la BUILD phase, il s'exécute dans le actions-runner répertoire.
L'utilisation d'un remplacement buildspec dans une version Actions GitHub auto-hébergée présente plusieurs limites :
-
CodeBuild n'exécutera pas les commandes buildspec pendant la
BUILDphase, car le runner auto-hébergé s'exécute pendant la phase.BUILD -
CodeBuild ne téléchargera aucune source primaire ou secondaire pendant la
DOWNLOAD_SOURCEphase. Si vous avez configuré un fichier buildspec, seul ce fichier sera téléchargé depuis la source principale du projet. -
Si une commande de génération échoue pendant la
INSTALLphasePRE_BUILDou, elle ne CodeBuild démarre pas le lanceur auto-hébergé et la tâche du flux de travail GitHub Actions doit être annulée manuellement. -
CodeBuild récupère le jeton du coureur pendant la
DOWNLOAD_SOURCEphase, dont le délai d'expiration est d'une heure. Si votrePRE_BUILDou vosINSTALLphases dépassent une heure, le jeton de coureur peut expirer avant le départ du coureur GitHub auto-hébergé.
Étape 3 : Passez en revue vos résultats
Chaque fois qu'un flux de travail GitHub Actions est exécuté, CodeBuild les événements de la tâche du flux de travail sont reçus via le webhook. Pour chaque tâche du flux de travail, CodeBuild démarre une compilation pour exécuter un lanceur 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 la tâche terminée, le runner 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, choisissez Actions, choisissez le flux de travail souhaité, puis choisissez la tâche spécifique pour laquelle vous souhaitez consulter les journaux.
Vous pouvez consulter les étiquettes demandées dans le journal pendant que la tâche attend d'être prise en charge par un coursier auto-hébergé CodeBuild.
Une fois la tâche terminée, vous pourrez consulter le journal de la tâche.
GitHub Options de configuration d'Actions Runner
Vous pouvez spécifier les variables d'environnement suivantes dans la configuration de votre projet pour modifier la configuration de configuration de vos coureurs auto-hébergés.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME-
CodeBuild enregistrera les coureurs auto-hébergés sous le nom de l'organisation spécifié comme valeur de cette variable d'environnement. Pour plus d'informations sur l'enregistrement des coureurs au niveau de l'organisation et sur les autorisations nécessaires, voir Création d'une configuration pour un coureur juste à temps pour une organisation.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME-
CodeBuild enregistrera les coureurs auto-hébergés au nom de l'entreprise spécifié comme valeur de cette variable d'environnement. Pour plus d'informations sur l'enregistrement des coureurs au niveau de l'entreprise et sur les autorisations nécessaires, voir Création d'une configuration pour un coureur juste à temps pour une entreprise.
Note
Les Enterprise Runners ne sont pas disponibles par défaut dans les référentiels des organisations. Pour que les coureurs auto-hébergés puissent choisir des tâches liées au flux de travail, vous devrez peut-être configurer les paramètres d'accès de votre groupe de coureurs. Pour plus d'informations, consultez la section Mise à disposition des référentiels
Enterprise Runners. CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID-
CodeBuild enregistrera les coureurs auto-hébergés sous l'identifiant entier du groupe de coureurs stocké comme valeur de cette variable d'environnement. Par défaut, cette valeur est 1. Pour plus d'informations sur les groupes de coureurs auto-hébergés, voir Gérer l'accès aux coureurs auto-hébergés à l'aide de groupes.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAMEPour configurer l'enregistrement des coureurs au niveau de l'organisation à l'aide de votre fichier YAML de flux de travail GitHub Actions, vous pouvez utiliser la syntaxe suivante :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} organization-registration-name:myOrganization steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAMEPour configurer l'enregistrement des coureurs au niveau de l'entreprise à l'aide de votre fichier YAML de flux de travail GitHub Actions, vous pouvez utiliser la syntaxe suivante :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} enterprise-registration-name:myEnterprise steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_IDPour configurer l'enregistrement des coureurs avec un identifiant de groupe de coureurs spécifique à l'aide de votre fichier YAML de flux de travail GitHub Actions, vous pouvez utiliser la syntaxe suivante :
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} registration-group-id:3 steps: - run: echo "Hello World!"
Filtrer GitHub les actions et les événements du webhook (CloudFormation)
La YAML-formatted partie suivante d'un CloudFormation
modèle crée un groupe de filtres qui déclenche une génération lorsqu'il est évalué à true. Le groupe de filtres suivant spécifie une demande de tâche de flux de travail GitHub Actions dont le nom correspond à l'expression régulière\[CI-CodeBuild\].
CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name Scope: GITHUB_ORGANIZATION FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]
Filtrer GitHub les actions et les événements du webhook (AWS CDK)
Le AWS CDK modèle suivant crée un groupe de filtres qui déclenche une génération lorsqu'il est évalué à true. Le groupe de filtres suivant spécifie une demande de tâche du flux de travail GitHub Actions.
import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })
Filtrer GitHub les actions des événements du webhook (Terraform)
Le modèle Terraform suivant crée un groupe de filtres qui déclenche une génération lorsqu'il est évalué à true. Le groupe de filtres suivant spécifie une demande de tâche du flux de travail GitHub Actions.
resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }
Filtrer GitHub les actions et les événements du webhook (AWS CLI)
Les AWS CLI commandes suivantes créent un projet GitHub Actions runner auto-hébergé avec un groupe de filtres de demandes de travail du flux de travail GitHub Actions qui déclenche une génération lorsqu'il est évalué comme vrai.
aws codebuild create-project \ --name <project name> \ --source "{\"type\":\"GITHUB\",\"location\":\"<repository location>\",\"buildspec\":\"\"}" \ --artifacts {"\"type\":\"NO_ARTIFACTS\""} \ --environment "{\"type\": \"LINUX_CONTAINER\",\"image\": \"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"computeType\": \"BUILD_GENERAL1_MEDIUM\"}" \ --service-role "<service role ARN>"
aws codebuild create-webhook \ --project-name <project name> \ --filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]"