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

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Примечание.

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

Артефакты 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@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactsDirectory)'
  • buildType: укажите, какие артефакты сборки будут загружены: current (значение по умолчанию) или из определенной сборки.
  • downloadType: выберите, следует ли скачать один артефакт или все артефакты определенной сборки.
  • artifactName: имя артефакта, который будет скачан.
  • downloadPath: путь на компьютере агента, где будут загружены артефакты.

Примечание.

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

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

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

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

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

Советы

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

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

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

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

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

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

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

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