Публикация и скачивание артефактов сборки

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

Примечание.

Мы рекомендуем скачать артефакты конвейера и опубликовать артефакты конвейера для повышения производительности.

Артефакты Azure позволяют командам использовать веб-каналы и источники вышестоящей версии для управления их зависимостями. Azure Pipelines можно использовать для публикации и скачивания различных типов артефактов в рамках рабочего процесса CI/CD.

Публикация артефактов

Артефакты можно публиковать на любом этапе конвейера. Для публикации пакетов можно использовать YAML или классический редактор Azure DevOps.

- 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: путь артефакта. Это может быть абсолютный или относительный путь. Подстановочные знаки не поддерживаются.
  • artifactName: имя артефакта.

Примечание.

Убедитесь, что при публикации артефакта не используется одно из зарезервированных имен папок. Дополнительные сведения см. в папках приложений .

Пример. Использование нескольких задач

- 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: путь артефакта. Это может быть абсолютный или относительный путь. Подстановочные знаки не поддерживаются.
  • artifactName: имя артефакта.

Пример: копирование и публикация двоичных файлов

- 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: папка, содержащая файлы, которые нужно скопировать. Если оставить это пустым, копирование будет выполнено из $(Build.SourcesDirectory).
  • содержимое: пути к файлам, которые необходимо включить в копию.
  • targetFolder: целевая папка.
  • pathToPublish: папка или путь к файлу для публикации. Это может быть абсолютный или относительный путь. Подстановочные знаки не поддерживаются.
  • artifactName: имя артефакта, который требуется создать.

Примечание.

Не используйте зарезервированное имя для артефакта, например Bin или App_Data. Дополнительные сведения см. в разделе ASP.NET Структура папок веб-проекта.

Примечание.

Build.ArtifactStagingDirectory путь очищается после каждой сборки. Если вы используете этот путь для публикации артефакта, скопируйте содержимое, которое вы хотите опубликовать в этом каталоге перед этапом публикации.

Скачивание артефактов

- 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).

Примечание.

Если вы используете задачу развертывания, можно ссылаться на артефакты сборки с помощью $(Agent.BuildDirectory). Дополнительные сведения см . в переменных агента.

После завершения выполнения конвейера перейдите к сводке , чтобы изучить или скачать артефакт.

Опубликованный артефакт сборки

Скачивание определенного артефакта

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.

Советы

  • Отключите обычную проверку подлинности IIS, если вы используете Azure DevOps Server, чтобы разрешить проверку подлинности с помощью личного маркера доступа. Дополнительные сведения см. в статье Почему мой PAT перестал работать?.

  • Используйте косую черту в аргументах пути к файлу. Обратные листы не работают в агентах macOS или Linux.

  • Артефакты сборки хранятся в файловой системе Windows, что приводит к потере всех разрешений UNIX, включая бит выполнения. Возможно, потребуется восстановить правильные разрешения UNIX после скачивания артефактов из Azure Pipelines.

  • Build.ArtifactStagingDirectory и Build.StagingDirectory взаимозаменяемы.

  • Build.ArtifactStagingDirectory путь очищается после каждой сборки.

  • Удаление сборки, связанной с пакетами, опубликованными в общей папке, приведет к удалению всех артефактов в этом пути UNC.

  • Если вы публикуете пакеты в общую папку, убедитесь, что вы предоставляете доступ к агенту сборки.

  • Убедитесь, что вы разрешаете URL-адреса и IP-адреса домена Azure artifacts, если ваша организация использует брандмауэр.