Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Este artigo discute recursos para pipelines do YAML. Um recurso é qualquer coisa que um pipeline usa que existe fora desse pipeline. Os recursos em pipelines YAML podem ser outros pipelines, builds, contêineres, pacotes, repositórios ou webhooks.
Depois de definir um recurso, você pode consumi-lo em qualquer lugar no seu pipeline. Para obter mais informações e exemplos, consulte definições de recurso.
resources:
pipelines:
- pipeline: resources1
source: otherPipeline
steps:
- download: resources1
artifact: artifact1.txt
Você pode usar o status do recurso para disparar pipelines automaticamente definindo a trigger propriedade na definição de recurso. O pipeline resources.triggeringAlias e resources.triggeringCategory as variáveis são definidos como o nome e a categoria do recurso. Essas variáveis estão vazias, a menos que a Build.Reason variável seja definida como ResourceTrigger.
Os recursos permitem a rastreabilidade total dos serviços que um pipeline usa, incluindo versão, artefatos, confirmações associadas e itens de trabalho. Se você assinar eventos de gatilho em seus recursos, poderá automatizar totalmente seus fluxos de trabalho do DevOps.
Observação
Este artigo discute principalmente os recursos em pipelines YAML. Para obter recursos em pipelines clássicos, consulte Sobre os recursos do Azure Pipelines.
Autorização de recursos
Os recursos devem ser autorizados a serem usados em pipelines. Os proprietários de recurso controlam os usuários e pipelines que podem acessar recursos. Há várias maneiras de autorizar um pipeline YAML a usar recursos.
Use as configurações de administração do recurso para conceder permissões de acesso a todos os pipelines. Por exemplo, você pode gerenciar arquivos seguros e grupos de variáveis na páginaBiblioteca> e pools de agentes e conexões de serviço em Pipelines de configurações>de projeto. Essa autorização é conveniente para recursos que você não precisa restringir, como recursos de teste.
Verifique se você tem pelo menos a função de usuário nas funções de segurança do pool de agentes do seu projeto. Os pipelines YAML criados são automaticamente autorizados a usar recursos nos quais você tem a função de usuário .
Se você adicionar uma definição de recurso a um pipeline YAML, mas o build falhar com um erro como
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use, verifique se você tem pelo menos a função de usuário no recurso. Em seguida, você pode escolher a opção para autorizar os recursos no build com falha. Depois que o recurso for autorizado, você poderá iniciar um novo build.
Verificações de aprovação para recursos
Você pode usar verificações de aprovação e modelos para controlar manualmente o uso de recursos. Usando a verificação de aprovação de modelo necessária, você pode exigir qualquer pipeline que use um determinado recurso ou ambiente para estender de um modelo YAML específico.
Definir uma aprovação de modelo necessária aprimora a segurança, garantindo que seu recurso seja usado apenas em condições específicas. Para obter mais informações, consulte Usar modelos para segurança.
Seletor de versão de recurso manual
O Azure Pipelines avalia as versões padrão para recursos com base em suas definições de recurso. Para execuções agendadas ou execuções manuais se você não escolher manualmente uma execução, o Azure Pipelines considera apenas execuções de CI (integração contínua) concluídas com êxito para avaliar as versões de recursos padrão.
Você pode usar o seletor de versão de recurso manual para escolher diferentes versões de recurso ao disparar manualmente um pipeline de CD (implantação contínua) do YAML. O seletor de versão do recurso tem suporte para recursos de pipeline, build, repositório, contêiner e pacote.
Para pipeline recursos, o seletor de versão manual permite que você veja todas as execuções disponíveis em todos os branches, pesquise as execuções com base no número do pipeline ou branch e escolha uma execução bem-sucedida, com falha ou em andamento.
Você não precisa aguardar a conclusão de uma execução de CI ou executá-la novamente devido a uma falha não relacionada, antes de poder executar o pipeline de CD. Você tem a flexibilidade de escolher qualquer execução que você sabe que produziu os artefatos necessários.
Para usar o seletor de versão do recurso, selecione Recursos no painel Executar pipeline , selecione um recurso e escolha uma versão específica na lista de versões disponíveis. Para recursos em que não é possível buscar versões disponíveis, como pacotes do GitHub, você pode inserir sua versão desejada no campo de texto.
Definições de recurso
Os recursos de pipeline do YAML podem ser:
- Outros pipelines
- Builds
- Contêineres
- Pacotes
- Repositórios ou
- Webhooks.
As seções a seguir fornecem definições e exemplos das categorias de recursos de pipeline do YAML. Para obter informações de esquema completas, consulte a definição de recursos na referência de esquema YAML para a Azure Pipelines.
Recurso pipelines
Você pode usar recursos de CI pipeline como gatilhos para seus fluxos de trabalho de CD. Você também pode referenciar pipeline recursos do pipeline para baixar artefatos ou usar variáveis de recurso de pipeline. Somente o Azure Pipelines pode usar o recurso pipelines.
Na definição de pipelines recurso:
-
pipelineé um nome exclusivo que você usa para referenciar os recursos de pipeline. -
sourceé o nome do pipeline que produziu os artefatos de pipeline.
Para obter informações de esquema completas, consulte a definição resources.pipelines.pipeline .
Exemplo de definições de recurso de pipeline
A definição de recurso de exemplo a seguir consome artefatos de um pipeline dentro do mesmo projeto do Azure DevOps.
resources:
pipelines:
- pipeline: SmartHotel-resource # identifier to use in pipeline resource variables
source: SmartHotel-CI # name of the pipeline that produces the artifacts
Para especificar um pipeline de outro projeto, inclua o project nome na definição de recurso. O exemplo a seguir também usa branch para resolver a versão padrão quando o pipeline é disparado manualmente ou por agendamento. A entrada da ramificação não pode ter curingas.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
branch: releases/M142
Avaliação da versão do recurso
O Azure Pipelines avalia as versões padrão para recursos com base em suas definições de recurso. As versões de artefato de recurso padrão de um pipeline dependem se o pipeline é executado manualmente ou no agendamento ou dispara com base no resultado da execução do recurso.
Para uma execução de pipeline manual ou agendada, os valores do version, branche tags as propriedades na definição de pipeline recurso definem as versões do artefato. A branch entrada não pode ter caracteres curinga e as tags propriedades usam o AND operador.
Para execuções agendadas ou execuções manuais se você não usar o seletor de versão, o Azure Pipelines considera apenas execuções de CI (integração contínua) concluída com êxito ao avaliar versões de recursos padrão. Para execuções manuais, você pode substituir as versões definidas usando o seletor de versão manual.
A tabela a seguir lista pipeline as propriedades de definição de recurso e as versões de artefato especificadas.
| Propriedade especificada | Versão do artefato |
|---|---|
version |
Compilação que tem o número de execução especificado |
branch |
Build mais recente executado no branch especificado |
tags |
Build mais recente que tem todas as marcas especificadas |
branch e tags |
Execução de build mais recente no branch especificado que tem todas as marcas especificadas |
version e branch |
Compilar com o número de execução especificado e o branch especificado |
| Nenhum | Build mais recente em todos os branches |
A definição de recurso a seguir pipeline usa as branch propriedades e tags a versão padrão quando o pipeline é agendado ou disparado manualmente. A myCIAlias versão de artefatos é a última execução de build no main branch que tem as marcas e Production as PreProduction marcas.
resources:
pipelines:
- pipeline: myCIAlias
project: Fabrikam
source: Fabrikam-CI
branch: main
tags:
- Production
- PreProduction
Gatilhos de recurso de pipeline
Para execuções de pipeline que disparam no resultado de uma execução de recurso, as configurações de trigger propriedade na definição de recurso determinam as versões de artefato de recurso padrão. Para usar um pipeline recurso como gatilho para executar o pipeline atual, você deve definir a trigger propriedade. Se você não incluir uma trigger propriedade, as execuções de recursos não dispararão as execuções de pipeline atuais.
Quando um pipeline é disparado com base em um trigger valor em uma pipeline definição de recurso, os valores da definição versionbranchgeral do recurso e tags as propriedades são ignorados. As trigger propriedades determinam as versões do artefato.
Importante
Quando você define um gatilho de recurso de pipeline:
- Se o
pipelinerecurso for do mesmo repositório que o pipeline atual ouselfo gatilho estiver no mesmo branch e confirmar que aciona o evento de gatilho. - Se o
pipelinerecurso for de um repositório diferente do pipeline atual, o gatilho estará no branch padrão dopipelinerepositório de recursos.
A tabela a seguir descreve como as propriedades afetam o comportamento do trigger gatilho.
| Propriedade Trigger | Comportamento desencadeador |
|---|---|
true |
O gatilho ocorre quando o pipeline de recursos conclui com êxito uma execução. |
branches |
O gatilho ocorre quando o pipeline de recursos conclui com êxito uma execução em um dos include branches. |
tags |
O gatilho ocorre quando o pipeline de recursos conclui com êxito uma execução marcada com todas as marcas especificadas. |
stages |
O gatilho ocorre quando o pipeline de recursos executa com êxito o especificado stages. |
branches, tags e stages |
O gatilho ocorre quando a execução bem-sucedida do pipeline de recursos satisfaz todas as condições de branch, marca e estágio. |
O exemplo a seguir mostra uma definição de recurso de pipelines com um simples trigger.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger: true
O exemplo a seguir mostra um recurso de pipeline trigger com condições de ramificação.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger:
branches:
- releases/*
- resources.triggeringAlias
O exemplo a seguir usa filtros stages para avaliar as condições de gatilho para pipelines de CD. O gatilho stages usa o AND operador. O pipeline de CD é disparado após a conclusão bem-sucedida de todos os estágios listados.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Fabrikam-CI
trigger:
stages:
- PreProduction
- Production
O exemplo a seguir usa filtros tags para avaliação de versão padrão e para o gatilho. As trigger marcas usam o AND operador. O tags conjunto em pipeline definições de recurso é diferente das marcas definidas em branches no repositório Git.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Fabrikam-CI
tags:
- Production
trigger:
tags:
- Production
- Signed
O pipeline a seguir é executado sempre que o pipeline de recursos SmartHotel-CI:
- É executado em um dos
releasesbranches ou nomainbranch. - É marcado com ambos
VerifiedeSigned. - Conclui os estágios e
ProductionosPreProductionestágios.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
Download de artefato de pipeline
Você pode usar a download etapa em um pipeline YAML para baixar artefatos associados à execução atual ou a outro pipeline recurso.
Os artefatos são baixados automaticamente somente em trabalhos de implantação. Todos os artefatos do pipeline atual e todos os seus pipeline recursos são baixados automaticamente e estão disponíveis no início de cada trabalho de implantação. Você pode substituir esse comportamento definindo download como none, ou especificando outro pipeline identificador de recurso.
Em um trabalho de build regular, os artefatos não são baixados automaticamente. Use download explicitamente quando necessário.
download Na etapa, a propriedade opcional artifact especifica nomes de artefato. Se não for especificado, todos os artefatos disponíveis serão baixados.
A propriedade opcional patterns define padrões que representam arquivos a serem baixados. Para obter informações completas sobre o esquema, consulte a definição steps.download .
- job: deploy_windows_x86_agent
steps:
- download: SmartHotel
artifact: WebTier1
patterns: '**/*.zip'
Artefatos do download do pipeline recurso para o $(PIPELINE. WORKSPACE)/<pipeline-identifier>/<artifact-identifier> folder. Para obter mais informações, consulte Publicar e baixar artefatos de pipeline. Para obter uma maneira alternativa de baixar artefatos de pipeline, consulte Baixar artefatos.
Variáveis de recurso do pipeline
Os metadados de um recurso de pipeline estão disponíveis para todos os trabalhos em cada execução como variáveis predefinidas. Essas variáveis estão disponíveis para o pipeline somente em runtime e, portanto, não podem ser usadas em expressões de modelo, que são avaliadas em tempo de compilação do pipeline.
Para obter mais informações, consulte Definir variáveis e metadados de recursos de pipeline como variáveis predefinidas.
O exemplo a seguir retorna os valores de variáveis predefinidos para o recurso de pipeline myresourcevars.
resources:
pipelines:
- pipeline: myresourcevars
source: mypipeline
trigger: true
steps:
- script: |
echo $(resources.pipeline.myresourcevars.pipelineID)
echo $(resources.pipeline.myresourcevars.runName)
echo $(resources.pipeline.myresourcevars.runID)
echo $(resources.pipeline.myresourcevars.runURI)
echo $(resources.pipeline.myresourcevars.sourceBranch)
echo $(resources.pipeline.myresourcevars.sourceCommit)
echo $(resources.pipeline.myresourcevars.sourceProvider)
echo $(resources.pipeline.myresourcevars.requestedFor)
echo $(resources.pipeline.myresourcevars.requestedForID)
Compila recurso
Se você tiver um sistema de build de CI que produz artefatos, poderá consumir os artefatos com builds recursos.
A categoria builds é extensível. Um recurso build pode ser de qualquer sistema de CI externo, como Jenkins, TeamCity ou CircleCI. Você pode usar builds para escrever uma extensão para consumir artefatos do serviço de build ou introduzir um novo tipo de serviço.
Na definição build, o padrão version é a compilação bem-sucedida mais recente. Você deve definir trigger explicitamente se desejado. Para obter informações de esquema completas, consulte a definição resources.builds.build .
No exemplo a seguir, Jenkins é o tipo de recurso.
resources:
builds:
- build: Spaceworkz
type: Jenkins
connection: MyJenkinsServer
source: SpaceworkzProj # name of the Jenkins source project
trigger: true
Importante
Só há suporte para gatilhos para Jenkins hospedado em que o Azure DevOps tem uma linha de visão com o servidor Jenkins.
A tarefa downloadBuild
Os build artefatos de recurso não são baixados automaticamente em trabalhos/implantação-trabalhos. Para consumir artefatos do recurso build como parte de seus trabalhos, você precisa adicionar explicitamente a tarefa downloadBuild. Você pode personalizar o comportamento de download para cada implantação ou trabalho.
A downloadBuild tarefa é resolvida automaticamente para a tarefa de download correspondente para o tipo de build recurso que o runtime define. Artefatos do download do build recurso para o $(PIPELINE. WORKSPACE)/<build-identifier>/ folder.
Na definição downloadBuild, você especifica o recurso do qual fazer download de artefatos. A propriedade artifact opcional especifica artefatos a serem baixados. Se não for especificado, todos os artefatos associados ao download do recurso.
A propriedade patterns opcional define um caminho de minicorrespondência ou uma lista de caminhos de minicorrespondência a serem baixados. Se estiver em branco, o artefato inteiro será baixado. O exemplo a seguir baixa apenas os arquivos *.zip .
- job: deploy_windows_x86_agent
steps:
- downloadBuild: Spaceworkz
patterns: '**/*.zip'
Para obter informações completas sobre o esquema, consulte a definição steps.downloadBuild .
Recurso repositórios
Use a repository palavra-chave para informar o sistema sobre repositórios externos se:
- Seu pipeline tem modelos em outro repositório.
- Você deseja usar o check-out de vários repositórios com um repositório que requer uma conexão de serviço.
Por exemplo:
resources:
repositories:
- repository: common
type: github
name: Contoso/CommonTools
endpoint: MyContosoServiceConnection
Para obter informações de esquema completas, consulte a definição resources.repositories.repository .
Tipos de recurso de repositório
O Azure Pipelines dá suporte aos gittipos , githubgithubenterprisee bitbucket repositório.
- O tipo
gitrefere-se aos repositórios Git do Azure Repos. - Os repositórios GitHub Enterprise exigem uma conexão de serviço do GitHub Enterprise para autorização.
- Os repositórios Bitbucket Cloud exigem uma conexão de serviço do Bitbucket Cloud para autorização.
A tabela a seguir descreve os repository tipos de recurso:
| Tipo | Valor de nome | Exemplo |
|---|---|---|
git |
Um repositório diferente no mesmo projeto ou na mesma organização. | Mesmo projeto: name: otherRepoOutro projeto na mesma organização: name: otherProject/otherRepo. |
github |
Nome completo do repositório GitHub, incluindo o usuário ou a organização. | name: myOrganization/otherRepo |
githubenterprise |
Nome completo do repositório GitHub Enterprise, incluindo o usuário ou a organização. | name: myEnterpriseOrg/otherRepo |
bitbucket |
Nome completo do repositório Bitbucket Cloud, incluindo o usuário ou a organização. | name: MyBitbucketOrg/otherRepo |
Variáveis de recurso do repositório
Os metadados de um recurso de repositório estão disponíveis para todos os trabalhos em cada execução como variáveis de runtime. O <alias> identificador é do repository seu repository recurso.
resources.repositories.<alias>.name
resources.repositories.<alias>.ref
resources.repositories.<alias>.type
resources.repositories.<alias>.id
resources.repositories.<alias>.url
A definição de recurso a seguir repository tem um alias de common, portanto, você acessa as variáveis de recurso do repositório usando resources.repositories.common.*.
resources:
repositories:
- repository: common
type: git
ref: main
name: repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
Os metadados de um recurso de repositório estão disponíveis para todos os trabalhos em cada execução como variáveis de runtime. O <alias> identificador é do repository seu repository recurso.
resources.repositories.<alias>.name
resources.repositories.<alias>.ref
resources.repositories.<alias>.type
resources.repositories.<alias>.id
resources.repositories.<alias>.url
resources.repositories.<alias>.version
O exemplo a seguir tem um alias de common, portanto, você acessa as variáveis de recurso do repositório usando resources.repositories.common.*.
resources:
repositories:
- repository: common
type: git
ref: main
name: Repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
version: $[ resources.repositories.common.version ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
echo "version = $(version)"
Palavra-chave de checkout para repositórios
Os repositórios do recurso repository não são sincronizados automaticamente nos seus trabalhos. Você pode usar a checkout palavra-chave para buscar um repositório definido em um repository recurso. Para obter mais informações, confira Fazer check-out de vários repositórios no pipeline. Para obter informações de esquema completas, consulte a definição steps.checkout .
Recurso contêineres
Você pode usar containers recursos para consumir imagens de contêiner em seus pipelines de CI/CD. Um recurso container pode ser um registro do Docker público ou privado ou uma instância do Registro de Contêiner do Azure.
Você pode consumir uma imagem de recurso de contêiner genérico como parte de seus trabalhos ou usá-la em trabalhos de contêiner. Se o pipeline exigir o suporte de um ou mais serviços, você também precisará criar e se conectar a contêineres de serviço. Você pode usar volumes para compartilhar dados entre serviços.
Se você precisar consumir imagens de um registro do Docker, poderá definir um recurso de contêiner genérico sem usar uma type palavra-chave. Por exemplo:
resources:
containers:
- container: smartHotel
endpoint: myDockerRegistry
image: smartHotelApp
Para obter informações de esquema completas, consulte a definição resources.containers.container .
Observação
A enabled: 'true' sintaxe para habilitar gatilhos de contêiner para marcas de imagem é diferente da sintaxe de outros gatilhos de recurso. Use a sintaxe correta para recursos específicos.
Tipo de recurso do Registro de Contêiner do Azure
Para consumir suas imagens do Registro de Contêiner do Azure, você pode usar o tipo de recurso de contêiner de primeira classe acr. Você pode usar esse tipo de recurso em seus trabalhos e habilitar gatilhos de pipeline automáticos.
Você precisa de permissões de Proprietário ou Colaborador do Registro de Contêiner do Azure para usar gatilhos de pipeline automáticos. Para obter mais informações, confira Funções e permissões do Registro de Contêiner do Azure.
Para usar o tipo de recurso acr, você deve especificar os valores azureSubscription, resourceGroup e repository para o registro de contêiner do Azure. Por exemplo:
resources:
containers:
- container: petStore
type: acr
azureSubscription: ContosoConnection
resourceGroup: ContosoGroup
registry: petStoreRegistry
repository: myPets
trigger:
tags:
include:
- production*
Observação
A avaliação do gatilho ocorre apenas no branch padrão. Defina a ramificação padrão correta ou mescle o arquivo YAML na ramificação padrão atual. Para obter mais informações sobre como alterar o branch padrão do pipeline, consulte o branch padrão do Pipeline.
Variáveis de recurso de contêiner
Depois de definir um contêiner como um recurso, os metadados de imagem de contêiner são transmitidos para o pipeline como variáveis. Informações como imagem, registro e detalhes de conexão podem ser acessadas em todos os trabalhos usados nas suas tarefas de implantação de contêiner.
As variáveis de recurso de contêiner funcionam com o Docker e o Registro de Contêiner do Azure. Não é possível usar variáveis de recurso de contêiner para contêineres de imagem local. A location variável se aplica somente ao tipo de recurso de acr contêiner.
O exemplo a seguir tem uma conexão de serviço do Azure Resource Manager chamada arm-connection. Para obter mais informações, confira Registros, repositórios e imagens de contêiner do Azure.
resources:
containers:
- container: mycontainer
type: acr
azureSubscription: arm-connection
resourceGroup: rg-storage-eastus
registry: mycontainerregistry
repository: hello-world
trigger:
tags:
- latest
steps:
- script: echo |
echo $(resources.container.mycontainer.type)
echo $(resources.container.mycontainer.registry)
echo $(resources.container.mycontainer.repository)
echo $(resources.container.mycontainer.tag)
echo $(resources.container.mycontainer.digest)
echo $(resources.container.mycontainer.URI)
echo $(resources.container.mycontainer.location)
Recurso de pacotes
Você pode consumir pacotes NuGet e npm GitHub como recursos em pipelines YAML. Para habilitar gatilhos de pipeline automatizados quando uma nova versão do pacote for lançada, defina a trigger propriedade como true.
Quando você definir package recursos, especifique o pacote <repository>\<name> na name propriedade e defina o pacote type como NuGet ou npm. Para usar pacotes GitHub, use a autenticação baseada em PAT (token de acesso pessoal) e crie uma conexão de serviço do GitHub que usa o PAT.
Para obter informações completas sobre o esquema, consulte a definição resources.packages.package .
Os pacotes não são baixados automaticamente em trabalhos por padrão. Para baixar, use getPackage.
O exemplo a seguir tem uma conexão de serviço do GitHub chamada pat-contoso para um pacote GitHub npm chamado contoso. Para obter mais informações, confira Pacotes GitHub.
resources:
packages:
- package: contoso
type: npm
connection: pat-contoso
name: myname/contoso
version: 7.130.88
trigger: true
steps:
- getPackage: contoso
Recurso webhooks
Observação
Webhooks lançados no Azure DevOps Server 2020.1.
Você pode usar os recursos de pipeline, contêiner, build e pacote do Azure Pipelines para consumir artefatos e automatizar gatilhos, mas não pode usá-los para basear implantações em eventos ou serviços externos. Os webhooks automatizam seu fluxo de trabalho com base em eventos de webhook externos que os recursos do Azure Pipelines de primeira classe não dão suporte. Você pode assinar eventos externos por meio de webhooks e usar os eventos para disparar seus pipelines.
O recurso webhooks em pipelines YAML permite integrar seus pipelines a serviços externos como GitHub, GitHub Enterprise, Nexus e Artifactory para automatizar fluxos de trabalho. Para serviços locais em que o Azure DevOps não tem visibilidade do processo, você pode configurar webhooks no serviço para disparar seus pipelines automaticamente.
Para assinar um evento de webhook, defina um webhook recurso em seu pipeline e especifique uma conexão de serviço de webhook de entrada. Para obter informações de esquema completas, consulte a definição resources.webhooks.webhook .
Você pode consumir os dados de conteúdo JSON como variáveis em seus trabalhos usando o formato ${{ parameters.<WebhookAlias>.<JSONPath>}}. O exemplo a seguir define e chama um recurso de webhook:
resources:
webhooks:
- webhook: myWebhookResource
connection: myWebHookConnection
steps:
- script: echo ${{ parameters.myWebHookResource.resource.message.title }}
Você pode definir filtros no recurso de webhook com base nos dados de conteúdo JSON para personalizar gatilhos para cada pipeline. Sempre que a conexão de serviço de webhook de entrada recebe um evento de webhook, uma nova execução dispara para todos os pipelines inscritos nesse evento de webhook.
O exemplo a seguir usa filtros de webhook.
resources:
webhooks:
- webhook: MyWebhookTrigger
connection: MyWebhookConnection
filters:
- path: repositoryName
value: maven-releases
- path: action
value: CREATED
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
Write-Host ${{ parameters.MyWebhookTrigger.component.group}}
Configuração do gatilho do Webhook
Para configurar um gatilho de webhook, configure um webhook no serviço externo, fornecendo as seguintes informações:
-
URL de solicitação:
https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview - Segredo (opcional): se você precisar proteger o conteúdo JSON, forneça um valor secreto.
Nasconexões do Serviço de> de > de Projeto do Azure DevOps, você cria uma nova conexão de serviço de webhook de entrada. Por exemplo, você pode definir as seguintes informações para um tipo de conexão de serviço do GitHub:
- Nome do WebHook: o nome da conexão de webhook que você criou em seu serviço externo.
- Segredo (opcional): o hash HMAC-SHA1 do conteúdo para verificar a solicitação de entrada. Se você usou um segredo ao criar o webhook, deverá fornecer o mesmo segredo.
-
Cabeçalho Http (opcional): o cabeçalho HTTP na solicitação que contém o valor de hash HMAC-SHA1 do conteúdo para verificação de solicitação. Por exemplo, o cabeçalho da solicitação do GitHub é
X-Hub-Signature.
Para disparar o pipeline usando um webhook, faça uma solicitação POST para https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview. Esse ponto de extremidade está disponível publicamente e não precisa de autorização. A solicitação deve ter um corpo semelhante ao seguinte exemplo:
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Observação
O acesso a dados do corpo da solicitação do webhook pode levar a um YAML incorreto. Por exemplo, a etapa do pipeline - script: echo ${{ parameters.WebHook.resource.message }} extrai toda a mensagem JSON, o que gera YAML inválido. Qualquer pipeline disparado por meio desse webhook não é executado, pois o YAML gerado é inválido.
Rastreabilidade
O Azure Pipelines fornece rastreabilidade total para qualquer recurso consumido em um nível de trabalho de pipeline ou implantação. O Azure Pipelines mostra as seguintes informações para cada execução de pipeline que usa recursos:
- Se um recurso disparou o pipeline, o recurso que disparou o pipeline.
- As versões de recurso e os artefatos consumidos.
- Confirmações associadas a cada recurso.
- Itens de trabalho associados a cada recurso.
Informações de pipeline de CD associadas para pipelines de CI
Para fornecer rastreabilidade de ponta a ponta, você pode acompanhar quais pipelines de CD consumiram um pipeline de CI específico por meio do pipelines recurso. Se outros pipelines consumirem o pipeline de CI, você verá uma guia Pipelines Associados no modo de exibição Executar . A exibição mostra todas as execuções de pipeline YAML de CD que consumiram seu pipeline de CI e os artefatos dele.
Rastreabilidade de ambiente
Depois que um pipeline é implantado em um ambiente, você pode ver uma lista de recursos que ele consumiu e suas confirmações associadas e itens de trabalho.
perguntas frequentes
Quando devo usar recursos de pipelines, o atalho de download ou a tarefa Baixar Artefatos de Pipeline?
Usar um recurso pipelines é uma maneira de consumir artefatos de um pipeline de CI e também configurar gatilhos automatizados. Um recurso fornece visibilidade total do processo exibindo a versão consumida, os artefatos, as confirmações e os itens de trabalho. Quando você define um recurso do pipeline, os artefatos associados são baixados automaticamente nos trabalhos de implantação.
Você pode usar o atalho download para baixar os artefatos em trabalhos de build ou substituir o comportamento de download em trabalhos de implantação. Para obter mais informações, consulte a definição steps.download .
A tarefa Baixar Artefatos de Pipeline não fornece rastreabilidade ou gatilhos, mas às vezes faz sentido usar essa tarefa diretamente. Por exemplo, você pode ter uma tarefa de script armazenada em um modelo diferente que requer que artefatos de um build sejam baixados. Ou talvez você não queira adicionar um recurso de pipeline a um modelo. Para evitar dependências, você pode usar a tarefa Baixar Artefatos de Pipeline para passar todas as informações de build para uma tarefa.
Como posso disparar uma execução de pipeline, quando minha imagem do Docker Hub for atualizada?
O gatilho de recurso de contêiner não está disponível para pipelines do Hub do Docker para YAML, portanto, você precisa configurar um pipeline de versão clássico.
- Crie uma nova conexão de serviço do Docker Hub.
- Crie um pipeline de lançamento clássico e adicione um artefato do Docker Hub. Defina sua conexão de serviço e selecione o namespace, o repositório, a versão e o alias de origem.
- Selecione o gatilho e alterne o gatilho de implantação contínua para Habilitar. Todo push do Docker que ocorre no repositório selecionado cria uma versão.
- Crie uma nova fase e um trabalho. Adicione duas tarefas, logon do Docker e Bash.
- A tarefa do Docker tem a ação
logine registra você no Docker Hub. - A tarefa Bash executa
docker pull <hub-user>/<repo-name>[:<tag>].
- A tarefa do Docker tem a ação
Como posso validar e solucionar problemas com meu webhook?
Crie uma conexão de serviço.
Referencie sua conexão de serviço e nomeie o webhook na seção
webhooks.resources: webhooks: - webhook: MyWebhookTriggerAlias connection: MyServiceConnectionExecutar o pipeline. O webhook é criado no Azure como uma tarefa distribuída para sua organização.
Execute uma chamada à API
POSTcom o JSON válido no corpo parahttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>. Se você receber uma resposta de código de status 200, o webhook estará pronto para ser consumido pelo pipeline.
Se você receber uma resposta de código de status 500 com o erro Cannot find webhook for the given webHookId ..., seu código pode estar em um branch que não seja o branch padrão. Para resolver esse problema:
- Selecione Editar em sua página pipeline.
- No menu Mais ações, selecione Gatilhos.
- Selecione a guia YAML e, em seguida, Obter fontes.
- Em Branch padrão para builds manuais e agendados, atualize a ramificação de recurso.
- Selecione Salvar e colocar na fila.
- Depois que esse pipeline for executado com êxito, execute uma chamada à API
POSTcom o JSON válido no corpo parahttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>. Agora você deve receber uma resposta de código de status 200.
Por que meu gatilho de recurso não funcionou?
Os gatilhos de recursos podem falhar ao serem executados porque:
- A origem da conexão de serviço fornecida é inválida.
- O gatilho não está configurado ou há erros de sintaxe no gatilho.
- As condições de gatilho não são correspondidas.
Para ver por que os gatilhos de pipeline não foram executados, selecione o item de menu Problemas de gatilho na página de definição de pipeline. Problemas de gatilho não estão disponíveis para recursos de repositório.
Na página Problemas de gatilho, as mensagens de erro e aviso descrevem por que o gatilho falhou.