GitLab eventi webhook - AWS CodeBuild

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

GitLab eventi webhook

È possibile utilizzare i gruppi di filtri webhook per specificare quali eventi GitLab webhook attivano una build. Ad esempio, è possibile specificare che una build venga attivata solo per le modifiche a rami specifici.

È possibile creare uno o più gruppi di filtri di webhook per specificare quali eventi webhook attivano una compilazione. Una build viene attivata se un gruppo di filtri restituisce true, il che si verifica quando tutti i filtri del gruppo restituiscono true. Al momento della creazione di un gruppo di filtri sarà necessario indicare:

Un evento

Infatti GitLab, puoi scegliere uno o più dei seguenti eventi:

  • PUSH

  • PULL_REQUEST_CREATED

  • PULL_REQUEST_UPDATED

  • PULL_REQUEST_MERGED

Il tipo di evento del webhook è nell'intestazione del campo X-GitLab-Event. La tabella seguente mostra il modo in cui i valori dell'intestazione X-GitLab-Event sono mappati ai tipi di eventi. Per l'evento Merge Request Hook webhook, il payload object_atttributes.action conterrà informazioni aggiuntive sul tipo di richiesta di unione.

Valore intestazione X-GitLab-Event object_atttributes.action Tipo di evento
Push Hook

N/D

PUSH
Merge Request Hook

aperto

PULL_REQUEST_CREATED
Merge Request Hook

aggiorna

PULL_REQUEST_UPDATED
Merge Request Hook

chiudi, unisci

PULL_REQUEST_MERGED

InfattiPULL_REQUEST_MERGED, se una pull request viene unita alla strategia squash e il ramo pull request viene chiuso, il commit originale della pull request non esiste più. In questo caso, la variabile di CODEBUILD_WEBHOOK_MERGE_COMMIT ambiente contiene l'identificatore dello squashed merge commit.

Uno o più filtri opzionali

Per specificare un filtro, utilizza un'espressione regolare. Affinché un evento attivi una build, ogni filtro all'interno del gruppo ad esso associato deve restituire true.

ACTOR_ACCOUNT_ID(ACTOR_IDnella console)

Un evento webhook attiva una build quando l'ID di un GitLab account corrisponde al modello di espressione regolare. Questo valore è presente nella proprietà account_id dell'oggetto actor nel payload del filtro webhook.

HEAD_REF

Un evento webhook attiva una build quando il riferimento alla testina corrisponde al modello di espressione regolare (ad esempio, and). refs/heads/branch-name refs/tags/tag-name Un filtro HEAD_REF valuta il nome di riferimento Git per il ramo o il tag. Il nome del ramo o del tag è presente nel campo name dell'oggetto new nell'oggetto push del payload del webhook. Per gli eventi di richiesta pull, il nome del ramo è presente nel campo name dell'oggetto branch dell'oggetto source nel payload del webhook.

BASE_REF

Un evento webhook attiva una build quando il riferimento di base corrisponde al modello di espressione regolare. Un filtro BASE_REF funziona solo con gli eventi di richiesta pull (ad esempio, refs/heads/branch-name). Un filtro BASE_REF valuta il nome di riferimento Git per il ramo. Il nome del ramo è presente nel campo name dell'oggetto branch nell'oggetto destination nel payload del webhook.

FILE_PATH

Un webhook attiva una build quando il percorso di un file modificato corrisponde al modello di espressione regolare.

COMMIT_MESSAGE

Un webhook attiva una build quando il messaggio di head commit corrisponde al modello di espressione regolare.

Nota

Puoi trovare il payload del webhook nelle impostazioni del webhook del tuo repository. GitLab

Filtra gli eventi GitLab webhook (console)

Per utilizzare per AWS Management Console filtrare gli eventi webhook:

  1. Al momento della creazione di un progetto, selezionare Rebuild every time a code change is pushed to this repository (Ricompila ogni volta che viene inviata una modifica del codice a questo repository).

  2. Da Event type (Tipo di evento), selezionare uno o più eventi.

  3. Per applicare un filtro che stabilisce quando un evento avvia una compilazione, in Start a build under these conditions (Avvia una compilazione in queste condizioni) aggiungere uno o più filtri facoltativi.

  4. Per applicare un filtro che stabilisce quando un evento non avvia una compilazione, in Don't start a build under these conditions (Non avviare una compilazione in queste condizioni) aggiungere uno o più filtri facoltativi.

  5. Per aggiungere un altro gruppo di filtri, scegliere Add filter group (Aggiungi gruppo di filtri).

Per ulteriori informazioni, vedere Creare un progetto di compilazione (console) e WebhookFilternel AWS CodeBuild APIReference.

In questo esempio, un gruppo di filtri webhook avvia una compilazione solo per le richieste pull:

Un gruppo di filtri webhook che attiva una build solo per le richieste pull.

In un esempio con due gruppi di filtri, una compilazione si attiva quando uno o entrambi risultano soddisfatti:

  • Il primo gruppo di filtri specifica le richieste pull create o aggiornate su rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/main$ e riferimenti head che corrispondono a ^refs/heads/branch1!.

  • Il secondo gruppo di filtri specifica le richieste push su rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/branch1$.

