GitHub Webhook-Ereignisse - AWS CodeBuild

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

GitHub Webhook-Ereignisse

Sie können Webhook-Filtergruppen verwenden, um anzugeben, welche GitHub Webhook-Ereignisse einen Build auslösen. Sie können beispielsweise angeben, dass ein Build nur bei Änderungen an bestimmten Branches ausgelöst wird.

Sie können eine oder mehrere Webhook-Filtergruppen erstellen, um anzugeben, welche Webhook-Ereignisse einen Build auslösen. Ein Build wird ausgelöst, wenn eine Filtergruppe als wahr ausgewertet wird. Dies ist der Fall, wenn alle Filter in der Gruppe den Wert true ergeben. Beim Erstellen einer Filtergruppe geben Sie Folgendes an:

Ein Ereignis

Für GitHub können Sie eines oder mehrere der folgenden Ereignisse auswählen:PUSH,PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED,PULL_REQUEST_REOPENED,PULL_REQUEST_MERGED, PULL_REQUEST_CLOSEDRELEASED,PRERELEASED, undWORKFLOW_JOB_QUEUED. Der Webhook-Ereignistyp ist im X-GitHub-Event-Header in der Webhook-Nutzlast zu finden. Im X-GitHub-Event-Header befindet sich möglicherweise pull_request oder push. Bei einem Pull-Anforderungstyp befindet sich der Typ im Feld action der Webhook-Ereignisnutzlast. Aus der folgenden Tabelle geht die Zuordnung der X-GitHub-Event-Header-Werte und der Werte im Feld action der Webhook-Pull-Anforderungsnutzlast zu den verfügbaren Ereignistypen hervor.

X-GitHub-Event-Header-Wert action-Wert der Webhook-Ereignisnutzlast Ereignistyp
pull_request opened PULL_REQUEST_CREATED
pull_request reopened PULL_REQUEST_REOPENED
pull_request synchronize PULL_REQUEST_UPDATED
pull_request closed und das merged-Feld sind true PULL_REQUEST_MERGED
pull_request closed und das merged-Feld sind false PULL_REQUEST_CLOSED
push PUSH
release veröffentlicht RELEASED
release vorveröffentlicht PRERELEASED
workflow_job queued WORKFLOW_JOB_QUEUED
Anmerkung

Der PULL_REQUEST_REOPENED Ereignistyp kann nur mit GitHub GitHub Enterprise Server verwendet werden. Der WORKFLOW_JOB_QUEUED Ereignistyp RELEASEDPRERELEASED, und kann GitHub nur mit verwendet werden. Weitere Informationen zu WORKFLOW_JOB_QUEUED finden Sie unter Tutorial: Einen CodeBuild selbst GitHub gehosteten Actions-Runner konfigurieren.

Ein oder mehrere optionale Filter

Verwenden Sie einen regulären Ausdruck, um einen Filter anzugeben. Damit ein Ereignis einen Build auslöst, muss jeder Filter innerhalb der Gruppe, die diesem Ereignis zugeordnet ist, als wahr ausgewertet werden.

ACTOR_ACCOUNT_ID(ACTOR_IDin der Konsole)

Ein Webhook-Ereignis löst einen Build aus, wenn eine GitHub oder GitHub Enterprise Server-Konto-ID dem regulären Ausdrucksmuster entspricht. Dieser Wert befindet sich in der Eigenschaft id des Objekts sender in der Webhook-Nutzlast.

HEAD_REF

Ein Webhook-Ereignis löst einen Build aus, wenn die Hauptreferenz mit dem Muster eines regulären Ausdrucks übereinstimmt (z. B. refs/heads/branch-name oderrefs/tags/tag-name). Bei einem Push-Ereignis ist der Referenzname in der Eigenschaft ref in der Webhook-Nutzlast zu finden. Bei Pull-Anforderungsereignissen befindet sich der Branch-Name in der Eigenschaft ref des Objekts head in der Webhook-Nutzlast.

BASE_REF

Ein Webhook-Ereignis löst einen Build aus, wenn die Basisreferenz mit dem Muster eines regulären Ausdrucks übereinstimmt (z. B.refs/heads/branch-name). Ein BASE_REF-Filter kann nur für Pull-Anforderungsereignisse verwendet werden. Der Branch-Name befindet sich in der Eigenschaft ref des Objekts base in der Webhook-Nutzlast.

FILE_PATH

Ein Webhook löst einen Build aus, wenn der Pfad einer geänderten Datei dem Muster regulärer Ausdrücke entspricht. Ein FILE_PATH Filter kann für GitHub Push- und Pull-Request-Ereignisse sowie für GitHub Enterprise Server-Push-Ereignisse verwendet werden. Er kann nicht mit GitHub Enterprise Server-Pull-Request-Ereignissen verwendet werden.

COMMIT_MESSAGE

Ein Webhook löst einen Build aus, wenn die Head-Commit-Nachricht dem Muster eines regulären Ausdrucks entspricht. Ein COMMIT_MESSAGE Filter kann für GitHub Push- und Pull-Request-Ereignisse sowie für GitHub Enterprise Server-Push-Ereignisse verwendet werden. Er kann nicht mit GitHub Enterprise Server-Pull-Request-Ereignissen verwendet werden.

