GitHub événements webhook - 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.

GitHub événements webhook

Vous pouvez utiliser des groupes de filtres Webhook pour spécifier quels événements GitHub Webhook déclenchent une compilation. Par exemple, vous pouvez spécifier qu'une construction n'est déclenchée que pour les modifications apportées à des branches spécifiques.

Vous pouvez créer un ou plusieurs des groupes de filtres webhook pour spécifier les événements webhook qui déclenchent une génération. Une génération est déclenchée si un groupe de filtres est évalué comme vrai, ce qui se produit lorsque tous les filtres du groupe sont évalués comme vrais. Lorsque vous créez un groupe de filtres, vous spécifiez :

Un événement

En GitHub effet, vous pouvez choisir un ou plusieurs des événements suivants : PUSHPULL_REQUEST_CREATED,PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENEDPULL_REQUEST_MERGED,PULL_REQUEST_CLOSED,RELEASED,PRERELEASED, etWORKFLOW_JOB_QUEUED. Le type d’événement du webhook est situé dans l’en-tête X-GitHub-Event de la charge utile du webhook. Dans l’en-tête X-GitHub-Event, vous pourriez voir pull_request ou push. Pour un événement de demande d’extraction, le type se situe dans le champ action de la charge utile d’événement du webhook. Le tableau suivant présente le mappage des valeurs de l’en-tête X-GitHub-Event et des valeurs du champ action de la charge utile de la demande d’extraction du webhook aux types d’événements disponibles.

Valeur d'en-tête X-GitHub-Event Valeur action de la charge utile de l’événement du webhook Type d’événement
pull_request opened PULL_REQUEST_CREATED
pull_request reopened PULL_REQUEST_REOPENED
pull_request synchronize PULL_REQUEST_UPDATED
pull_request closed et le champ merged est true PULL_REQUEST_MERGED
pull_request closed et le champ merged est false PULL_REQUEST_CLOSED
push N/A PUSH
release publié RELEASED
release pré-publié PRERELEASED
workflow_job queued WORKFLOW_JOB_QUEUED
Note

Le type d'PULL_REQUEST_REOPENEDévénement ne peut être utilisé qu'avec un GitHub serveur GitHub d'entreprise. Le type d'WORKFLOW_JOB_QUEUEDévénement RELEASEDPRERELEASED, et ne peut être utilisé GitHub qu'avec. Pour plus d'informations sur WORKFLOW_JOB_QUEUED, consultez Tutoriel : Configuration d'un CodeBuild exécuteur d' GitHub actions auto-hébergé.

Un ou plusieurs filtres optionnels

Utilisez une expression régulière pour spécifier un filtre. Pour qu'un événement déclenche une génération, chaque filtre du groupe qui lui est associé doit avoir la valeur true.

ACTOR_ACCOUNT_ID(ACTOR_IDdans la console)

Un événement webhook déclenche une compilation lorsqu'un identifiant de compte GitHub ou un identifiant de compte GitHub Enterprise Server correspond au modèle d'expression régulière. Cette valeur se situe dans la propriété id de l’objet sender dans la charge utile du webhook.

HEAD_REF

Un événement webhook déclenche une construction lorsque la référence principale correspond au modèle d'expression régulière (par exemple, refs/heads/branch-name ourefs/tags/tag-name). Pour un événement d’extraction, le nom de référence est situé dans la propriété ref de la charge utile du webhook. Pour les événements de demande d’extraction, le nom de la branche est situé dans la propriété ref de l’objet head dans la charge utile du webhook.

BASE_REF

Un événement webhook déclenche une construction lorsque la référence de base correspond au modèle d'expression régulière (par exemple,refs/heads/branch-name). Un filtre BASE_REF ne peut être utilisé qu’avec des événements de demande d’extraction. Le nom de la branche se situe dans la propriété ref de l’objet base dans la charge utile du webhook.

FILE_PATH

Un webhook déclenche une compilation lorsque le chemin d'un fichier modifié correspond au modèle d'expressions régulières. Un FILE_PATH filtre peut être utilisé avec les événements de requêtes GitHub push et pull et les événements push GitHub d'Enterprise Server. Il ne peut pas être utilisé avec les événements de pull request d' GitHubEnterprise Server.

COMMIT_MESSAGE

Un webhook déclenche une compilation lorsque le message de validation principal correspond au modèle d'expression régulière. Un COMMIT_MESSAGE filtre peut être utilisé avec les événements de requêtes GitHub push et pull et les événements push GitHub d'Enterprise Server. Il ne peut pas être utilisé avec les événements de pull request d' GitHubEnterprise Server.

