Pipelines de lançamento e fontes de artefato

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Com o Azure Pipelines, você pode implantar seus artefatos de uma ampla variedade de fontes de artefato e integrar seu fluxo de trabalho a diferentes tipos de repositórios de artefatos. As versões podem ser vinculadas a várias fontes de artefato, em que uma é designada como a fonte primária.

Fontes de artefato

O Azure Pipelines dá suporte a uma ampla variedade de repositórios, ferramentas de controle do código-fonte e sistemas de integração contínua.

Ao criar uma versão, você pode especificar a versão da origem do artefato. Por padrão, as versões usam a versão mais recente do artefato de origem. Você também pode optar por usar o build mais recente de um branch específico especificando as tags, uma versão específica ou permitir que o usuário especifique a versão no momento da criação da versão.

Captura de tela mostrando como adicionar um artefato a um pipeline de lançamento clássico.

Se você vincular mais de um artefato, poderá especificar qual deles é a fonte primária (padrão). A fonte de artefato primária é usada para definir um número de variáveis predefinidas. Ela também pode ser usada em versões de nomenclatura.

Captura de tela mostrando como definir uma fonte de artefato primária.

Observação

Os itens suspensos Default version dependem do tipo de origem da definição de build vinculada.

  • As seguintes opções são compatíveis com todos os tipos de repositório: Specify at the time of release creation, Specific version e Latest.

  • As opções Latest from a specific branch with tags e Latest from the build pipeline default branch with tags são compatíveis com os seguintes tipos de repositório: TfsGit, GitHub, Bitbucket e GitHubEnterprise.

  • Latest from the build pipeline default branch with tags não é compatível com as definições de build XAML.

As seções a seguir descrevem como trabalhar com os diferentes tipos de fontes de artefato.

Fontes de artefato – Azure Pipelines

Você pode vincular um pipeline de lançamento a qualquer build do Azure Pipelines. Você também pode vincular vários pipelines de build e especificar os valores padrão deles, bem como configurar gatilhos de implantação em várias fontes de build. Quando qualquer um dos builds for concluído, ele disparará a criação de uma versão.

Os seguintes recursos estão disponíveis ao usar o Azure Pipelines como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.
Estágios de implantação O resumo do build lista todos os estágios de implantação em que o artefato foi implantado.

Observação

Você deve incluir uma tarefa Publicar Artefatos em seu pipeline de build. Para pipelines de build do YAML, um artefato com o nome drop é publicado implicitamente.

Por padrão, as versões são executadas com um escopo da autorização de trabalho no nível da coleção. Isso significa que as versões podem acessar recursos em todos os projetos da organização (ou coleção para Azure DevOps Server). Isso é útil ao vincular artefatos de build de outros projetos. Você pode habilitar Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento nas configurações do projeto para restringir o acesso ao artefato de um projeto.

Para definir o escopo da autorização de trabalho para a organização:

  • Navegue até as Configurações da organização.
  • Selecione Configurações em Pipelines.
  • Ative a alternância Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento para limitar o escopo ao projeto atual. Essa é a configuração recomendada para boas medidas de segurança.

Para definir o escopo da autorização de trabalho para um projeto específico:

  • Navegue até as suas Configurações do projeto.
  • Selecione Configurações em Pipelines.
  • Ative a alternância Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento para limitar o escopo ao projeto atual. Essa é a configuração recomendada, pois aprimora a segurança dos pipelines.

Observação

Se o escopo estiver definido como projeto no nível da organização, você não poderá alterar o escopo em cada projeto.

Todos os trabalhos em uma execução de lançamento são executados com o escopo da autorização de trabalho definido como coleção. Em outras palavras, esses trabalhos têm acesso a recursos em todos os projetos em sua coleção de projetos.

Fontes de artefato – controle de versão

Há alguns cenários em que talvez você queira consumir artefatos de diferentes controles de origem diretamente, sem passá-los por um pipeline de build. Por exemplo:

  • Desenvolver um aplicativo PHP ou JavaScript que não exija um pipeline de build explícito.

  • Você gerencia configurações para várias fases em repositórios de controle de versão diferentes e deseja consumir esses arquivos de configuração diretamente do controle de versão como parte do pipeline de implantação.

  • Você gerencia sua infraestrutura e configuração como código e deseja gerenciar esses arquivos em um repositório de controle de versão.

Como você pode configurar várias fontes de artefato em apenas um pipeline de lançamento, você pode vincular um pipeline de build que produz os binários do aplicativo, bem como um repositório de controle de versão que armazena os arquivos de configuração no mesmo pipeline, e usar os dois conjuntos de artefatos juntos durante a implantação.

O Azure Pipelines dá suporte a repositórios do TFVC (Controle de Versão do Team Foundation), repositórios Git e repositórios GitHub.

Você pode vincular um pipeline de lançamento a qualquer um dos repositórios Git ou TFVC em qualquer projeto em sua coleção (você precisará de acesso de leitura a esses repositórios). Nenhuma configuração adicional é necessária ao implantar artefatos de controle de versão na mesma coleção.