Un esempio di due gruppi di filtri.

In questo esempio, un gruppo di filtri webhook avvia una compilazione per tutte le richieste pull, tranne gli eventi tag:

Un gruppo di filtri webhook che attiva una build per tutte le richieste tranne gli eventi di tag.

In questo esempio, un gruppo di filtri di webhook attiva una compilazione solo in caso di modifica dei file con nomi che corrispondono all'espressione regolare ^buildspec.*.

Un gruppo di filtri webhook che attiva una build solo quando vengono specificati file con nomi che corrispondono all'espressione regolare.

In questo esempio, un gruppo di filtri webhook attiva una build solo quando i file vengono modificati nelle cartelle o nelle cartelle. src test

Un gruppo di filtri webhook che attiva una build solo quando i file vengono modificati in cartelle specificate.

In questo esempio, un gruppo di filtri webhook attiva una build solo quando viene apportata una modifica da un GitLab utente che non dispone di un ID account corrispondente all'espressione regolare. actor-account-id

Nota

Per informazioni su come trovare l'ID GitLab dell'account, consulta https://api.github.com/users/user-namedove: user-name è il tuo nome GitLab utente.

Un gruppo di filtri webhook che attiva una build solo quando viene apportata una modifica da un GitLab utente che non dispone di un ID account.

In questo esempio, un gruppo di filtri di webhook attiva una compilazione per un evento push quando il messaggio di commit HEAD corrisponde all'espressione regolare \[CodeBuild\].

Un gruppo di filtri webhook che attiva una build per un evento push quando il messaggio di head commit corrisponde all'espressione regolare.

Filtra gli GitLab eventi webhook () SDK

Per utilizzare AWS CodeBuild SDK per filtrare gli eventi webhook, utilizzate il filterGroups campo nella sintassi di richiesta dei CreateWebhook metodi or. UpdateWebhook API Per ulteriori informazioni, vedere WebhookFilternel Reference. CodeBuild API

Per creare un filtro di webhook che attivi una compilazione solo per le richieste pull, inserire nella sintassi di richiesta quanto segue:

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

Per creare un filtro di webhook che attivi una compilazione solo per determinati rami, utilizzare il parametro pattern per specificare un'espressione regolare che filtri i nomi dei rami. In un esempio con due gruppi di filtri, una compilazione si attiva quando uno o entrambi risultano soddisfatti:

  • Il primo gruppo di filtri specifica le richieste pull create o aggiornate su rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/main$ e riferimenti head che corrispondono a ^refs/heads/myBranch$.

  • Il secondo gruppo di filtri specifica le richieste push su rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/myBranch$.

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED" }, { "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$" } ] ]

Il parametro excludeMatchedPattern consente di indicare quali eventi non attivano una compilazione. In questo esempio, viene attivata una compilazione per tutte le richieste, tranne gli eventi tag.

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

Puoi creare un filtro che attiva una build solo quando una modifica viene apportata da un GitLab utente con ID actor-account-id account.

Nota

Per informazioni su come trovare l'ID del tuo GitLab account, vedi https://api.github.com/users/user-namedove: user-name è il tuo nome GitLab utente.

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

È possibile creare un filtro che attivi una compilazione solo in caso di modifica dei file con nomi che corrispondono all'espressione regolare nell'argomento pattern. In questo esempio, il gruppo di filtri indica che una compilazione si attiva solo in caso di modifica dei file con nomi che corrispondono all'espressione regolare ^buildspec.*.

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

In questo esempio, il gruppo di filtri specifica che una build viene attivata solo quando i file vengono modificati nelle cartelle src o test nelle cartelle.

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

È possibile creare un filtro che attiva una compilazione solo quando il messaggio di commit HEAD corrisponde all'espressione regolare nell'argomento del modello. In questo esempio, il gruppo di filtri specifica che viene attivata una compilazione solo quando il messaggio di commit HEAD dell'evento push corrisponde all'espressione regolare \[CodeBuild\].

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

Filtra gli GitLab eventi webhook ()AWS CloudFormation

Per utilizzare un AWS CloudFormation modello per filtrare gli eventi del webhook, utilizzate la proprietà del AWS CodeBuild FilterGroups progetto. La parte YAML formattata di seguito di un AWS CloudFormation modello crea due gruppi di filtri. Insieme, questi attivano una compilazione quando uno o entrambi risultano soddisfatti:

  • Il primo gruppo di filtri specifica che le richieste pull vengono create o aggiornate sui rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/main$ da un GitLab utente che non dispone di un ID 12345 account.

  • Il secondo gruppo di filtri specifica le richieste push create su rami con nomi di riferimento Git che corrispondono all'espressione regolare ^refs/heads/.*.

  • Il terzo gruppo di filtri specifica una richiesta push con un messaggio di commit HEAD corrispondente all'espressione regolare \[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: GITLAB 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: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE Pattern: \[CodeBuild\]