TAG_NAME

Un webhook déclenche une compilation lorsque le nom de balise de la version correspond au modèle d'expression régulière. Un TAG_NAME filtre peut être utilisé avec les événements de demande GitHub publiés et prépubliés.

RELEASE_NAME

Un webhook déclenche une compilation lorsque le nom de la version correspond au modèle d'expression régulière. Un RELEASE_NAME filtre peut être utilisé avec les événements de demande GitHub publiés et prépubliés.

WORKFLOW_NAME

Un webhook déclenche une compilation lorsque le nom du flux de travail correspond au modèle d'expression régulière. Un WORKFLOW_NAME filtre peut être utilisé avec les événements de demande de travail en file d'attente du flux de travail GitHub Actions.

Note

Vous pouvez trouver la charge utile du webhook dans les paramètres du webhook de votre dépôt. GitHub

Filtrer les événements du GitHub webhook (console)

Dans Événements webhook de la source principale, sélectionnez ce qui suit. Cette section n'est disponible que lorsque vous avez choisi Repository dans mon GitHub compte pour le référentiel source.

  1. Sélectionnez Rebuild every time a code change is pushed to this repository (Reconstruire à chaque fois qu'une modification de code est transférée dans ce référentiel) lorsque vous créez votre projet.

  2. Dans Event type (Type d'événement), choisissez un ou plusieurs événements.

  3. Pour filtrer le moment où un événement déclenche une génération, sous Start a build under these conditions (Lancer une génération dans ces conditions), ajoutez un ou plusieurs filtres facultatifs.

  4. Pour filtrer le moment où un événement n'est pas déclenché, sous Don't start a build under these conditions (Ne pas lancer de génération dans ces conditions), ajoutez un ou plusieurs filtres facultatifs.

  5. Choisissez Ajouter un groupe de filtres pour ajouter un autre groupe de filtres, si nécessaire.

Pour plus d'informations, consultez Création d'un projet de génération (console) et WebhookFilterdans le Guide de référence des AWS CodeBuild API.

Dans cet exemple, un groupe de filtres webhook déclenche une génération pour des demandes d'extraction uniquement :

Dans cet exemple de deux groupes de filtres webhook, une génération est déclenchée lorsque l'un des deux ou les deux prennent la valeur true :

  • Le premier groupe de filtres spécifie les demandes d'extraction créées, mises à jour ou rouvertes sur des branches avec des noms de référence Git qui correspondent à l'expression régulière ^refs/heads/main$ et des références principales qui correspondent à ^refs/heads/branch1$.

  • Le deuxième groupe de filtres spécifie des demandes de transmission sur des branches avec des noms de référence Git qui correspondent à l'expression régulière ^refs/heads/branch1$.

Dans cet exemple, un groupe de filtres webhook déclenche une génération pour toutes les demandes à l'exception des événements de balise.

Dans cet exemple, un groupe de filtres webhook déclenche une génération uniquement lorsque les fichiers dont les noms correspondent à l'expression régulière ^buildspec.* changent.

Dans cet exemple, un groupe de filtres Webhook déclenche une compilation uniquement lorsque des fichiers sont modifiés dans src ou test des dossiers.

Dans cet exemple, un groupe de filtres Webhook déclenche une génération uniquement lorsqu'une modification est apportée par un utilisateur spécifié GitHub ou par un utilisateur d' GitHub Enterprise Server dont l'ID de compte correspond à l'expression actor-account-id régulière.

Note

Pour savoir comment trouver l'identifiant de votre GitHub compte, consultez https://api.github.com/users/ nom d'utilisateur, où nom d'utilisateur est votre nom GitHub d'utilisateur.

Dans cet exemple, un groupe de filtres webhook déclenche une génération pour un événement de transmission lorsque le message de validation principal correspond à l'expression régulière \[CodeBuild\].

Dans cet exemple, un groupe de filtres Webhook déclenche une génération pour les événements de travail du flux de travail GitHub Actions uniquement.

Note

CodeBuild ne traitera les 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 cet exemple, un groupe de filtres Webhook déclenche une génération pour un nom de flux de travail qui correspond à l'expression CI-CodeBuild régulière.

Filtrer les événements du GitHub webhook (SDK)

Pour utiliser le AWS CodeBuild SDK afin de filtrer les événements Webhook, utilisez le filterGroups champ dans la syntaxe de demande des méthodes CreateWebhook ou de l'UpdateWebhookAPI. Pour plus d'informations, consultez WebhookFilterla référence de CodeBuild l'API.

Pour créer un filtre webhook qui déclenche une génération pour des demandes d'extraction uniquement, insérez les éléments suivants dans la syntaxe de demande :

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" } ] ]

Pour créer un filtre webhook qui déclenche une génération pour des branches spécifiées uniquement, utilisez le paramètre pattern pour spécifier une expression régulière pour filtrer les noms de branche. Dans cet exemple de deux groupes de filtres, une génération est déclenchée lorsqu'un des deux prend la valeur true :

  • Le premier groupe de filtres spécifie les demandes d'extraction créées, mises à jour ou rouvertes sur des branches avec des noms de référence Git qui correspondent à l'expression régulière ^refs/heads/main$ et des références principales qui correspondent à ^refs/heads/myBranch$.

  • Le deuxième groupe de filtres spécifie des demandes de transmission sur des branches avec des noms de référence Git qui correspondent à l'expression régulière ^refs/heads/myBranch$.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" }, { "type": "BASE_REF", "pattern": "^refs/heads/main$" } ], [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" } ] ]

Vous pouvez utiliser le paramètre excludeMatchedPattern pour spécifier les événements qui ne déclenchent pas une génération. Dans cet exemple, une génération est déclenchée pour toutes les demandes sauf les événements de balise.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]

Vous pouvez créer un filtre qui déclenche une génération uniquement lorsque les fichiers dont les noms correspondent à l'expression régulière dans l'argument pattern changent. Dans cet exemple, le groupe de filtres spécifie qu'une génération est déclenchée uniquement lorsque les fichiers dont les noms correspondent à l'expression régulière ^buildspec.* changent.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^buildspec.*" } ] ]

Dans cet exemple, le groupe de filtres indique qu'une compilation est déclenchée uniquement lorsque des fichiers sont modifiés dans src ou test des dossiers.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^src/.+|^test/.+" } ] ]

Vous pouvez créer un filtre qui déclenche une génération uniquement lorsqu'une modification est apportée par un utilisateur spécifié GitHub ou par un utilisateur GitHub Enterprise Server doté d'un identifiant de compteactor-account-id.

Note

Pour savoir comment trouver l'identifiant de votre GitHub compte, consultez https://api.github.com/users/ nom d'utilisateur, où nom d'utilisateur est votre nom GitHub d'utilisateur.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]

