Eventos de webhooks de Bitbucket - AWS CodeBuild

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Eventos de webhooks de Bitbucket

Puede utilizar grupos de filtros de webhooks para especificar qué eventos de webhooks de Bitbucket van a desencadenar una compilación. Por ejemplo, es posible especificar que se desencadene una compilación solo con cambios en ramificaciones específicas.

Puede crear uno o varios grupos de filtros de webhooks para especificar qué eventos de webhooks van a desencadenar una compilación. Se activa una compilación si algún grupo de filtros da true como resultado, lo que ocurre cuando todos los filtros del grupo dan este resultado. Cuando cree un grupo de filtros, deberá especificar:

Un evento

En Bitbucket, puede seleccionar uno o más de los eventos siguientes:

  • PUSH

  • PULL_REQUEST_CREATED

  • PULL_REQUEST_UPDATED

  • PULL_REQUEST_MERGED

  • PULL_REQUEST_CLOSED

El tipo de evento de webhook está en su encabezado en el campo X-Event-Key. En la siguiente tabla se muestra cómo los valores del encabezado X-Event-Key se asignan a los tipos de eventos.

nota

Debe habilitar el evento merged en su configuración de webhook de Bitbucket si crea un grupo de filtros de webhook que utilice el tipo de evento PULL_REQUEST_MERGED. También debes habilitar el declined evento en la configuración de webhook de Bitbucket si creas un grupo de filtros de webhook que utilice el PULL_REQUEST_CLOSED tipo de evento.

Valor del encabezado X-Event-Key Tipo de evento
repo:push PUSH
pullrequest:created PULL_REQUEST_CREATED
pullrequest:updated PULL_REQUEST_UPDATED
pullrequest:fulfilled PULL_REQUEST_MERGED
pullrequest:rejected PULL_REQUEST_CLOSED

Para PULL_REQUEST_MERGED, si una solicitud de extracción se fusiona con la estrategia de compresión y la rama de solicitudes de extracción se cierra, la confirmación original de la solicitud de extracción deja de existir. En este caso, la variable de entorno CODEBUILD_WEBHOOK_MERGE_COMMIT contiene el identificador de la confirmación de fusión anulada.

Uno o más filtros opcionales

Utilice una expresión regular para especificar los filtros. En el caso de los eventos que desencadenan una compilación, todos los filtros de un grupo asociados con ellos deben dar true como resultado.

ACTOR_ACCOUNT_ID (ACTOR_ID en la consola)

Un evento de webhook desencadena una compilación cuando el ID de una cuenta de Bitbucket coincide con el patrón de la expresión regular. Este valor se encuentra en la propiedad account_id del objeto actor de la carga del filtro de webhook.

HEAD_REF

Un evento de webhook desencadena una compilación cuando la referencia del encabezado coincide con el patrón de la expresión regular (por ejemplo, refs/heads/branch-name y refs/tags/tag-name). Un filtro HEAD_REF evalúa el nombre de referencia de Git de la ramificación o etiqueta. El nombre de la ramificación o la etiqueta se encuentra en el campo name del objeto new incluido en el objeto push de la carga del webhook. En el caso de los eventos de las solicitudes de extracción, el nombre de la ramificación se encuentra en el campo name del objeto branch incluido en el objeto source de la carga del webhook.

BASE_REF

Un evento de webhook desencadena una compilación cuando la referencia de base coincide con el patrón de la expresión regular. Un filtro BASE_REF solamente funciona con eventos de solicitudes de extracción (por ejemplo, refs/heads/branch-name). Un filtro BASE_REF evalúa el nombre de referencia de Git de la ramificación. El nombre de la ramificación se encuentra en el campo name del objeto branch incluido en el objeto destination de la carga del webhook.

FILE_PATH

Un webhook desencadena una compilación cuando la ruta de un archivo modificado coincide con el patrón de la expresión regular.

COMMIT_MESSAGE

Un webhook desencadena una compilación cuando el mensaje de confirmación del encabezado coincide con la expresión regular.

nota

Puede encontrar la carga de webhook en la configuración de webhook del repositorio de Bitbucket.

Filtrar eventos de webhooks de Bitbucket (consola)

Para usar el para filtrar los eventos AWS Management Console de webhook:

  1. Cuando cree el proyecto, seleccione Rebuild every time a code change is pushed to this repository (Volver a compilar cada vez que se inserte un cambio de código en este repositorio).

  2. En Event type (Tipo de evento), seleccione uno o varios eventos.

  3. Para filtrar en función de cuándo un evento va a desencadenar una compilación, en Start a build under these conditions (Iniciar una compilación en estas condiciones), añada uno o varios filtros opcionales.

  4. Para filtrar en función de cuándo no se va a desencadenar un evento, en Don't start a build under these conditions (No iniciar una compilación en estas condiciones), añada uno o varios filtros opcionales.

  5. Seleccione Add filter group (Añadir grupo de filtros) para añadir otro grupo de filtros.

Para obtener más información consulte Creación de un proyecto de compilación (consola) y WebhookFilter en la Referencia de la API de AWS CodeBuild .

