Ajude a moldar o futuro da entrega de software e manifeste-se respondendo à pesquisa sobre o estado de DevOps 2202.

Como criar gatilhos do Pub/Sub

Os acionadores do Cloud Build Pub/Sub permitem executar versões em resposta a eventos do Google Cloud publicados no Pub/Sub. Você pode usar informações de um evento do Pub/Sub para parametrizar sua versão e decidir se uma versão deve ser executada em resposta ao evento. Os acionadores do Pub/Sub podem ser configurados para detectar qualquer tópico do Pub/Sub.

Nesta página explicamos como é possível criar um gatilho do Pub/Sub para invocar versões em resposta a eventos no Artifact Registry, no Container Registry e no Cloud Storage.

Antes de começar

  • Ative a API Cloud Build.

    Ative a API

  • Verifique se o código-fonte contém um arquivo de configuração da versão ou um Dockerfile no repositório.
  • Para usar os comandos gcloud nesta página, instale o SDK do Cloud.

Como criar um gatilho de compilação que responda a eventos do Artifact Registry

É possível criar um gatilho do Pub/Sub que responde a eventos do Artifact Registry, como quando as imagens são enviadas, marcadas ou excluídas. Esta seção discute como criar um gatilho de Pub/Sub que invoca uma versão quando uma nova tag é enviada a uma imagem existente. Se você não estiver familiarizado com o Artifact Registry, consulte a visão geral do gerenciamento de artefatos.

Console

Para criar um gatilho que detecta uma nova tag enviada para uma imagem existente no Artifact Registry usando o Console do Google Cloud:

  1. Acesse a página Gatilhos:

    Abrir a página Acionadores

  2. Selecione seu projeto na parte superior da página e clique em Abrir.

  3. Clique em Criar gatilho.

  4. Preencha as configurações de gatilho a seguir:

    • Nome: insira um nome para o gatilho.
    • Descrição (opcional): insira uma descrição para o gatilho.
    • Evento: selecione Mensagem do Pub/Sub como o evento para invocar seu gatilho.
    • Subscription: selecione o tópico do Pub/Sub em que você quer se inscrever como o evento acionador. Você verá todos os tópicos atuais no projeto no menu suspenso.

    • Origem: selecione o repositório para criar quando o gatilho é executado.

    • Revisão: selecione a ramificação ou tag a ser criada quando o acionador for executado.

      • Branch: digite o nome da ramificação para invocar sua versão.
      • Tag: insira o nome da tag para invocar a build.
    • Configuração: selecione o arquivo de configuração da versão (localizado no seu repositório remoto) ou crie um arquivo de configuração da versão in-line para usar na sua versão.

      • Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração de versão para sua configuração. É necessário fornecer o local do arquivo de configuração da versão e, opcionalmente, as variáveis de substituição que você quer usar.

      • Dockerfile: use um Dockerfile para sua configuração. É necessário especificar o diretório Dockerfile e um nome para a imagem resultante. Também é possível fornecer um tempo limite para sua build. Ao fornecer o Dockerfile e o nome da imagem, você verá uma visualização do comando docker build que sua versão executará.

      • Inline: use uma configuração de compilação in-line para sua configuração. Clique em Abrir editor para gravar o arquivo de configuração da criação no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração da versão.

    • Substituições (opcional): se você selecionou o arquivo de configuração da criação como sua opção de configuração da versão, pode optar por definir um gatilho específicovariáveis de substituição usando este campo.

      No exemplo a seguir, queremos receber o nome da tag de imagem do payload e a ação associada ao evento gcr. Para fazer isso, crie variáveis de substituição usando vinculações de payload.

      Especifique as seguintes variáveis e valores abaixo:

      Nome da variável Valor da variável
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message faz referência à PubSubMessage publicada pelos editores e consumida pelos assinantes. Para ver mais exemplos do payload de notificação do Pub/Sub, consulte Exemplos de notificação.

    • Filtros (opcional): é possível criar filtros em um gatilho que determina se o gatilho executará uma versão de resposta ao payload de entrada especificando os filtros nas variáveis de substituição. A expressão de filtro precisa ser avaliada como true para que uma versão seja executada.

      Recomendamos usar a filtragem ao configurar acionadores do Pub/Sub em tópicos com várias mensagens. Os filtros podem ser usados para controlar com precisão as builds executadas em resposta às mensagens recebidas do Pub/Sub. Para saber mais sobre os riscos associados à configuração de um gatilho sem filtros, consulte Riscos associados a um gatilho não filtrado.

      No exemplo a seguir, queremos que o acionador execute uma versão se uma nova tag for enviada para uma imagem existente. Usamos operadores de condição de filtro para verificar se a variável _IMAGE_TAG corresponde a um nome de tag existente e se a variável _ACTION corresponde a INSERT para procurar dados recém-adicionados.

      Especifique os seguintes filtros:

      • _IMAGE_TAG == ""
      • _ACTION == INSERT

      A sintaxe de filtragem nos acionadores do Pub/Sub usa a Common Expression Language (CEL) para a avaliação da expressão. Para saber mais sobre a CEL, consulte o repositório cel-spec. Para ver mais exemplos de sintaxe para filtragem que você pode aplicar aos acionadores de Pub/Sub, consulte Como usar a CEL para filtrar eventos de versão.

  1. Clique em Criar para criar seu gatilho de compilação.
  2. .

