Partilhar via


Publicar e baixar artefatos de compilação

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Nota

Recomendamos o uso de Download Pipeline Artifacts e Publish Pipeline Artifacts para um desempenho mais rápido.

Os Artefatos do Azure permitem que as equipes usem feeds e fontes upstream para gerenciar suas dependências. Você pode usar o Azure Pipelines para publicar e baixar diferentes tipos de artefatos como parte do seu fluxo de trabalho de CI/CD.

Publicar artefatos

Os artefatos podem ser publicados em qualquer estágio do seu pipeline. Você pode usar o YAML ou o editor clássico do Azure DevOps para publicar seus pacotes.

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • pathToPublish: o caminho do seu artefato. Este pode ser um caminho absoluto ou relativo. Não há suporte para curingas.
  • artifactName: o nome do seu artefato.

Nota

Certifique-se de que não está a utilizar um dos nomes de pastas reservadas ao publicar o artefacto. Consulte Pastas de aplicativos para obter mais detalhes.

Exemplo: Usar várias tarefas

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • pathToPublish: o caminho do seu artefato. Este pode ser um caminho absoluto ou relativo. Não há suporte para curingas.
  • artifactName: o nome do seu artefato.

Exemplo: copiar e publicar binários

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • sourceFolder: a pasta que contém os arquivos que você deseja copiar. Se você deixar isso vazio, a cópia será feita a partir de $(Build.SourcesDirectory).
  • contents: Caminhos de arquivo a serem incluídos como parte da cópia.
  • targetFolder: pasta de destino.
  • pathToPublish: o caminho da pasta ou do arquivo a ser publicado. Pode ser um caminho absoluto ou relativo. Não há suporte para curingas.
  • artifactName: o nome do artefato que você deseja criar.

Nota

Certifique-se de não usar o nome reservado para artifactName , como Bin ou App_Data. Consulte ASP.NET Estrutura de pastas do projeto Web para obter mais detalhes.

Nota

Build.ArtifactStagingDirectory O caminho é limpo após cada compilação. Se você estiver usando esse caminho para publicar seu artefato, certifique-se de copiar o conteúdo que deseja publicar neste diretório antes da etapa de publicação.

Baixar artefatos

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactsDirectory)'
  • buildType: especifique quais artefatos de compilação serão baixados: current (o valor padrão) ou de uma compilação específica.
  • downloadType: escolha se deseja baixar um único artefato ou todos os artefatos de uma compilação específica.
  • artifactName: o nome do artefato que será baixado.
  • downloadPath: caminho na máquina do agente onde os artefatos serão baixados.

Nota

Se você estiver usando uma tarefa de implantação, poderá fazer referência aos artefatos de compilação usando $(Agent.BuildDirectory). Consulte Variáveis do agente para obter mais detalhes.

Quando a execução do pipeline estiver concluída, navegue até Resumo para explorar ou baixar seu artefato.

Artefato de construção publicado

Baixar um artefato específico

steps:
- task: DownloadBuildArtifacts@1
  displayName: 'Download Build Artifacts'
  inputs:
    buildType: specific
    project: 'xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx'
    pipeline: 20
    buildVersionToDownload: specific
    buildId: 128
    artifactName: drop
    extractTars: false

Sugestões

  • Desative a Autenticação Básica do IIS se estiver usando o Servidor de DevOps do Azure para permitir a autenticação com seu Token de Acesso Pessoal. Consulte Autenticação básica do IIS e PATs para obter mais detalhes.

  • Use barras para frente em argumentos de caminho de arquivo. As barras invertidas não funcionam em agentes macOS/Linux.

  • Os artefatos de compilação são armazenados em um sistema de arquivos do Windows, o que faz com que todas as permissões do UNIX sejam perdidas, incluindo o bit de execução. Talvez seja necessário restaurar as permissões corretas do UNIX depois de baixar seus artefatos do Azure Pipelines.

  • Build.ArtifactStagingDirectory e Build.StagingDirectory são intercambiáveis.

  • Build.ArtifactStagingDirectory O caminho é limpo após cada compilação.

  • A exclusão de uma compilação associada a pacotes publicados em um compartilhamento de arquivos resultará na exclusão de todos os artefatos nesse caminho UNC.

  • Se você estiver publicando seus pacotes em um compartilhamento de arquivos, certifique-se de fornecer acesso ao agente de compilação.

  • Certifique-se de permitir URLs de Domínio de Artefatos do Azure e endereços IP se sua organização estiver usando um firewall.