Compartilhar via


Publicar e baixar artefatos de compilação

Azure DevOps Services | Servidor Azure DevOps | Azure DevOps Server 2022

Observação

Recomendamos Baixar Artefatos de Pipeline e Publicar Artefatos de Pipeline para desempenho mais rápido.

O Azure Artifacts permite que as equipes usem feeds e façam upstream de fontes para gerenciar suas dependências. Você pode usar o Azure Pipelines para publicar e baixar diferentes tipos de artefatos como parte do fluxo de trabalho de CI/CD.

Publicar artefatos

Os artefatos podem ser publicados em qualquer estágio do 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 artefato. Esse caminho pode ser absoluto ou relativo. Não há suporte para caractere curinga.
  • artifactName: o nome do artefato.

Observação

Verifique se você não está usando um dos nomes de pasta reservados ao publicar seu artefato. Confira Pastas de Aplicativo 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 artefato. Esse caminho pode ser absoluto ou relativo. Não há suporte para caractere curinga.
  • artifactName: o nome do 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 essa pasta vazia, a cópia será feita por meio de $(Build.SourcesDirectory).
  • contents: caminhos de arquivo que serão incluídos como parte da cópia.
  • targetFolder: pasta de destino.
  • pathToPublish: o caminho da pasta ou do arquivo a ser publicado. Ess caminho pode ser absoluto ou relativo. Não há suporte para caractere curinga.
  • artifactName: o nome do artefato que você deseja criar.

Observação

Não use o nome reservado para artifactName, como Bin ou App_Data. Confira Estrutura de Pastas do Projeto Web ASP.NET para ver mais detalhes.

Observação

O caminho de Build.ArtifactStagingDirectory é 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@1
  inputs:
    buildType: 'current'        # Options: 'current' | 'specific'. Specify which build artifacts will be downloaded: `current` or from a specific build
    downloadType: 'single'      # Options: 'single' | 'specific'. Choose whether to download a single artifact or all artifacts of a specific build.
    artifactName: 'drop'        # Required when downloadType == single. The name of the artifact that will be downloaded.
    downloadPath: '$(System.ArtifactsDirectory)'    # Path on the agent machine where the artifacts will be downloaded. Default: $(System.ArtifactsDirectory).

Observação

Se você estiver usando uma tarefa de implantação, poderá referenciar seus artefatos de compilação usando $(Agent.BuildDirectory). Confira Variáveis de agente para ver mais detalhes.

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

Artefato de compilação publicado

Baixar um artefato específico

steps:
- task: DownloadBuildArtifacts@1
  displayName: 'Download Build Artifacts'
  inputs:
    buildType: specific                        # Options: 'current' | 'specific'. Specify which build artifacts will be downloaded: `current` or from a specific build
    project: 'xxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx'    # Required when buildType == specific. Project ID.
    pipeline: 20                                   # Required when buildType == specific. Build pipeline.
    buildVersionToDownload: specific    # Options: 'latest' | 'latestFromBranch' | 'specific'. Required when buildType == specific. Build version to download.
    buildId: 128                        # Required when buildType == specific && buildVersionToDownload == specific. Build ID.
    artifactName: drop                  # The name of the artifact that will be downloaded.
    extractTars: false                  # boolean. Extract all files that are stored inside tar archives.

Dicas

  • Desabilite a Autenticação Básica do IIS caso esteja usando o Azure DevOps Server para permitir a autenticação com seu token de acesso pessoal. Para obter mais informações, consulte Por que meu PAT parou de funcionar?.

  • Use barras em argumentos de caminho de arquivo. Barras invertidas não funcionam em agentes do 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 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.

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

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

  • Caso esteja publicando seus pacotes em um compartilhamento de arquivo, lembre-se de fornecer acesso ao agente de build.

  • Lembre-se de permitir URLs de domínio e endereços IP do Azure Artifacts caso sua organização esteja usando um firewall.