gcloud

Para criar um gatilho que detecte uma nova tag enviada para uma imagem existente no Artifact Registry usando os comandos gcloud:

  1. Abra uma janela de terminal.
  2. Execute o comando gcloud alpha para criar um gatilho de compilação no seu projeto. No exemplo abaixo, o acionador está configurado para responder a versões com uma correspondência de tag.prod e uma correspondência correspondenteINSERT com base no payload especificado conforme definido pela variável de substituição, _IMAGE_TAG para começar.

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_NAME \
       --topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG
       --substitutions=\
         _IMAGE_TAG_='$(body.message.data.tag)'
         _ACTION='$(body.message.data.action)'
       --filter='_IMAGE_TAG == "" && _ACTION == "INSERT"'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Em que:

    • TRIGGER_NAME é o nome do gatilho.
    • PROJECT_ID é o ID do projeto do Cloud.
    • TOPIC_NAME é o nome do tópico do Pub/Sub em que você se inscreveu.
    • BUILD_CONFIG é o caminho para seu arquivo de configuração da versão.
    • INLINE_BUILD_CONFIG é o caminho para seu arquivo de configuração de build in-line.
    • REPO_NAME é o nome do repositório de origem em que a versão é invocada.
    • TAG_NAME é o nome da tag se você quiser que o gatilho seja criado em uma tag.
    • BRANCH_NAME é o nome do branch se você quiser que o gatilho seja criado para uma ramificação.

Como criar um gatilho de compilação que responda a eventos do Container Registry

É possível criar um gatilho do Pub/Sub que responda a eventos do Container Registry, como quando as imagens forem enviadas, marcadas ou excluídas. Esta seção discute como criar um gatilho de Pub/Sub que invoca uma versão quando uma imagem corresponde a uma tag configurada por um filtro personalizado. Se você não estiver familiarizado com o Container Registry, consulte o Guia de início rápido do Container Registry para saber como enviar e extrair imagens com tags.

Console

