View a markdown version of this page

Tutoriel : Configuration d'un moteur CodeBuild-hosted Buildkite - 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.

Tutoriel : Configuration d'un moteur CodeBuild-hosted Buildkite

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 , consultez. Self-managed Buildkite Runner dans AWS CodeBuild

Pour effectuer ce didacticiel, vous devez d'abord :

  • Accédez à 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.

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

    Créer un projet dans Buildkite

Étape 1 : générer un jeton d'agent Buildkite

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

Pour générer un jeton d'agent Buildkite
  1. Dans votre cluster Buildkite, choisissez Agent Tokens, puis New Token.

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

  3. Enregistrez la valeur du jeton d'agent, car elle sera utilisée ultérieurement lors de la configuration CodeBuild du projet.

    Jetons d'agent dans Buildkite

Étape 2 : Création d'un CodeBuild projet avec un webhook

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 construction auto-hébergé. 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 Configuration du projet, sélectionnez Runner project. Dans Runner  :

      • Pour le fournisseur Runner, choisissez Buildkite.

      • Pour le jeton d'agent Buildkite, choisissez Créer un nouveau jeton d'agent à l'aide de la page de création d'un secret. Vous serez invité à créer un nouveau secret AWS Secrets Manager avec une valeur secrète é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 la source dans l'environnement de génération pour extraire la source de votre travail. Consultez Authentification de Buildkite dans un référentiel privé les options d'identification de la source disponibles.

    • (Facultatif) Dans l'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 les étapes YAML de Buildkite. Pour de plus amples informations, veuillez consulter Étape 4 : Mettez à jour les étapes de votre pipeline Buildkite.

    • (Facultatif) Dans Buildspec  :

      • Votre buildspec 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 builds de runner auto-hébergés par Buildkite. Pour les spécifications de construction en ligne, vous devrez activer git-credential-helper dans votre buildspec si vous avez configuré des informations d'identification source gérées CodeBuild

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

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

Étape 3 : Création d'un CodeBuild webhook dans Buildkite

Au cours de cette étape, vous allez utiliser l'URL de la 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. Ouvrez la page des paramètres de votre organisation Buildkite.

  2. Sous Intégrations, sélectionnez Services de notification.

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

    1. Sous URL Webhook, ajoutez la valeur URL de charge utile enregistrée.

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

    3. Dans, vérifiez que l'option Envoyer le jeton tel X-Buildkite-Token quel est sélectionnée. Ajoutez la valeur secrète de votre webhook au champ Token.

    4. Dans Événements, sélectionnez l'événement job.scheduled Webhook.

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

  4. Choisissez Ajouter une notification Webhook.

Étape 4 : Mettez à jour les étapes de votre pipeline Buildkite

Au cours de cette étape, mettez à jour les étapes de votre pipeline Buildkite pour ajouter les étiquettes nécessaires et les remplacements facultatifs. Pour la liste complète des remplacements d'étiquettes pris en charge, consultezLes remplacements d'étiquettes sont pris en charge avec le CodeBuild-hosted Buildkite Runner.

Mettez à jour les étapes de votre pipeline
  1. Ouvrez la page des étapes du pipeline Buildkite en choisissant 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 pour mettre à jour YAML.
  2. Au minimum, vous devrez spécifier une balise d'agent Buildkite 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 de votre tâche Buildkite à un projet spécifique CodeBuild . 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.

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

    Voici un exemple des é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 votre type de calcul dans l'étiquette. Consultez Calculez les images prises en charge par le moteur CodeBuild-hosted Buildkite 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 modifier 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 des é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 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 plus d'informations, voir Exécuter 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 :

    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 des é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\""
  3. Vous pouvez choisir d'exécuter des commandes buildspec en ligne pendant la compilation auto-hébergée de Buildkite Runner (voir pour plus de détails). Exécutez les commandes buildspec pour les phases INSTALL, PRE_BUILD et POST_BUILD Pour spécifier que la CodeBuild version doit exécuter les commandes buildspec lors de la construction de votre runner auto-hébergé Buildkite, utilisez la syntaxe suivante :

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

    Voici un exemple de pipeline Buildkite avec un remplacement buildspec :

    agents: project: "codebuild-myProject" buildspec-override: "true" steps: - command: "echo \"Hello World\""
  4. 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 myLabel: "testLabel" tant qu'étiquette n'empêchera pas l'exécution de la compilation.

Étape 5 : Passez en revue vos résultats

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 Buildkite, CodeBuild vous lancerez un build pour exécuter un lanceur Buildkite éphémère. Le runner est responsable de l'exécution d'une seule tâche Buildkite. 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, accédez à votre pipeline Buildkite et sélectionnez la version la plus récente (vous pouvez déclencher une nouvelle version en choisissant New Build). Une fois que la CodeBuild compilation associée à 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.

Authentification de Buildkite dans un référentiel privé

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 référentiel, car Buildkite ne transmet pas d'informations d'identification aux coureurs auto-hébergés pour les extraire de référentiels privés. Afin d'authentifier l'agent Runner auto-hébergé 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 gérée des informations d'identification pour les types de sources pris en charge. Pour utiliser les informations d'identification de la 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.

  2. Dans les options d'identification de la source Buildkite, sélectionnez le fournisseur du référentiel source de votre tâche.

    1. Si vous souhaitez utiliser des 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 pour votre projet, vérifiez que https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper git-credential-helper est activé.

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

  3. Dans les paramètres de votre pipeline Buildkite, accédez aux paramètres du référentiel. Définissez les paramètres de paiement de votre référentiel source sur Checkout via HTTPS

    Passez en revue les résultats.
Pour vous authentifier à l'aide des secrets Buildkite

Buildkite gère un plugin ssh-checkout 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 de la clé est stockée en tant que secret Buildkite et récupérée automatiquement par l'agent d'exécution auto-hébergé Buildkite lors de la tentative d'extraction d'un référentiel 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 ex. ssh-keygen -t rsa -b 4096 -C "myEmail@address.com"

  2. Ajoutez la clé publique à votre référentiel de sources privé. Par exemple, vous pouvez suivre ce guide pour ajouter une clé à un GitHub compte.

  3. Ajoutez une nouvelle clé secrète SSH à 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.
  4. Dans votre pipeline Buildkite, accédez aux paramètres de votre référentiel et configurez le paiement pour utiliser SSH.

    Passez en revue les résultats.
  5. 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 retrait 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'
  6. Lorsque vous exécutez une tâche d'exécution auto-hébergée dans Buildkite CodeBuild, Buildkite utilise désormais automatiquement la valeur secrète que vous avez configurée lors de l'extraction de votre référentiel privé

Options de configuration des coureurs

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_BUILDKITE_AGENT_TOKEN: CodeBuild récupérera la valeur secrète configurée comme valeur de cette variable d'environnement AWS Secrets Manager afin d'enregistrer l'agent runner auto-hébergé 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 Buildkite Agent Token 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 génération, 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 surtrue, ce qui empêchera le chargement des informations d'identification de la source dans l'environnement de génération.