

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.

# Buildkite Runner autogéré dans AWS CodeBuild
<a name="buildkite-runner"></a>

Vous pouvez configurer votre projet pour configurer des moteurs Buildkite auto-hébergés dans des CodeBuild conteneurs afin de traiter vos tâches Buildkite. Cela peut être fait en configurant un webhook à l'aide de votre CodeBuild projet et en mettant à jour les étapes YAML de votre pipeline Buildkite pour utiliser des coureurs auto-hébergés hébergés sur des machines. CodeBuild 

Les étapes de haut niveau pour configurer un CodeBuild projet afin d'exécuter des tâches Buildkite sont les suivantes :
+ Accédez à la CodeBuild console et créez un CodeBuild projet avec la configuration de type Buildkite Runner project runner
+ Ajoutez un `job.scheduled` webhook à votre organisation Buildkite.
+ Mettez à jour les étapes YAML de votre pipeline Buildkite dans Buildkite pour configurer votre environnement de construction.

Pour une procédure plus détaillée, voir[Tutoriel : Configuration d'un CodeBuild moteur Buildkite hébergé](sample-runner-buildkite.md). Cette fonctionnalité permet à vos tâches Buildkite de s'intégrer de manière native AWS, ce qui garantit sécurité et commodité grâce à des fonctionnalités telles que IAM, AWS Secrets Manager, AWS CloudTrail et Amazon VPC. Vous pouvez accéder aux derniers types d'instances, y compris les instances basées sur ARM.

# À propos du CodeBuild Buildkite Runner hébergé
<a name="buildkite-runner-about"></a>

Voici quelques questions courantes concernant le Buildkite CodeBuild Runner hébergé.

## Quand dois-je inclure les remplacements d'image et d'instance dans l'étiquette ?
<a name="buildkite-runner-about-overrides"></a>

Vous pouvez inclure les remplacements d'image et d'instance dans l'étiquette afin de spécifier un environnement de construction différent pour chacune de vos tâches Buildkite. 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 les tâches Buildkite](https://buildkite.com/docs/pipelines/configure/workflows/build-matrix).

```
agents:
  queue: "myQueue"
steps:
  - command: "echo \"Hello World\""
    agents:
      project: "codebuild-myProject"
      image: "{{matrix.os}}"
      instance-size: "{{matrix.size}}"
    matrix:
      setup:
        os:
          - "arm-3.0"
          - "al2-5.0"
        size:
          - "small"
          - "large"
```

## Est-il possible de CodeBuild créer automatiquement des webhooks dans Buildkite ?
<a name="buildkite-runner-about-auto-create"></a>

Actuellement, Buildkite exige que tous les webhooks soient créés manuellement à l'aide de leur console. Vous pouvez suivre le didacticiel sur [Tutoriel : Configuration d'un CodeBuild moteur Buildkite hébergé](sample-runner-buildkite.md) pour créer un webhook Buildkite manuellement dans la console Buildkite.

## Puis-je les utiliser CloudFormation pour créer des webhooks Buildkite ?
<a name="buildkite-runner-about-cloudformation"></a>

CloudFormation n'est actuellement pas pris en charge pour les webhooks Buildkite Runner, car Buildkite nécessite que les webhooks soient créés manuellement à l'aide de leur console.

## Quelles régions sont compatibles avec l'utilisation d'un CodeBuild Buildkite Runner hébergé ?
<a name="buildkite-runner-about-regions"></a>

CodeBuild- les coureurs Buildkite hébergés sont pris en charge dans toutes les régions. CodeBuild Pour plus d'informations sur AWS les régions où cette CodeBuild option est disponible, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

# Tutoriel : Configuration d'un CodeBuild moteur Buildkite hébergé
<a name="sample-runner-buildkite"></a>

Ce didacticiel vous montre comment configurer vos CodeBuild projets pour exécuter des tâches Buildkite. Pour plus d'informations sur l'utilisation de Buildkite avec CodeBuild , voir. [Buildkite Runner autogéré dans AWS CodeBuild](buildkite-runner.md)<a name="sample-runner-buildkite-prerequisites"></a>