Para criar um gatilho que detecta um envio de imagem no Container Registry e as correspondências com base em um nome de tag usando o Console do Google Cloud:

  1. Acesse a página Gatilhos:

    Abrir a página Acionadores

  2. Selecione seu projeto na parte superior da página e clique em Abrir.

  3. Clique em Criar gatilho.

  4. Preencha as configurações de gatilho a seguir:

    • Nome: insira um nome para o gatilho.
    • Descrição (opcional): insira uma descrição para o gatilho.
    • Evento: selecione Mensagem do Pub/Sub como o evento para invocar seu gatilho.
    • Subscription: selecione o tópico do Pub/Sub em que você quer se inscrever como o evento acionador. Você verá todos os tópicos atuais no projeto no menu suspenso.

    • Origem: selecione o repositório para criar quando o gatilho é executado.

    • Revisão: selecione a ramificação ou tag a ser criada quando o acionador for executado.

      • Branch: digite o nome da ramificação para invocar sua versão.
      • Tag: insira o nome da tag para invocar a build.
    • Configuração: selecione o arquivo de configuração da versão (localizado no seu repositório remoto) ou crie um arquivo de configuração da versão in-line para usar na sua versão.

      • Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração de versão para sua configuração. É necessário fornecer o local do arquivo de configuração da versão e, opcionalmente, as variáveis de substituição que você quer usar.

      • Dockerfile: use um Dockerfile para sua configuração. É necessário especificar o diretório Dockerfile e um nome para a imagem resultante. Também é possível fornecer um tempo limite para sua build. Ao fornecer o Dockerfile e o nome da imagem, você verá uma visualização do comando docker build que sua versão executará.

      • Inline: use uma configuração de compilação in-line para sua configuração. Clique em Abrir editor para gravar o arquivo de configuração da criação no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração da versão.

    • Substituições (opcional): se você selecionou o arquivo de configuração da criação como sua opção de configuração da versão, pode optar por definir um gatilho específicovariáveis de substituição usando este campo.

      No exemplo a seguir, queremos receber o nome da tag de imagem do payload e a ação associada ao evento gcr. Para fazer isso, crie variáveis de substituição usando vinculações de payload.

      Especifique as seguintes variáveis e valores abaixo:

      Nome da variável Valor da variável
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message faz referência à PubSubMessage publicada pelos editores e consumida pelos assinantes. Para ver mais exemplos do payload de notificação do Pub/Sub, consulte Exemplos de notificação.

    • Filtros (opcional): é possível criar filtros em um gatilho que determina se o gatilho executará uma versão de resposta ao payload de entrada especificando os filtros nas variáveis de substituição. A expressão de filtro precisa ser avaliada como true para que uma versão seja executada.

      Recomendamos usar a filtragem ao configurar acionadores do Pub/Sub em tópicos com várias mensagens. Os filtros podem ser usados para controlar com precisão as builds executadas em resposta às mensagens recebidas do Pub/Sub. Para saber mais sobre os riscos associados à configuração de um gatilho sem filtros, consulte Riscos associados a um gatilho não filtrado.

      No exemplo a seguir, queremos que o gatilho execute uma versão se o nome da variável da tag _IMAGE_TAG corresponder a um nome de tag específico, como prod. É possível especificar seu operador de condição de filtro como "==" para correspondência exata. Você também pode verificar a ação associada ao evento gcr. Por exemplo, convém especificar _ACTION como INSERT para procurar dados recém-adicionados.

      Especifique os seguintes filtros:

      • _IMAGE_TAG == prod
      • _ACTION == INSERT

      A sintaxe de filtragem nos acionadores do Pub/Sub usa a Common Expression Language (CEL) para a avaliação da expressão. Para saber mais sobre a CEL, consulte o repositório cel-spec. Para ver mais exemplos de sintaxe para filtragem que você pode aplicar aos acionadores do Pub/Sub, consulte Como filtrar versões.

  1. Clique em Criar para criar seu gatilho de compilação.
  2. .

gcloud

Para criar um gatilho que detecta um envio de imagem no Container Registry e as correspondências com base em um nome de tag usando comandos gcloud:

  1. Abra uma janela de terminal.
  2. Execute o comando gcloud alpha para criar um gatilho de compilação no seu projeto. No exemplo abaixo, o acionador está configurado para responder a versões com uma correspondência de tag.prod e uma correspondência correspondenteINSERT com base no payload especificado conforme definido pela variável de substituição, _IMAGE_TAG para começar.

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_NAME \
       --topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG
       --substitutions=\
         _IMAGE_TAG_='$(body.message.data.tag)'
         _ACTION='$(body.message.data.action)'
       --filter='_IMAGE_TAG == "prod" && _ACTION == "INSERT"'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Em que:

    • TRIGGER_NAME é o nome do gatilho.
    • PROJECT_ID é o ID do projeto do Cloud.
    • TOPIC_NAME é o nome do tópico do Pub/Sub em que você se inscreveu.
    • BUILD_CONFIG é o caminho para seu arquivo de configuração da versão.
    • INLINE_BUILD_CONFIG é o caminho para seu arquivo de configuração de build in-line.
    • REPO_NAME é o nome do repositório de origem em que a versão é invocada.
    • TAG_NAME é o nome da tag se você quiser que o gatilho seja criado em uma tag.
    • BRANCH_NAME é o nome do branch se você quiser que o gatilho seja criado para uma ramificação.