Vous pouvez créer un filtre qui déclenche une génération uniquement lorsque le message de validation principal correspond à l'expression régulière de l'argument de schéma. Dans cet exemple, le groupe de filtres spécifie qu'une génération est déclenchée uniquement lorsque le message de validation principal de l'événement de transmission correspond à l'expression régulière \[CodeBuild\].

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "COMMIT_MESSAGE", "pattern": "\[CodeBuild\]" } ] ]

Pour créer un filtre Webhook qui déclenche une génération pour les tâches de flux de travail GitHub Actions uniquement, insérez ce qui suit dans la syntaxe de la demande :

"filterGroups": [ [ { "type": "EVENT", "pattern": "WORKFLOW_JOB_QUEUED" } ] ]

Filtrer les événements du GitHub webhook ()AWS CloudFormation

Pour utiliser un AWS CloudFormation modèle afin de filtrer les événements Webhook, utilisez la FilterGroups propriété du AWS CodeBuild projet. La partie au format YAML suivante d'un modèle AWS CloudFormation crée deux groupes de filtres. Ensemble, ils déclenchent une génération lorsque l'un des deux ou les deux prennent la valeur true :

  • Le premier groupe de filtres indique que les pull requests sont créées ou mises à jour sur les branches dont les noms de référence Git correspondent à l'expression régulière ^refs/heads/main$ d'un GitHub utilisateur qui n'a pas d'identifiant de compte12345.

  • Le deuxième groupe de filtres spécifie les demandes de transmission créées sur des fichiers dont les noms correspondent à l'expression régulière READ_ME dans des branches avec des noms de référence Git qui correspondent à l'expression régulière ^refs/heads/.*.

  • Le troisième groupe de filtres spécifie une demande de transmission avec un message de validation principal correspondant à l'expression régulière \[CodeBuild\].

  • Le quatrième groupe de filtres spécifie une demande de travail de flux de travail GitHub Actions avec un nom de flux de travail correspondant à 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: source-location Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED - Type: BASE_REF Pattern: ^refs/heads/main$ ExcludeMatchedPattern: false - Type: ACTOR_ACCOUNT_ID Pattern: 12345 ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: HEAD_REF Pattern: ^refs/heads/.* - Type: FILE_PATH Pattern: READ_ME ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE Pattern: \[CodeBuild\] - Type: FILE_PATH Pattern: ^src/.+|^test/.+ - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]