Ao vincular um Repositório do GitHub e selecionar um branch, você pode editar as propriedades padrão dos tipos de artefato após o artefato ter sido salvo. Isso é particularmente útil em cenários nos quais o branch para a versão estável do artefato foi alterado, e versões contínuas futuras devem usar esse branch para obter versões mais recentes do artefato. Você também pode especificar detalhes do check-out, como se submódulos de check-out e arquivos rastreados por LFS e a profundidade de busca superficial.

Ao vincular um branch TFVC, você pode especificar o conjunto de alterações a ser implantado ao criar uma versão.

Os seguintes recursos estão disponíveis ao usar TFVC, Git e GitHub como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

Por padrão, as versões são executadas com um escopo da autorização de trabalho no nível da coleção. Isso significa que as versões podem acessar recursos em todos os projetos da organização (ou coleção para Azure DevOps Server). Isso é útil ao vincular artefatos de build de outros projetos. Você pode habilitar Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento nas configurações do projeto para restringir o acesso ao artefato de um projeto.

Fontes de artefato – Jenkins

Para consumir artefatos Jenkins, você precisa criar uma conexão de serviço para autenticar com o servidor Jenkins. Confira gerenciar conexões de serviço e conexão de serviço Jenkins para obter mais informações. O projeto Jenkins precisa ser configurado com uma ação pós-build para publicar seus artefatos.

Os seguintes recursos estão disponíveis ao usar o Jenkins como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

Os artefatos gerados por builds do Jenkins normalmente são propagados para repositórios de armazenamento para arquivamento e compartilhamento. O armazenamento de blobs do Azure é um dos repositórios compatíveis, permitindo que você consuma projetos do Jenkins que publicam no armazenamento do Azure como fontes de artefato em um pipeline de lançamento. O Azure Pipelines baixa os artefatos automaticamente do Azure para o agente que executa o pipeline. Nesse cenário, a conectividade entre o agente e o servidor Jenkins não é necessária. Os agentes hospedados pela Microsoft podem ser usados sem expor o servidor à Internet.

Observação

Talvez o Azure Pipelines não consiga entrar em contato com o servidor Jenkins se, por exemplo, ele estiver dentro da rede corporativa. Se esse for o caso, você poderá integrar o Azure Pipelines ao Jenkins configurando um agente local que pode acessar o servidor Jenkins. Você não poderá ver o nome de seus projetos do Jenkins ao vincular a um build, mas poderá inserir o nome no campo de texto de URL.

Fontes de artefato – contêineres

Ao implantar aplicativos em contêineres, a imagem de contêiner é enviada pela primeira vez para um registro de contêiner. Em seguida, você pode implantar sua imagem de contêiner no Aplicativo Web do Azure para Contêineres ou em um cluster do Docker/Kubernetes. Você precisa criar uma conexão de serviço para autenticar com o Azure. Confira Gerenciar conexões de serviço para obter mais detalhes.

Os seguintes recursos estão disponíveis ao usar o Contêiner do Azure como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

Observação

Ao usar várias fontes de artefato, não há suporte para mapear uma fonte de artefato para disparar uma fase específica. Uma versão será criada sempre que houver um push para qualquer uma das fontes de artefato. Se você quiser fazer isso, o Azure Pipelines recomenda dividir o pipeline de lançamento em várias versões.

Fontes de artefato – Azure Artifacts

Abaixo estão alguns dos cenários em que você pode usar o Azure Artifacts como uma fonte de artefato:

  1. O binário do aplicativo é publicado no Azure Artifacts e você deseja consumir o pacote em um pipeline de lançamento.
  2. Você precisa de pacotes adicionais armazenados no Azure Artifacts como parte do fluxo de trabalho de implantação.

Usando o Azure Artifacts em seu pipeline de lançamento, você precisa selecionar o Feed, o Pacote e a Versão padrão do pacote. Você pode optar por escolher a versão mais recente do pacote, usar uma versão específica ou selecionar a versão no momento da criação da versão. Durante a implantação, o pacote é baixado/extraído para o agente que executa o pipeline.

Os seguintes recursos estão disponíveis ao usar o Azure Artifacts como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

Manipulando instantâneos do Maven

Ao usar instantâneos do Maven, várias versões podem ser baixadas ao mesmo tempo (por exemplo, myApplication-2.1.0.BUILD-20190920.220048-3.jar, myApplication-2.1.0.BUILD-20190820.221046-2.jar, myApplication-2.1.0.BUILD-20190820.220331-1.jar). Talvez seja necessário remover a versão antiga e manter apenas o artefato mais recente antes da implantação. Execute o seguinte comando do PowerShell em um prompt de comando com privilégios elevados para remover todas as cópias, exceto aquela com o valor lexicográfico mais alto:

Get-Item "myApplication*.jar" | Sort-Object -Descending Name | Select-Object -SkipIndex 0 | Remove-Item

Observação

Você pode armazenar até 30 instantâneos do Maven no feed. Depois de atingir o limite máximo, o Azure Artifacts excluirá automaticamente os instantâneos até reduzir o número deles a 25. Esse processo será disparado automaticamente sempre que 30 instantâneos ou mais forem publicados no feed.