Crie um gatilho de compilação que responda a eventos do Cloud Storage

É possível criar um gatilho do Pub/Sub que responda a eventos do Cloud Storage, como quando um novo binário é enviado para um bucket de armazenamento atual. Nesta seção, você verá como criar um gatilho do Pub/Sub que responde com uma versão ao implantar um novo binário em um bucket enviado. Se você não estiver familiarizado com o Cloud Storage, consulte os Guias de início rápido.

Console

Para criar um gatilho que detecte eventos do Cloud Storage usando o Console do Google Cloud:

  1. Acesse a página Gatilhos:

    Abrir a página Acionadores

  2. Selecione seu projeto na parte superior da página e clique em Abrir.

  3. Clique em Criar gatilho.

  4. Preencha as configurações de gatilho a seguir:

    • Nome: insira um nome para o gatilho.
    • Descrição (opcional): insira uma descrição para o gatilho.
    • Evento: selecione Mensagem do Pub/Sub como o evento para invocar seu gatilho.
    • Subscription: selecione o tópico do Pub/Sub em que você quer se inscrever como o evento acionador. Você verá todos os tópicos atuais no projeto no menu suspenso.

    • Origem: selecione o repositório para criar quando o gatilho é executado.

    • Revisão: selecione a ramificação ou tag a ser criada quando o acionador for executado.

      • Branch: digite o nome da ramificação para invocar sua versão.
      • Tag: insira o nome da tag para invocar a build.
    • Configuração: selecione o arquivo de configuração da versão (localizado no seu repositório remoto) ou crie um arquivo de configuração da versão in-line para usar na sua versão.

      • Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração de versão para sua configuração. É necessário fornecer o local do arquivo de configuração da versão e, opcionalmente, as variáveis de substituição que você quer usar.

      • Dockerfile: use um Dockerfile para sua configuração. É necessário especificar o diretório Dockerfile e um nome para a imagem resultante. Também é possível fornecer um tempo limite para sua build. Ao fornecer o Dockerfile e o nome da imagem, você verá uma visualização do comando docker build que sua versão executará.

      • Inline: use uma configuração de compilação in-line para sua configuração. Clique em Abrir editor para gravar o arquivo de configuração da criação no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração da versão.

    • Substituições (opcional): se você selecionou o arquivo de configuração da criação como sua opção de configuração da versão, pode optar por definir um gatilho específicovariáveis de substituição usando este campo.

      Neste exemplo, queremos acompanhar a implantação de um novo binário quando ele é enviado para um bucket. Para receber esses dados, podemos criar variáveis de substituição usando vinculações de payload.

      Especifique as seguintes variáveis e valores abaixo:

      Nome da variável Valor da variável
      _EVENT_TYPE $(body.message.attributes.eventType)
      _BUCKET_ID $(body.message.attributes.bucketId)
      _OBJECT_ID $(body.message.attributes.objectId)

      body.message faz referência à PubSubMessage publicada pelos editores e consumida pelos assinantes. Para ver mais exemplos do payload de notificação do Pub/Sub, consulte Exemplos de notificação.

    • Filtros (opcional): é possível criar filtros em um gatilho que determina se o gatilho executará uma versão de resposta ao payload de entrada especificando os filtros nas variáveis de substituição. A expressão de filtro precisa ser avaliada como true para que uma versão seja executada.

      Recomendamos usar a filtragem ao configurar acionadores do Pub/Sub em tópicos com várias mensagens. Os filtros podem ser usados para controlar com precisão as builds executadas em resposta às mensagens recebidas do Pub/Sub. Para saber mais sobre os riscos associados à configuração de um gatilho sem filtros, consulte Riscos associados a um gatilho não filtrado.

      Como queremos que o acionador execute uma versão se o novo binário tiver sido implantado em um bucket específico, podemos usar o operador "==" para verificar as correspondências exatas. Também é possível usar a palavra-chave "correspondências" se você quiser corresponder por expressão regular.

      Especifique os seguintes filtros:

      • _EVENT_TYPE == OBJECT_FINALIZE
      • _OBJECT_ID corresponde a ^<object-id>$
      • _BUCKET_ID corresponde a ^<bucket-id>$
  1. Clique em Criar para criar seu gatilho de compilação.
  2. .