TAG_NAME

Ein Webhook löst einen Build aus, wenn der Tag-Name der Version mit dem Muster des regulären Ausdrucks übereinstimmt. Ein TAG_NAME Filter kann für GitHub veröffentlichte und vorab veröffentlichte Anforderungsereignisse verwendet werden.

RELEASE_NAME

Ein Webhook löst einen Build aus, wenn der Versionsname dem Muster eines regulären Ausdrucks entspricht. Ein RELEASE_NAME Filter kann für GitHub veröffentlichte und vorab veröffentlichte Anforderungsereignisse verwendet werden.

WORKFLOW_NAME

Ein Webhook löst einen Build aus, wenn der Workflow-Name dem Muster des regulären Ausdrucks entspricht. Ein WORKFLOW_NAME Filter kann für Ereignisse in der Warteschlange von Aufträgen im GitHub Aktionsworkflow verwendet werden.

Anmerkung

Sie finden die Webhook-Payload in den Webhook-Einstellungen Ihres Repositorys. GitHub

GitHub Webhook-Ereignisse filtern (Konsole)

Wählen Sie unter Webhook-Ereignisse der Primärquelle die folgenden Optionen aus. Dieser Abschnitt ist nur verfügbar, wenn Sie in Mein GitHub Konto für das Quell-Repository die Option Repository ausgewählt haben.

  1. Wählen Sie beim Erstellen Ihres Projekts Rebuild every time a code change is pushed to this repository (Erneut erstellen, wenn eine Codeänderung an dieses Repository übergeben wird) aus.

  2. Wählen Sie unter Event type (Ereignistyp) eines oder mehrere Ereignisse aus.

  3. Wenn Sie Fälle filtern möchten, in denen ein Ereignis einen Build auslöst, fügen Sie unter Start a build under these conditions (Unter diesen Bedingungen Build starten) einen oder mehrere optionale Filter hinzu.

  4. Wenn Sie Fälle filtern möchten, in denen kein Ereignis ausgelöst wird, fügen Sie unter Don't start a build under these conditions (Unter diesen Bedingungen keinen Build starten) einen oder mehrere optionale Filter hinzu.

  5. Wählen Sie Filtergruppe hinzufügen, um bei Bedarf eine weitere Filtergruppe hinzuzufügen.

Weitere Informationen finden Sie unter Erstellen Sie ein Build-Projekt (Konsole) und WebhookFilterin der AWS CodeBuild API-Referenz.

In diesem Beispiel löst eine Webhook-Filtergruppe nur für Pull-Anfragen einen Build aus:

Bei Verwendung eines Beispiels mit zwei Webhook-Filtergruppen wird ein Build ausgelöst, wenn mindestens eine Gruppe als wahr ausgewertet wird:

  • Die erste Filtergruppe gibt Pull-Anfragen an, die in Verzweigungen mit Git-Referenznamen, die dem regulären Ausdruck ^refs/heads/main$ entsprechen, und mit Kopfreferenzen, die ^refs/heads/branch1$ entsprechen, erstellt, aktualisiert oder erneut geöffnet werden.

  • Die zweite Filtergruppe gibt Push-Anfragen in Verzweigungen mit Git-Referenznamen an, die dem regulären Ausdruck ^refs/heads/branch1$ entsprechen.

In diesem Beispiel löst eine Webhook-Filtergruppe einen Build für alle Anfragen mit Ausnahme von Tag-Ereignissen aus.

In diesem Beispiel löst eine Webhook-Filtergruppe nur einen Build aus, wenn Dateien geändert werden, deren Namen dem regulären Ausdruck ^buildspec.* entsprechen.

In diesem Beispiel löst eine Webhook-Filtergruppe nur dann einen Build aus, wenn Dateien in test Ordnern src oder geändert werden.

In diesem Beispiel löst eine Webhook-Filtergruppe nur dann einen Build aus, wenn eine Änderung von einem bestimmten Benutzer GitHub oder einem GitHub Enterprise Server-Benutzer mit einer Konto-ID vorgenommen wird, die dem regulären Ausdruck entspricht. actor-account-id

Anmerkung

Informationen dazu, wie Sie Ihre GitHub Konto-ID finden, finden Sie unter https://api.github.com/users/ benutzername, wobei benutzername Ihr GitHub Benutzername ist.

In diesem Beispiel löst eine Webhook-Filtergruppe einen Build für ein Push-Ereignis aus, wenn die Head-Commit-Nachricht mit dem regulären Ausdruck \[CodeBuild\] übereinstimmt.

In diesem Beispiel löst eine Webhook-Filtergruppe einen Build nur für GitHub Aktions-Workflow-Auftragsereignisse aus.

Anmerkung

CodeBuild verarbeitet GitHub Aktions-Workflow-Jobs nur, wenn ein Webhook Filtergruppen enthält, die den WORKFLOW_JOB_QUEUED-Ereignisfilter enthalten.