Pour effectuer ce didacticiel, vous devez d'abord :
+ Ayez accès à une organisation Buildkite. Pour plus d'informations sur la configuration d'un compte et d'une organisation Buildkite, vous pouvez suivre ce didacticiel de [démarrage](https://buildkite.com/docs/pipelines/getting-started).
+ Créez un pipeline, un cluster et une file d'attente Buildkite configurés pour utiliser des coureurs auto-hébergés. Pour plus d'informations sur la configuration de ces ressources, vous pouvez consulter le didacticiel de [configuration du pipeline Buildkite](https://buildkite.com/docs/pipelines/create-your-own).  
![\[Construire un projet dans Buildkite\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-first.png)

## Étape 1 : générer un jeton d'agent Buildkite
<a name="w2aac26c33c12c13b7"></a>

Au cours de cette étape, vous allez générer un jeton d'agent dans Buildkite qui sera utilisé pour authentifier les coureurs auto-hébergés. CodeBuild Pour plus d'informations sur cette ressource, consultez [Buildkite Agent](https://buildkite.com/docs/agent/v3/tokens) Tokens. 

**Pour générer un jeton d'agent Buildkite**

1. Dans votre cluster Buildkite, choisissez **Agent Tokens**, puis choisissez **New** Token.

1. Ajoutez une description au jeton et cliquez sur **Créer un jeton**.

1. Enregistrez la valeur du jeton de l'agent, car elle sera utilisée ultérieurement lors de la configuration CodeBuild du projet.  
![\[Jetons d'agent dans Buildkite\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-createtoken.png)

## Étape 2 : Création d'un CodeBuild projet avec un webhook
<a name="sample-runner-buildkite-create-project"></a>

**Pour créer un CodeBuild projet avec un webhook**

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Créez un projet de construction auto-hébergé. Pour plus d’informations, consultez [Création d'un projet de génération (console)](create-project.md#create-project-console) et [Exécution d'une génération (console)](run-build-console.md).
   +  Dans **Configuration du projet**, sélectionnez le **projet Runner**. Dans **Runner** : 
     +  Pour le **fournisseur Runner**, choisissez **Buildkite**.
     + Pour le **jeton d'agent Buildkite**, choisissez **Créer un nouveau jeton d'agent en utilisant la page de création d'un secret**. Vous serez invité à créer un nouveau secret AWS Secrets Manager avec une valeur de secret égale au jeton d'agent Buildkite que vous avez généré ci-dessus.
     + (Facultatif) Si vous souhaitez utiliser des informations d'identification CodeBuild gérées pour votre tâche, sélectionnez le fournisseur du référentiel source de votre tâche dans les **options d'identification source de Buildkite** et vérifiez que les informations d'identification sont configurées pour votre compte. Vérifiez également que votre pipeline Buildkite utilise **Checkout via HTTPS**.
**Note**  
Buildkite nécessite des informations d'identification de source dans l'environnement de construction afin d'extraire le code source de votre tâche. Consultez [Authentification de Buildkite auprès d'un dépôt privé](#sample-runner-buildkite-config) les options d'identification de source disponibles.
   + (Facultatif) Dans **l'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 les étapes YAML de Buildkite. Pour de plus amples informations, veuillez consulter [Étape 4 : Mettez à jour les étapes de votre pipeline Buildkite](#sample-runner-buildkite-update-pipeline).
   + (Facultatif) Dans **Buildspec** : 
     + Votre spécification de construction sera ignorée par défaut à moins qu'elle ne `buildspec-override: "true"` soit 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é.
**Note**  
CodeBuild ne prend pas en charge les fichiers buildspec pour les versions de Runner auto-hébergées par Buildkite. Pour les spécifications de construction en ligne, vous devrez les activer [ git-credential-helper](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper)dans votre spécification de construction si vous avez configuré les informations d'identification des sources gérées CodeBuild 

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

1. Enregistrez l'**URL de charge utile** et les valeurs **secrètes** dans la fenêtre contextuelle **Create Webhook**. Suivez les instructions affichées dans la fenêtre contextuelle pour créer un nouveau webhook d'organisation Buildkite ou passez à la section suivante.

## Étape 3 : créer un CodeBuild webhook dans Buildkite
<a name="sample-runner-buildkite-codebuild-webhook"></a>

Au cours de cette étape, vous utiliserez l'**URL de charge utile** et les valeurs **secrètes** du CodeBuild webhook pour créer un nouveau webhook dans Buildkite. Ce webhook sera utilisé pour déclencher des builds au CodeBuild moment où une tâche Buildkite valide démarre.

**Pour créer un nouveau webhook dans Buildkite**

1. Accédez à la page des **paramètres** de votre organisation Buildkite.

1. Sous **Intégrations**, sélectionnez **Services de notification.**

1. Choisissez **Ajouter** à côté de la zone **Webhook**. Sur la page **Ajouter une notification Webhook**, utilisez la configuration suivante :

   1. Sous **URL du webhook**, ajoutez la valeur de l'**URL de charge utile** enregistrée.

   1. Sous **Jeton**, vérifiez que l'option **Envoyer le jeton sous X-Buildkite-Token** est sélectionnée. Ajoutez la valeur **secrète** de votre webhook dans le champ **Token**.

   1. Sous, vérifiez que l'option **Envoyer le jeton sous X-Buildkite-Token** est sélectionnée. Ajoutez la valeur **secrète** de votre webhook dans le champ **Token**.

   1. Sous **Events**, sélectionnez l'événement `job.scheduled` webhook.

   1. (Facultatif) Sous **Pipelines**, vous pouvez éventuellement choisir de ne déclencher des builds que pour un pipeline spécifique.

1. Choisissez **Ajouter une notification Webhook**.

## Étape 4 : Mettez à jour les étapes de votre pipeline Buildkite
<a name="sample-runner-buildkite-update-pipeline"></a>

Au cours de cette étape, vous allez mettre à jour les étapes de votre pipeline Buildkite afin d'ajouter les étiquettes nécessaires et les remplacements facultatifs. Pour obtenir la liste complète des remplacements d'étiquettes pris en charge, consultez[Les remplacements d'étiquettes sont pris en charge avec le moteur CodeBuild Buildkite Runner hébergé](buildkite-runner-update-labels.md).

**Mettez à jour les étapes de votre pipeline**

1. **Accédez à la page des étapes de votre pipeline Buildkite en sélectionnant votre pipeline Buildkite, en choisissant **Paramètres**, puis en choisissant Étapes.**

   Si ce n'est pas déjà fait, choisissez **Convertir en étapes YAML.**  
![\[Étapes de mise à jour de YAML.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-steps.png)

1. Au minimum, vous devrez spécifier une [balise d'agent Buildkite](https://buildkite.com/docs/agent/v3/cli-start#agent-targeting) faisant référence au nom de votre pipeline. CodeBuild Le nom du projet est nécessaire pour lier les AWS paramètres associés à votre tâche Buildkite à un projet spécifique CodeBuild . En incluant le nom du projet dans le YAML, CodeBuild il est autorisé à invoquer des tâches avec les paramètres de projet corrects.

   ```
   agents:
     project: "codebuild-<project name>"
   ```

   Voici un exemple d'étapes du pipeline Buildkite avec uniquement la balise d'étiquette du projet :

   ```
   agents:
     project: "codebuild-myProject"
   steps:
     - command: "echo \"Hello World\""
   ```

   Vous pouvez également remplacer votre image et le type de calcul dans l'étiquette. Consultez [Calculez les images prises en charge avec le moteur CodeBuild Buildkite Runner hébergé](buildkite-runner-update-yaml.images.md) la liste des images disponibles. Le type de calcul et l'image figurant dans l'étiquette remplaceront les paramètres d'environnement de votre projet. Pour remplacer les paramètres de votre environnement pour une version de calcul CodeBuild EC2 ou Lambda, utilisez la syntaxe suivante :

   ```
   agents:
     project: "codebuild-<project name>"
     image: "<environment-type>-<image-identifier>"
     instance-size: "<instance-size>"
   ```

   Voici un exemple d'étapes du pipeline Buildkite avec des remplacements de taille d'image et d'instance :

   ```
   agents:
     project: "codebuild-myProject"
     image: "arm-3.0"
     instance-size: "small"
   steps:
     - command: "echo \"Hello World\""
   ```

   Vous pouvez remplacer le parc utilisé pour votre construction dans l'étiquette. Cela remplacera les paramètres de flotte configurés dans votre projet pour utiliser le parc spécifié. Pour plus d'informations, voir [Exécuter des builds sur des flottes de capacité réservée](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html).

   Pour remplacer les paramètres de votre flotte pour une version de calcul Amazon EC2, utilisez la syntaxe suivante :

   ```
   agents:
     project: "codebuild-<project name>"
     fleet: "<fleet-name>"
   ```

   Pour remplacer à la fois la flotte et l'image utilisées pour la génération, utilisez la syntaxe suivante :

   ```
   agents:
     project: "codebuild-<project name>"
     fleet: "<fleet-name>"
     image: "<environment-type>-<image-identifier>"
   ```

   Voici un exemple d'étapes du pipeline Buildkite avec des remplacements de flotte et d'image :

   ```
   agents:
     project: "codebuild-myProject"
     fleet: "myFleet"
     image: "arm-3.0"
   steps:
     - command: "echo \"Hello World\""
   ```

1. Vous pouvez choisir d'exécuter des commandes buildspec en ligne lors de la version auto-hébergée de Buildkite Runner (voir pour plus de détails). [Exécutez les commandes buildspec pour les phases INSTALL, PRE\$1BUILD et POST\$1BUILD](sample-runner-buildkite-buildspec.md) Pour spécifier que le CodeBuild build doit exécuter les commandes buildspec lors de votre build d'exécution auto-hébergé par Buildkite, utilisez la syntaxe suivante :

   ```
   agents:
     project: "codebuild-<project name>"
     buildspec-override: "true"
   ```

   Voici un exemple de pipeline Buildkite avec une dérogation buildspec :

   ```
   agents:
     project: "codebuild-myProject"
     buildspec-override: "true"
   steps:
     - command: "echo \"Hello World\""
   ```

1. 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 elles n'échoueront pas à la demande de webhook. Par exemple, l'ajout `myLabel: “testLabel"` d'une étiquette n'empêchera pas le build de s'exécuter.

## Étape 5 : Passez en revue vos résultats
<a name="sample-runner-buildkite-verify"></a>

Chaque fois qu'une tâche Buildkite est lancée dans votre pipeline, vous CodeBuild recevrez un événement webhook via le `job.scheduled` webhook Buildkite. Pour chaque tâche de votre build de Buildkite, une version CodeBuild sera lancée pour exécuter un Runner Buildkite éphémère. Le coureur est responsable de l'exécution d'une seule tâche Buildkite. 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, accédez à votre pipeline Buildkite et sélectionnez la version la plus récente (vous pouvez déclencher une nouvelle version en choisissant **Nouvelle version**). Une fois que le CodeBuild build associé à chacune de vos tâches démarre et reprend la tâche, vous devriez voir les journaux de la tâche dans la console Buildkite

![\[Passez en revue les résultats.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-log.png)


## Authentification de Buildkite auprès d'un dépôt privé
<a name="sample-runner-buildkite-config"></a>

Si vous avez configuré un dépôt privé dans votre pipeline Buildkite, Buildkite a besoin d'[autorisations supplémentaires dans l'environnement de construction pour extraire le](https://buildkite.com/docs/agent/v3/github-ssh-keys) référentiel, car Buildkite ne vend pas d'informations d'identification à des exécuteurs auto-hébergés pour les extraire des référentiels privés. Pour authentifier l'agent Runner auto-hébergé par Buildkite auprès de votre référentiel source privé externe, vous pouvez utiliser l'une des options suivantes.

**Pour vous authentifier auprès de CodeBuild**

CodeBuild propose une gestion des informations d'identification gérées pour les types de sources pris en charge. Pour utiliser les informations d'identification CodeBuild source pour extraire le référentiel source de votre tâche, vous pouvez suivre les étapes suivantes :

1. Dans la CodeBuild console, accédez à **Modifier le projet** ou créez un nouveau CodeBuild projet en suivant les étapes décrites dans[Étape 2 : Création d'un CodeBuild projet avec un webhook](#sample-runner-buildkite-create-project).

1. Sous les **options d'identification source de Buildkite**, sélectionnez le fournisseur du référentiel source de votre tâche.

   1. Si vous souhaitez utiliser les informations d' CodeBuild identification au niveau du compte, vérifiez qu'elles sont correctement configurées. De plus, si une spécification de construction en ligne est configurée dans votre projet, vérifiez qu'elle est activée. [ git-credential-helper](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper)

   1. Si vous souhaitez utiliser les informations d' CodeBuild identification au niveau du projet, sélectionnez **Utiliser les informations d'identification de remplacement pour ce projet uniquement** et configurez les informations d'identification pour votre projet.

1. Dans les paramètres de votre pipeline Buildkite, accédez aux paramètres **du référentiel**. Définissez les paramètres de récupération de votre référentiel source sur **Checkout via HTTPS**  
![\[Passez en revue les résultats.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-repo-https.png)

**Pour vous authentifier avec les secrets de Buildkite**

Buildkite gère un [plugin ssh-checkout](https://github.com/buildkite-plugins/git-ssh-checkout-buildkite-plugin) qui peut être utilisé pour authentifier le runner auto-hébergé auprès d'un référentiel source externe à l'aide d'une clé ssh. La valeur clé est stockée sous forme de [secret Buildkite](https://buildkite.com/docs/pipelines/security/secrets/buildkite-secrets) et récupérée automatiquement par l'agent Runner auto-hébergé par Buildkite lorsqu'il tente d'extraire un dépôt privé. Afin de configurer le plugin ssh-checkout pour votre pipeline Buildkite, vous pouvez suivre les étapes suivantes :

1. Générez une clé SSH privée et publique en utilisant votre adresse e-mail, par exemple `ssh-keygen -t rsa -b 4096 -C "myEmail@address.com"`

1. Ajoutez la clé publique à votre référentiel source privé. Par exemple, vous pouvez suivre [ce guide](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account) pour ajouter une clé à un GitHub compte.

1. Ajoutez une [nouvelle clé secrète SSH](https://buildkite.com/docs/pipelines/hosted-agents/code-access#private-repositories-with-other-providers-add-the-ssh-key-secret) à votre cluster Buildkite. Dans votre cluster Buildkite, sélectionnez **Secrets** → **Nouveau** secret. Donnez un nom à votre secret dans le champ **Clé** et ajoutez votre clé SSH privée dans le champ **Valeur** :  
![\[Passez en revue les résultats.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-secret.png)

1. **Dans votre pipeline Buildkite, accédez aux paramètres de votre dépôt et configurez le checkout pour qu'il utilise SSH.**  
![\[Passez en revue les résultats.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-repo.png)

1. Mettez à jour les étapes YAML de votre pipeline pour utiliser le `git-ssh-checkout` plugin. Par exemple, le fichier YAML de pipeline suivant utilise l'action de paiement avec la clé secrète Buildkite ci-dessus :

   ```
   agents:
     project: "codebuild-myProject"
   steps:
     - command: "npm run build"
       plugins:
         - git-ssh-checkout#v0.4.1:
             ssh-secret-key-name: 'SOURCE_SSH_KEY'
   ```

1. Lorsque vous exécutez une tâche d'exécution auto-hébergée par Buildkite dans Buildkite CodeBuild, Buildkite utilise désormais automatiquement votre valeur secrète configurée lors de l'extraction de votre dépôt privé

## Options de configuration du coureur
<a name="sample-buildkite-runner-auth"></a>

Vous pouvez spécifier les variables d'environnement suivantes dans la configuration de votre projet pour modifier la configuration de vos coureurs auto-hébergés :
+ `CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN`: CodeBuild récupérera la valeur secrète configurée comme valeur de cette variable d'environnement afin d'enregistrer l' AWS Secrets Manager agent d'exécution auto-hébergé par Buildkite. Cette variable d'environnement doit être de type `SECRETS_MANAGER` et sa valeur doit être le nom de votre secret dans Secrets Manager. Une variable d'environnement de jeton d'agent Buildkite est requise pour tous les projets Buildkite Runner.
+ `CODEBUILD_CONFIG_BUILDKITE_CREDENTIAL_DISABLE`: Par défaut, CodeBuild chargera les informations d'identification source au niveau du compte ou du projet dans l'environnement de construction, car ces informations d'identification sont utilisées par l'agent Buildkite pour extraire le référentiel source de la tâche. Pour désactiver ce comportement, vous pouvez ajouter cette variable d'environnement à votre projet avec la valeur définie sur`true`, ce qui empêchera le chargement des informations d'identification de la source dans l'environnement de génération.

# Exécutez les commandes buildspec pour les phases INSTALL, PRE\$1BUILD et POST\$1BUILD
<a name="sample-runner-buildkite-buildspec"></a>

Par défaut, CodeBuild ignore les commandes buildspec lors de l'exécution d'une version auto-hébergée de Buildkite Runner. Pour exécuter les commandes buildspec pendant la construction, 

```
buildspec-override: "true"
```

 peut être ajouté en tant que suffixe à l'étiquette :

```
agents:
  project: "codebuild-<project name>"
  buildspec-override: "true"
```

En utilisant cette commande, CodeBuild vous créerez un dossier appelé `buildkite-runner` dans le dossier source principal du conteneur. Lorsque le lanceur Buildkite démarre pendant la `BUILD` phase, il s'exécute dans le `buildkite-runner` répertoire.

L'utilisation d'un override buildspec dans une version Buildkite auto-hébergée présente plusieurs limites :
+ L'agent Buildkite nécessite que les informations d'identification de la source existent dans l'environnement de construction pour extraire le référentiel source de la tâche. Si vous utilisez les informations d'identification de la CodeBuild source pour l'authentification, vous devrez les activer `git-credential-helper` dans votre buildspec. Par exemple, vous pouvez utiliser les spécifications de construction suivantes `git-credential-helper` pour activer vos versions de Buildkite :

  ```
  version: 0.2
  env:
    git-credential-helper: yes
  phases:
    pre_build:
      commands:
         - echo "Hello World"
  ```
+ CodeBuild n'exécutera pas de commandes buildspec pendant la `BUILD` phase, car le lanceur auto-hébergé s'exécute pendant la phase. `BUILD`
+ CodeBuild ne prend pas en charge les fichiers buildspec pour les versions de Buildkite Runner. Seules les spécifications de construction en ligne sont prises en charge pour les coureurs auto-hébergés par Buildlkite
+ Si une commande de construction échoue pendant la `INSTALL` phase `PRE_BUILD` ou, elle ne CodeBuild démarrera pas le lanceur auto-hébergé et la tâche Buildkite devra être annulée manuellement.

# Configuration d'un Buildkite Runner par programmation
<a name="sample-runner-buildkite-CLI"></a>

Pour configurer un projet Buildkite Runner par programmation, vous devez configurer les ressources suivantes :

**Pour créer un Runner Buildkite par programmation**

1. Créez un jeton d'agent Buildkite et enregistrez-le en texte clair à l'intérieur. AWS Secrets Manager

1. Configurez un CodeBuild projet avec la configuration de votre choix. Vous devrez configurer les attributs supplémentaires suivants :

   1. Une valeur d'environnement dont le nom`CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN`, le type `SECRETS_MANAGER` et une valeur sont égaux au jeton d'agent Buildkite associé à votre cluster Buildkite.

   1. Type de source égal à `NO_SOURCE`

   1. Autorisations d'accès au secret créé à l'étape 1 dans le rôle de service de votre projet

   Par exemple, vous pouvez utiliser la commande suivante pour créer un projet Buildkite Runner valide via la CLI :

   ```
   aws codebuild create-project \
   --name buildkite-runner-project \
   --source "{\"type\": \"NO_SOURCE\",\"buildspec\":\"\"}" \
   --environment "{\"image\":\"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"type\":\"LINUX_CONTAINER\",\"computeType\":\"BUILD_GENERAL1_MEDIUM\",\"environmentVariables\":[{\"name\":\"CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN\",\"type\":\"SECRETS_MANAGER\",\"value\":\"<buildkite-secret-name>\"}]}" \
   --artifacts "{\"type\": \"NO_ARTIFACTS\"}" \
   --service-role <service-role>
   ```

1. Créez un webhook Buildkite Runner sur le projet créé à l'étape 2. Vous devrez utiliser les options de configuration suivantes lors de la création du webhook :

   1. **build-type** doit être égal à `RUNNER_BUILDKITE_BUILD`

   1. Un filtre dont le type `EVENT` et le motif sont égaux à `WORKFLOW_JOB_QUEUED` 

   Par exemple, vous pouvez utiliser la commande suivante pour créer un webhook Buildkite Runner valide via la CLI :

   ```
   aws codebuild create-webhook \
   --project-name buildkite-runner-project \
   --filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]" \
   --build-type RUNNER_BUILDKITE_BUILD
   ```

1. Enregistrez l'**URL de charge utile** et les valeurs **secrètes** renvoyées par l'`create-webhook`appel et utilisez les informations d'identification pour créer un webhook dans la console Buildkite. Vous pouvez consulter l'étape 3 : Créer un CodeBuild webhook dans Buildkite [Tutoriel : Configuration d'un CodeBuild moteur Buildkite hébergé](sample-runner-buildkite.md) pour obtenir un guide sur la façon de configurer cette ressource.

# Résoudre les problèmes liés au webhook en cas d'échec des builds ou d'une tâche bloquée
<a name="buildkite-runner-troubleshoot-webhook"></a>

 **Problème: ** 

Le webhook que vous avez configuré ne fonctionne [Tutoriel : Configuration d'un CodeBuild moteur Buildkite hébergé](sample-runner-buildkite.md) pas ou votre tâche de flux de travail est bloquée dans Buildkite.

 **Causes possibles :** 
+ Votre événement webhook **job.scheduled** 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.
+ Votre CodeBuild build échoue avant que l'agent de course auto-hébergé par Buildkite ne démarre pour s'occuper de votre travail.

 **Solutions recommandées :** 

Pour déboguer les événements du webhook Buildkite ayant échoué, procédez comme suit :

1. **Dans les paramètres de votre organisation Buildkite, accédez aux **services de notification**, sélectionnez votre CodeBuild webhook, puis recherchez le journal des demandes.**

1. Trouvez l'événement `job.scheduled` webhook associé à votre tâche Buildkite bloquée. Vous pouvez utiliser le champ ID de tâche dans la charge utile du webhook pour corréler l'événement du webhook à votre tâche Buildkite.

1. Sélectionnez l'onglet **Réponse** et vérifiez le corps de la réponse. Vérifiez que le code d'état de la **réponse** est `200` valide et que le corps de la **réponse** ne contient aucun message inattendu.  
![\[Réponse pour le webhook.\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/images/buildkite-request.png)

# Résoudre les problèmes d'autorisation du webhook
<a name="buildkite-runner-troubleshoot-webhook-permissions"></a>

 **Problème: ** 

La tâche Buildkite ne parvient pas à extraire le référentiel source de la tâche en raison de problèmes d'autorisation.

 **Causes possibles :** 
+ CodeBuild ne dispose pas des autorisations suffisantes pour extraire le référentiel source de la tâche.
+ Les paramètres du référentiel du pipeline sont définis pour être extraits à l'aide de SSH pour les informations d'identification CodeBuild gérées.

 **Solutions recommandées :** 
+ Vérifiez que CodeBuild les autorisations configurées sont suffisantes pour consulter le référentiel source de la tâche. Vérifiez également que le rôle de service de votre CodeBuild projet dispose d'autorisations suffisantes pour accéder à l'option d'autorisation source configurée.
+ Vérifiez que votre pipeline Buildkite est configuré pour utiliser le paiement via HTTPS si vous utilisez les informations d'identification du référentiel source CodeBuild géré.

# Les remplacements d'étiquettes sont pris en charge avec le moteur CodeBuild Buildkite Runner hébergé
<a name="buildkite-runner-update-labels"></a>

Dans les étiquettes d'agent de votre pipeline Buildkite Steps, vous pouvez fournir une variété de remplacements d'étiquettes qui modifient votre version de course auto-hébergée. Toutes les versions non reconnues par CodeBuild seront ignorées mais n'échoueront pas à votre demande de webhook. Par exemple, le flux de travail YAML suivant inclut des remplacements pour l'image, la taille de l'instance, le parc et les spécifications de construction :

```
agents:
  queue: "myQueue"
steps:
  - command: "echo \"Hello World\""
    agents:
      project: "codebuild-myProject"
      image: "{{matrix.os}}"
      instance-size: "{{matrix.size}}"
      buildspec-override: "true"
    matrix:
      setup:
        os:
          - "arm-3.0"
          - "al2-5.0"
        size:
          - "small"
          - "large"
```

 `project:codebuild-<project-name>` (obligatoire)
+ Exemple : `project: "codebuild-myProject"`
+ Nécessaire pour toutes les configurations d'étapes du pipeline Buildkite. *<project name>*doit être égal au nom du projet pour lequel le runner webhook auto-hébergé est configuré.

`queue: "<queue-name>"`
+ Exemple : `queue: "<queue-name>"`
+ Utilisé pour acheminer les tâches Buildkite vers une file d'attente spécifique. Consultez le [tag Buildkite Agent Queue](https://buildkite.com/docs/agent/v3/cli-start#the-queue-tag) pour plus d'informations.

 `image: "<environment-type>-<image-identifier>"` 
+ Exemple : `image: "arm-3.0"`
+ Remplace l'image et le type d'environnement utilisés lors du démarrage de la version auto-hébergée par Runner avec une image organisée. Pour en savoir plus sur les valeurs prises en charge, consultez[Calculez les images prises en charge avec le moteur CodeBuild Buildkite Runner hébergé](buildkite-runner-update-yaml.images.md).

  1. Pour remplacer l'image et le type d'environnement utilisés par une image personnalisée, utilisez `image: "custom-<environment-type>-<custom-image-identifier>"`

  1. Exemple : 

     ```
     image:
           "custom-arm-public.ecr.aws/codebuild/amazonlinux-aarch64-standard:3.0"
     ```
**Note**  
Si l'image personnalisée réside dans un registre privé, vous devez configurer les informations d'identification de registre appropriées dans votre CodeBuild projet.

`instance-size: "<instance-size>"`
+ Exemple : `instance-size: "medium"`
+ Remplace le type d'instance utilisé lors du démarrage de la version de course auto-hébergée. Pour en savoir plus sur les valeurs prises en charge, consultez[Calculez les images prises en charge avec le moteur CodeBuild Buildkite Runner hébergé](buildkite-runner-update-yaml.images.md).

`fleet: "<fleet-name>"`
+ Exemple : `fleet: "myFleet"`
+ Remplace les paramètres de flotte configurés dans votre projet pour utiliser le parc spécifié. Pour plus d'informations, voir [Exécuter des builds sur des flottes de capacité réservée](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html).

`buildspec-override: "<boolean>"`
+ Exemple : `buildspec-override: "true"`
+ Permet à la compilation d'exécuter des commandes buildspec dans les `POST_BUILD` phases `INSTALL``PRE_BUILD`, et si elle est définie sur. `true`

# Calculez les images prises en charge avec le moteur CodeBuild Buildkite Runner hébergé
<a name="buildkite-runner-update-yaml.images"></a>

Dans l'étiquette que vous avez configurée[Buildkite Runner autogéré dans AWS CodeBuild](buildkite-runner.md), vous pouvez remplacer 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. Pour plus d'informations sur 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/buildkite-runner-update-yaml.images.html)

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. [Exécuter des builds sur AWS Lambda ordinateur](lambda.md) CodeBuild prend en charge les images de calcul Lambda suivantes :

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codebuild/latest/userguide/buildkite-runner-update-yaml.images.html)

Pour plus d'informations, consultez [Modes et types de calcul de l'environnement de création](build-env-ref-compute-types.md) et [Images Docker fournies par CodeBuild](build-env-ref-available.md).