gcloud

Para criar um gatilho de compilação que ouça eventos de criação com um tipo de evento específico no Cloud Storage:

  1. Abra uma janela de terminal.
  2. Execute o comando gcloud alpha para criar um gatilho de compilação no seu projeto. No exemplo abaixo, o acionador está configurado para responder a versões com um evento do Cloud Storage associado a um novo binário enviado para um bucket de armazenamento atual:

     gcloud alpha builds triggers create pubsub \
       --name=TRIGGER_NAME \
       --topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG
       --subtitutions=\
         _EVENT_TYPE='$(body.message.attributes.eventType)'
         _BUCKET_ID='$(body.message.attributes.bucketId)'
         _OBJECT_ID='$(body.message.attributes.objectId)'
       --filter='_EVENT_TYPE == "OBJECT_FINALIZE" && _OBJECT_ID.matches("<object-id>") && _BUCKET_ID.matches("<bucket-id>")'
       --repo=REPO_NAME
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

    Em que:

    • TRIGGER_NAME é o nome do gatilho.
    • PROJECT_ID é o ID do projeto do Cloud.
    • TOPIC_NAME é o nome do tópico do Pub/Sub em que você se inscreveu.
    • BUILD_CONFIG é o caminho para seu arquivo de configuração da versão.
    • INLINE_BUILD_CONFIG é o caminho para seu arquivo de configuração de build in-line.
    • REPO_NAME é o nome do repositório de origem em que a versão é invocada.
    • TAG_NAME é o nome da tag se você quiser que o gatilho seja criado em uma tag.
    • BRANCH_NAME é o nome do branch se você quiser que o gatilho seja criado para uma ramificação.

Riscos associados a um gatilho não filtrado

Se você não tiver configurado filtros no gatilho do Pub/Sub, o gatilho poderá acabar invocando um número infinito de compilações se o gatilho modificar um artefato ou objeto que publica inadvertidamente uma nova mensagem no tópico está ouvindo. Por exemplo, o gatilho poderá invocar um número infinito de versões se seu acionador:

  • Aponta para um tópico gcr.
  • Cria qualquer imagem ou tag em gcr.
  • Aponta para um tópico gcs para um objeto específico no seu bucket e modifica esse objeto.

Se você encontrar um loop infinito, é possível excluir o gatilho ou atualizá-lo para apontar para um tópico separado. Isso evita cobranças adicionais para cada versão invocada.

Como usar o CEL para filtrar eventos de build

O Cloud Build usa a CEL com a variável build nos campos listados no recurso Build para acessar os campos associados ao evento de build, como o ID do gatilho, a lista de imagens ou os valores de substituição. É possível usar a string filter para filtrar eventos de versão no arquivo de configuração da criação usando qualquer campo listado no recurso Build. Para encontrar a sintaxe exata associada ao seu campo, consulte o arquivo cloudbuild.proto.

Como filtrar por ID do gatilho

Para filtrar por ID de gatilho, especifique o valor do ID do gatilho no campo filter usando build.build_trigger_id, em que trigger-id é o ID do gatilho como uma string:

filter: build.build_trigger_id == trigger-id

Como filtrar por status

Para filtrar por status, especifique o status do build que você quer filtrar no campo filter usando build.status.

O exemplo a seguir mostra como filtrar eventos de build com um status SUCCESS usando o campo filter:

filter: build.status == Build.Status.SUCCESS