In diesem Beispiel löst eine Webhook-Filtergruppe einen Build für einen Workflow-Namen aus, der dem regulären Ausdruck entspricht. CI-CodeBuild

GitHub Webhook-Ereignisse filtern (SDK)

Um das AWS CodeBuild SDK zum Filtern von Webhook-Ereignissen zu verwenden, verwenden Sie das filterGroups Feld in der Anforderungssyntax der CreateWebhook UpdateWebhook API-Methoden oder. Weitere Informationen finden Sie WebhookFilterin der CodeBuild API-Referenz.

Um einen Webhook-Filter zu erstellen, der nur für Pull-Anfragen einen Build auslöst, fügen Sie Folgendes in die Anfragesyntax ein:

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

Um einen Webhook-Filter zu erstellen, der nur für die angegebenen Verzweigungen einen Build auslöst, verwenden Sie den Parameter pattern, um einen regulären Ausdruck zum Filtern von Verzweigungsnamen anzugeben. Bei Verwendung eines Beispiels mit zwei Filtergruppen wird ein Build ausgelöst, wenn mindestens eine Gruppe als wahr ausgewertet wird:

  • Die erste Filtergruppe gibt Pull-Anfragen an, die in Verzweigungen mit Git-Referenznamen, die dem regulären Ausdruck ^refs/heads/main$ entsprechen, und mit Kopfreferenzen, die ^refs/heads/myBranch$ entsprechen, erstellt, aktualisiert oder erneut geöffnet werden.

  • Die zweite Filtergruppe gibt Push-Anfragen in Verzweigungen mit Git-Referenznamen an, die dem regulären Ausdruck ^refs/heads/myBranch$ entsprechen.

"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$" } ] ]

Sie können den Parameter excludeMatchedPattern verwenden, um anzugeben, welche Ereignisse keinen Build auslösen. In diesem Beispiel etwa wird für alle Anfragen mit Ausnahme von Tag-Ereignissen ein Build ausgelöst.

"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 } ] ]

Sie können einen Filter erstellen, der nur einen Build auslöst, wenn Dateien geändert werden, deren Namen dem regulären Ausdruck in dem Argument pattern entsprechen. In diesem Beispiel gibt die Filtergruppe an, dass nur ein Build ausgelöst wird, wenn Dateien geändert werden, deren Name dem regulären Ausdruck ^buildspec.* entspricht.

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

In diesem Beispiel gibt die Filtergruppe an, dass ein Build nur ausgelöst wird, wenn Dateien in test Ordnern src oder geändert werden.

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

Sie können einen Filter erstellen, der einen Build nur auslöst, wenn eine Änderung von einem bestimmten Benutzer GitHub oder einem GitHub Enterprise Server-Benutzer mit Konto-ID vorgenommen wirdactor-account-id.

Anmerkung

Informationen dazu, wie Sie Ihre GitHub Konto-ID finden, finden Sie unter https://api.github.com/users/ benutzername, wobei benutzername Ihr GitHub Benutzername ist.

"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" } ] ]

Sie können einen Filter erstellen, der einen Build nur dann auslöst, wenn die Head-Commit-Nachricht mit dem regulären Ausdruck im Musterargument übereinstimmt. In diesem Beispiel gibt die Filtergruppe an, dass ein Build nur dann ausgelöst wird, wenn die Head-Commit-Nachricht des Push-Ereignisses mit dem regulären Ausdruck \[CodeBuild\] übereinstimmt.

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

Um einen Webhook-Filter zu erstellen, der nur einen Build für Workflow-Jobs für GitHub Aktionen auslöst, fügen Sie Folgendes in die Anforderungssyntax ein:

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

GitHub Webhook-Ereignisse filtern ()AWS CloudFormation

Um eine AWS CloudFormation Vorlage zum Filtern von Webhook-Ereignissen zu verwenden, verwenden Sie die Eigenschaft des AWS CodeBuild FilterGroups Projekts. Mit dem folgenden in YAML formatierten Teil einer AWS CloudFormation -Vorlage werden zwei Filtergruppen erstellt. Diese lösen zusammen einen Build aus, wenn mindestens eine Gruppe als wahr ausgewertet wird.

  • Die erste Filtergruppe gibt an, dass Pull-Requests für Branches mit Git-Referenznamen, die dem regulären Ausdruck entsprechen, ^refs/heads/main$ von einem GitHub Benutzer ohne Konto-ID erstellt oder aktualisiert 12345 werden.

  • Die zweite Filtergruppe gibt an, dass Push-Anfragen für Dateien, deren Namen dem regulären Ausdruck READ_ME entsprechen, in Verzweigungen mit Git-Referenznamen, die dem regulären Ausdruck ^refs/heads/.* entsprechen, erstellt werden.

  • Die dritte Filtergruppe gibt eine Push-Anforderung mit einer Head Commit-Nachricht an, die dem regulären Ausdruck \[CodeBuild\] entspricht.

  • Die vierte Filtergruppe spezifiziert eine Workflow-Auftragsanforderung für GitHub Aktionen mit einem Workflow-Namen, der dem regulären Ausdruck entspricht\[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\]