Publicar e baixar artefatos de pipeline
Serviços de DevOps do Azure
Usando o Azure Pipelines, você pode baixar artefatos de estágios anteriores em seu pipeline ou de outro pipeline. Você também pode publicar seu artefato em um compartilhamento de arquivos ou disponibilizá-lo como um artefato de pipeline.
Publicar artefatos
Você pode publicar seus artefatos usando YAML, o editor clássico ou a CLI do Azure:
Nota
Não há suporte para a publicação de artefatos de pipeline em pipelines de versão.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Nota
A publish
palavra-chave é um atalho para a tarefa Publish Pipeline Artifact .
Embora o nome do artefato seja opcional, é uma boa prática especificar um nome que reflita com precisão o conteúdo do artefato. Se você planeja consumir o artefato de um trabalho em execução em um sistema operacional diferente, você deve garantir que todos os caminhos de arquivo sejam válidos para o ambiente de destino. Por exemplo, um nome de arquivo que contém o caractere \
ou *
não será baixado no Windows.
O caminho do arquivo/pasta que você deseja publicar é obrigatório. Este pode ser um caminho absoluto ou relativo para .$(System.DefaultWorkingDirectory)
Os pacotes nos Artefatos do Azure são imutáveis. Depois de publicar um pacote, sua versão é permanentemente reservada. A reexecução de trabalhos com falha falhará se o pacote tiver sido publicado. Uma boa maneira de abordar isso se você quiser ser capaz de executar novamente trabalhos com falha sem enfrentar um pacote de erro já existente, é usar Condições para executar somente se o trabalho anterior foi bem-sucedido.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Nota
Você não será cobrado pelo armazenamento de artefatos de pipeline. O Pipeline Caching também está isento de cobrança de armazenamento. Consulte Quais artefatos contam para o meu armazenamento total faturado.
Atenção
A exclusão de uma execução de pipeline resultará na exclusão de todos os Artefatos associados a essa execução.
Usar .artifactignore
.artifactignore
usa uma sintaxe semelhante a .gitignore
(com poucas limitações) para especificar quais arquivos devem ser ignorados ao publicar artefatos. Verifique se o arquivo .artifactignore está localizado no diretório especificado pelo argumento targetPath da tarefa Publicar Artefatos de Pipeline.
Nota
O caractere +
de sinal de adição não é suportado em caminhos de URL e alguns criam metadados para tipos de pacote, como Maven.
Exemplo: ignorar todos os ficheiros, exceto os ficheiros .exe :
**/*
!*.exe
Importante
Os Artefatos do Azure ignoram automaticamente o caminho da pasta .git quando você não tem um arquivo .artifactignore . Você pode ignorar isso criando um arquivo .artifactignore vazio.
Baixar artefatos
Você pode baixar artefatos usando YAML, o editor clássico ou a CLI do Azure.
steps:
- download: current
artifact: WebApp
- Atual: Baixe artefatos produzidos pela execução do pipeline atual. Opções: atual, específica.
Nota
A lista de artefatos publicados estará disponível apenas nos seguintes trabalhos dependentes. Portanto, use current
a opção somente em trabalhos separados, que dependam de trabalhos com tarefas de publicação de artefatos.
Gorjeta
Você pode usar os recursos do Pipeline para definir sua origem em um só lugar e usá-la em qualquer lugar do pipeline.
Nota
A download
palavra-chave descarrega artefactos. Para obter mais informações, consulte steps.download.
Para baixar um artefato de pipeline de um projeto diferente em sua organização, verifique se você tem as permissões apropriadas configuradas para o projeto downstream e o pipeline que gera o artefato. Por padrão, os arquivos são baixados para $(Pipeline.Workspace). Se um nome de artefato não foi especificado, um subdiretório será criado para cada artefato baixado. Você pode usar padrões de correspondência para limitar quais arquivos são baixados. Consulte Padrões de correspondência de arquivos para obter mais detalhes.
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Seleção de artefatos
Uma única etapa de download pode baixar um ou mais artefatos. Para baixar vários artefatos, deixe o campo de nome do artefato vazio e use padrões de correspondência de arquivos para limitar quais arquivos serão baixados. **
é o padrão padrão de correspondência de arquivos (todos os arquivos em todos os artefatos).
Artefato único
Quando um nome de artefato é especificado:
Somente arquivos para esse artefato específico são baixados. Se o artefato não existir, a tarefa falhará.
Os padrões de correspondência de arquivos são avaliados em relação à raiz do artefato. Por exemplo, o padrão
*.jar
corresponde a todos os arquivos com uma.jar
extensão na raiz do artefato.
O exemplo a seguir ilustra como baixar tudo *.js
de um artefato WebApp
:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Vários artefatos
Quando nenhum nome de artefato é especificado:
Vários artefatos podem ser baixados e a tarefa não falha se nenhum arquivo for encontrado.
Um subdiretório é criado para cada artefato.
Os padrões de correspondência de arquivo devem assumir que o primeiro segmento do padrão é (ou corresponde) a um nome de artefato. Por exemplo,
WebApp/**
corresponde a todos os arquivos doWebApp
artefato. O padrão*/*.dll
corresponde a todos os arquivos com uma.dll
extensão na raiz de cada artefato.
O exemplo a seguir ilustra como baixar todos os .zip
arquivos de todos os artefatos:
steps:
- download: current
patterns: '**/*.zip'
Baixar um artefato específico
O exemplo a seguir demonstra como baixar artefatos de pipeline de uma versão de compilação específica produzida por uma execução específica:
resources:
pipelines:
- pipeline: myPipeline
project: 'xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
source: '79'
version: '597'
steps:
- download: myPipeline
artifact: drop
patterns: '**'
displayName: 'Download Pipeline Artifact'
Artefatos em trabalhos de lançamento e implantação
Os artefatos só são baixados automaticamente em trabalhos de implantação. Por padrão, os artefatos são baixados para $(Pipeline.Workspace)
. A tarefa de download de artefato será injetada automaticamente somente ao usar o gancho de deploy
ciclo de vida em sua implantação. Para impedir que os artefatos sejam baixados automaticamente, adicione uma download
etapa e defina seu valor como nenhum.
Em um trabalho de compilação regular, você precisa usar explicitamente a download
palavra-chave step ou a tarefa Download Pipeline Artifact . Consulte ganchos de ciclo de vida para saber mais sobre os outros tipos de ganchos.
steps:
- download: none
Usar artefatos entre estágios
Se quiser aceder ao artefacto nas diferentes fases no pipeline, poderá agora publicar o artefacto numa fase e, em seguida, transferi-lo na fase seguinte, ao tirar partido das dependências. Veja Dependências fase a fase para obter mais detalhes.
Exemplo
No exemplo a seguir, copiaremos e publicaremos uma pasta de script do nosso repositório para o $(Build.ArtifactStagingDirectory)
. Na segunda etapa, baixaremos e executaremos nosso script.
trigger:
- main
stages:
- stage: build
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
inputs:
solution: '**/*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: 'Any CPU'
configuration: 'Release'
- task: CopyFiles@2
displayName: 'Copy scripts'
inputs:
contents: 'scripts/**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- publish: '$(Build.ArtifactStagingDirectory)/scripts'
displayName: 'Publish script'
artifact: drop
- stage: test
dependsOn: build
jobs:
- job: run_test
pool:
vmImage: 'windows-latest'
steps:
- download: current
artifact: drop
- task: PowerShell@2
inputs:
filePath: '$(Pipeline.Workspace)\drop\test.ps1'
Migrar a partir de artefatos de compilação
Os artefatos de pipeline são a próxima geração de artefatos de construção e são a maneira recomendada de trabalhar com artefatos. Os artefatos publicados usando a tarefa Publicar Artefatos de Compilação ainda podem ser baixados usando Baixar Artefatos de Compilação, mas recomendamos usar a tarefa Mais recente de Artefato de Pipeline de Download.
Ao migrar de artefatos de construção para artefatos de pipeline:
Por padrão, a tarefa Baixar Artefato de Pipeline baixa arquivos para
$(Pipeline.Workspace)
. Este é o caminho padrão e recomendado para todos os tipos de artefatos.Espera-se que os padrões de correspondência de arquivos para a tarefa Baixar Construir Artefatos comecem com (ou correspondam) ao nome do artefato, independentemente de um artefato específico ter sido especificado ou não. Na tarefa Baixar Artefato de Pipeline, os padrões não devem incluir o nome do artefato quando um nome de artefato já tiver sido especificado. Para obter mais informações, consulte Seleção de artefato único.
Exemplo
- task: PublishPipelineArtifact@1
displayName: 'Publish pipeline artifact'
inputs:
targetPath: '$(Pipeline.Workspace)'
${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
artifact: 'prod'
${{ else }}:
artifact: 'dev'
publishLocation: 'pipeline'
targetPath: (Obrigatório) O caminho do arquivo ou diretório a ser publicado. Pode ser absoluto ou relativo ao diretório de trabalho padrão. Pode incluir variáveis, mas não há suporte para curingas. Padrão: $(Pipeline.Workspace).
publishLocation: (Obrigatório) Artefatos publicam local. Escolha se deseja armazenar o artefato no Azure Pipelines ou copiá-lo para um compartilhamento de arquivos que deve ser acessível a partir do agente de pipeline. Opções:
pipeline
,filepath
. Padrão: pipeline.artefato: (Opcional) Nome do artefato a ser publicado. Se não estiver definido, o padrão será um ID exclusivo com escopo para o trabalho.
Ver Artefactos publicados
Quando a execução do pipeline estiver concluída, siga estas etapas para exibir ou baixar o artefato publicado:
Entre em sua organização do Azure DevOps e navegue até seu projeto.
Selecione Pipelines, selecione sua execução de pipeline e, em seguida, selecione a guia Resumo .
Na seção relacionada, selecione o artefato publicado.
Expanda a pasta de depósito para localizar seu artefato. Em seguida, você pode baixar seu artefato e explorar seu conteúdo.
FAQ
P: O que são artefatos de construção?
R: Os artefatos de construção são os arquivos gerados pela sua compilação. Consulte Criar artefatos para saber mais sobre como publicar e consumir seus artefatos de compilação.
P: Posso excluir artefatos de pipeline ao executar novamente trabalhos com falha?
R: Os artefatos de pipeline não são excluíveis ou sobregraváveis. Se quiser regenerar artefatos ao executar novamente um trabalho com falha, você pode incluir a ID do trabalho no nome do artefato. $(system.JobId)
é a variável adequada para este efeito. Consulte Variáveis do sistema para saber mais sobre variáveis predefinidas.
P: Como posso acessar feeds de artefatos atrás de um firewall?
R: Se a sua organização estiver a utilizar uma firewall ou um servidor proxy, certifique-se de que permite URLs e endereços IP do Domínio de Artefactos do Azure.