Também é possível filtrar builds com status variados. O exemplo a seguir mostra como filtrar eventos de build com um status SUCCESS, FAILURE ou TIMEOUT usando o campo filter:

filter: build.status in [Build.Status.SUCCESS, Build.Status.FAILURE, Build.Status.TIMEOUT]

Para ver valores de status adicionais pelos quais você pode filtrar, consulte Status na referência do recurso do Build.

Como filtrar por tag

Para filtrar por tag, especifique o valor da tag no campo filter usando build.tags, em que tag-name é o nome da tag:

filter: tag-name in build.tags

É possível filtrar com base no número de tags especificadas no evento de build usando size. No exemplo a seguir, o campo filter filtra eventos de build que têm exatamente duas tags especificadas, uma delas como v1:

filter: size(build.tags) == 2 && "v1" in build.tags

Como filtrar por imagens

Para filtrar por imagens, especifique o valor da imagem no campo filter usando build.images, em que image-name é o nome completo da imagem conforme listado no Container Registry, como gcr.io/example/image-one:

filter: image-name in build.images

No exemplo a seguir, o filter filtra eventos de build com gcr.io/example/image-one ou gcr.io/example/image-two especificados como nomes de imagem:

filter: "gcr.io/example/image-one" in build.images || "gcr.io/example/image-two" in build.images

Como filtrar por tempo

É possível filtrar eventos de build com base no tempo de criação, horário de início ou horário de término de um build especificando uma das seguintes opções no campo filter: build.create_time, build.start_time ou build.finish_time.

No exemplo a seguir, o campo filter usa timestamp para filtrar eventos de build com um horário de solicitação para criar o build em 20 de julho de 2020, às 6h:

filter: build.create_time == timestamp("2020-07-20:T06:00:00Z")

Também é possível filtrar eventos de build por comparações de tempo. No exemplo a seguir, o campo filter usa timestamp para filtrar eventos de versão com um horário de início entre 6 de julho de 2020, às 6h, e 30 de julho de 2020, às 6h.

filter: timestamp("2020-07-20:T06:00:00Z") >= build.start_time && build.start_time <= timestamp("2020-07-30:T06:00:00Z")

Para saber mais sobre como os fusos horários são expressos em CEL, consulte a definição de linguagem para fusos horários.

Para filtrar por duração de um build, use duration para comparar carimbos de data/hora. No exemplo a seguir, o campo filter usa duration para filtrar eventos de build com um build executado por pelo menos cinco minutos:

filter: build.finish_time - build.start_time >= duration("5m")

Como filtrar por substituição

É possível filtrar por substituição especificando a variável de substituição no campo filter usando build.substitutions. No exemplo a seguir, o campo filter lista versões que contêm a variável de substituição substitution-variable e verifica se o substitution-variable corresponde ao substitution-value especificado:

filter: build.substitutions[substitution-variable] == substitution-value

Em que:

  • substitution-variable é o nome da variável de substituição.
  • substitution-value é o nome do valor de substituição.

Também é possível filtrar por padrão os valores das variáveis de substituição. No exemplo a seguir, o campo filter lista os builds que têm o nome da ramificação master e os builds que têm o nome de repositório github.com/user/my-example-repo. As variáveis de substituição padrão BRANCH_NAME e REPO_NAME são transmitidas como chaves para o build.substitutions:

filter: build.substitutions["BRANCH_NAME"] == "master" && build.substitutions["REPO_NAME"] == "github.com/user/my-example-repo"

Se você quiser filtrar strings usando expressões regulares, use a função integrada matches. No exemplo abaixo, o campo filter filtra as criações com status FALHA ou TEMPO LIMITE e também tem uma variável de substituição de versão TAG_NAME com um valor correspondente à expressão regular v{DIGIT}.{DIGIT}.{3 DIGITS})

filter: build.status in [Build.Status.FAILURE, Build.Status.TIMEOUT] && build.substitutions["TAG_NAME"].matches("^v\\d{1}\\.\\d{1}\\.\\d{3}$")`

Para ver uma lista de valores de substituição padrão, consulte Como usar substituições padrão.

A seguir