En este ejemplo, un grupo de filtros de webhooks desencadena una compilación únicamente con solicitudes de extracción:

Si utilizamos un ejemplo con dos grupos de filtros, la compilación se desencadenaría cuando uno de los grupos o los dos se evalúen como true:

  • El primer grupo de filtros especifica las solicitudes de extracción que se crean o actualizan en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/main$ y las referencias de encabezado que coinciden con ^refs/heads/branch1!.

  • El segundo grupo de filtros especifica solicitudes de inserción en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/branch1$.

En este ejemplo, un grupo de filtros de webhooks desencadena una compilación de todas las solicitudes excepto los eventos de etiquetas.

En este ejemplo, un grupo de filtros de webhooks desencadena una compilación solo cuando se modifican los archivos cuyos nombres coinciden con la expresión regular ^buildspec.*.

En este ejemplo, un grupo de filtros de webhook activa una compilación solo cuando se cambian archivos en las carpetas src o test.

En este ejemplo, un grupo de filtros de webhooks desencadena una compilación únicamente cuando hay un cambio realizado por un usuario de Bitbucket que no tiene un ID de cuenta que coincida con la expresión regular actor-account-id.

nota

Para obtener información acerca de cómo encontrar el ID de cuenta de Bitbucket, consulte https://api.bitbucket.org/2.0/users/nombre-usuario, donde nombre-usuario es el nombre de usuario de Bitbucket.

En este ejemplo, un grupo de filtros de webhook desencadena una compilación para un evento de inserción cuando el mensaje de confirmación de la cabeza coincide con la expresión regular \[CodeBuild\].

Filtrar eventos de webhooks de Bitbucket (SDK)

Para usar el AWS CodeBuild SDK para filtrar los eventos de webhook, usa el filterGroups campo de la sintaxis de solicitud de los métodos CreateWebhook o de la UpdateWebhook API. Para obtener más información, consulte WebhookFilter en la Referencia de la API de CodeBuild .

Si desea crear un filtro de webhook que desencadene una compilación únicamente con las solicitudes de extracción, inserte lo siguiente en la sintaxis de la solicitud:

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

Si desea crear un filtro de webhooks que desencadene una compilación únicamente con las ramificaciones especificadas, utilice el parámetro pattern para especificar una expresión regular que filtre los nombres de las ramificaciones. Si utilizamos un ejemplo con dos grupos de filtros, la compilación se desencadenaría cuando uno de los grupos o los dos se evalúen como true:

  • El primer grupo de filtros especifica las solicitudes de extracción que se crean o actualizan en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/main$ y las referencias de encabezado que coinciden con ^refs/heads/myBranch$.

  • El segundo grupo de filtros especifica solicitudes de inserción en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/myBranch$.

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

Puede utilizar el parámetro excludeMatchedPattern para especificar qué eventos no desencadenan una compilación. En este ejemplo, se desencadena una compilación con todas las solicitudes, excepto los eventos de etiquetas.

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

Puede crear un filtro que desencadene una compilación solo cuando un usuario de Bitbucket con el ID de cuenta actor-account-id realice algún cambio.

nota

Para obtener información acerca de cómo encontrar el ID de cuenta de Bitbucket, consulte https://api.bitbucket.org/2.0/users/nombre-usuario, donde nombre-usuario es el nombre de usuario de Bitbucket.

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

Puede crear un filtro que desencadene una compilación solo cuando se modifiquen los archivos cuyos nombres coincidan con la expresión regular del argumento pattern. En este ejemplo, el grupo de filtros especifica que la compilación solo debe desencadenarse cuando se modifiquen los archivos cuyos nombres coincidan con la expresión regular ^buildspec.*.

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

En este ejemplo, el grupo de filtros especifica que solo se activa una compilación cuando se cambian archivos en las carpetas src o test.

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

Puede crear un filtro que desencadene una compilación solo cuando el mensaje de confirmación del encabezado coincida con la expresión regular en el argumento pattern. En este ejemplo, el grupo de filtros especifica que una compilación se desencadena solo cuando el mensaje de confirmación del encabezado del evento de inserción coincide con la expresión regular \[CodeBuild\].

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

Filtrar eventos de webhooks de Bitbucket (AWS CloudFormation)

Si quieres usar una AWS CloudFormation plantilla para filtrar los eventos de webhook, usa la propiedad del AWS CodeBuild FilterGroups proyecto. El siguiente fragmento con formato YAML de una plantilla AWS CloudFormation crea dos grupos de filtros. Juntos, desencadenan una compilación cuando uno de los grupos o los dos se evalúan como true:

  • El primer grupo de filtros especifica las solicitudes de extracción que un usuario de Bitbucket que no tiene el ID de cuenta 12345 crea o actualiza en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/main$.

  • El segundo grupo de filtros especifica solicitudes de inserción que se crean en ramificaciones con nombres de referencia de Git que coinciden con la expresión regular ^refs/heads/.*.

  • El tercer grupo de filtros especifica una solicitud de inserción con un mensaje de confirmación del encabezado que coincida con la expresión regular \[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: BITBUCKET 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/.+