Fontes de artefato – servidor TFS

Você pode usar o Azure Pipelines para implantar artefatos de servidores TFS sem precisar tornar seu servidor detectável na Internet configurando um agente de automação local. Os artefatos são baixados para o agente local e implantados nos servidores de destino especificados sem sair da rede corporativa. Isso é ideal para os clientes aproveitarem os próprios investimentos na infraestrutura local deles, aproveitando as versões do Azure Pipelines.

Para usar servidores TFS como uma fonte de artefato, você precisa instalar a extensão Artefatos do TFS para Azure Pipelines do Visual Studio Marketplace e, em seguida, criar uma conexão de serviço para autenticar com o Azure Pipelines. Depois de autenticado, você pode vincular um pipeline de build do TFS ao pipeline de lançamento e escolher Build TFS externo no menu suspenso Tipo.

Os seguintes recursos estão disponíveis ao usar servidores TFS como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

O Azure Pipelines pode não conseguir entrar em contato com um servidor TFS local caso ele esteja em sua rede corporativa. Se esse for o caso, você poderá integrar o Azure Pipelines ao TFS configurando um agente local que possa acessar o servidor TFS. Você não poderá ver o nome de seus projetos do TFS ou pipelines de build ao vincular a um build, mas poderá incluir essas variáveis nos campos de texto de URL. Além disso, quando você cria uma versão, o Azure Pipelines pode não ser capaz de consultar o servidor TFS para os números de build. Em vez disso, insira a ID de Build (não o número de build) do build desejado no campo apropriado ou selecione o build Mais recente.

Fontes de artefato – TeamCity

Para usar o TeamCity como uma fonte de artefato, primeiro você precisa instalar a extensão Artefatos do TeamCity para Azure Pipelines do Visual Studio Marketplace.

Depois de concluído, crie uma conexão de serviço para autenticar com o servidor do TeamCity. Em seguida, você pode vincular seu artefato de build a um pipeline de lançamento. A configuração de build do TeamCity precisa ser realizada com uma ação para publicar artefatos.

Os seguintes recursos estão disponíveis ao usar o TeamCity como uma fonte de artefato:

Recurso Descrição
Versões de gatilho automático Novas versões podem ser criadas automaticamente quando um novo artefato de build está disponível (incluindo builds XAML). Confira Gatilhos de versão para obter mais detalhes.
Variáveis de artefato Há suporte para diversas variáveis de artefato em fontes do Azure Pipelines.
Itens de trabalho e commits Você pode vincular itens de trabalho do Azure Pipelines e eles serão exibidos nos detalhes das versões. Os commits são exibidos quando você usa controles de origem Git ou TFVC.
Download do artefato Por padrão, os artefatos de build são baixados para o agente que executa o pipeline. Você também pode configurar uma etapa em sua fase para ignorar o download do artefato.

Talvez o Azure Pipelines não consiga entrar em contato com o servidor do TeamCity se, por exemplo, ele estiver dentro da rede corporativa. Se esse for o caso, você poderá integrar o Azure Pipelines ao TeamCity configurando um agente local que possa acessar o servidor do TeamCity. Você não poderá ver o nome de seus projetos do TeamCity ao vincular a um build, mas poderá inserir isso no campo de texto da URL.

Alias da fonte do artefato

Para garantir a exclusividade de cada download de artefato, cada fonte de artefato vinculada a um pipeline de lançamento é fornecida automaticamente com um local de download específico conhecido como alias de origem. Esse local pode ser acessado usando a variável $(System.DefaultWorkingDirectory)\[source alias]

Usar um alias de origem garante que a renomeação de uma fonte de artefato vinculada não exija a edição das propriedades da tarefa, porque o local de download definido no agente não é alterado.

Por padrão, o alias de origem é o nome da origem do artefato prefixado com um sublinhado. Dependendo do tipo da origem do artefato, esse será o nome do pipeline de build, do nome do trabalho, do nome do projeto ou do nome do repositório. Você pode editar o alias de origem na guia artefatos do pipeline de lançamento.

Download do artefato

Quando uma implantação é concluída em um estágio, os artefatos com versão de cada uma das fontes são baixados para o agente de pipeline para que as tarefas em execução nessa fase possam acessar esses artefatos. Os artefatos baixados não são excluídos quando uma versão é concluída. No entanto, quando você inicia a próxima versão, os artefatos baixados são excluídos e substituídos pelo novo conjunto de artefatos.

Uma nova pasta exclusiva no agente é criada para cada pipeline de lançamento quando uma versão é iniciada e os artefatos são baixados para a seguinte pasta:$(System.DefaultWorkingDirectory).

O Azure Pipelines não executa nenhuma otimização para evitar o download dos artefatos inalterados caso a mesma versão seja implantada novamente. Além disso, como o conteúdo baixado anteriormente sempre é excluído quando você inicia uma nova versão, o Azure Pipelines não pode executar downloads incrementais para o agente.

No entanto, você pode configurar seu pipeline para ignorar o download automático para um trabalho ou fase específica se quiser fazer isso.