Артефакты в Azure Pipelines

Примечание

Мы рекомендуем обновить артефакты сборки ( и DownloadBuildArtifacts@0 ) до DownloadBuildArtifacts@0 ( и DownloadPipelineArtifact@2 ) для повышения производительности.

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

Разделы справки опубликовать артефакты?

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

Публикация текстового файла

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

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • пастопублиш: путь к артефакту. Это может быть абсолютный или относительный путь. Подстановочные знаки не поддерживаются.
  • artifactName: имя артефакта.

Примечание

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

YAML не поддерживается в TFS.

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

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

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • пастопублиш: путь к артефакту. Это может быть абсолютный или относительный путь. Подстановочные знаки не поддерживаются.
  • artifactName: имя артефакта.

YAML не поддерживается в TFS.

Пример. сборка артефактов C++ в одном месте и публикация в качестве артефакта

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

Примечание

Нельзя использовать bin, App_Data и другие имена папок, ЗАрезервированные службами IIS в качестве имени артефакта, так как это содержимое не обрабатывается в ответ на веб-запросы. дополнительные сведения см. в разделе ASP.NET структура папок веб-Project .

YAML не поддерживается в TFS.

Разделы справки использовать артефакты?

Вы можете использовать артефакты различными способами: вы можете воспользоваться им в конвейере выпуска, передать его между заданиями конвейера, загрузить его непосредственно из конвейера и даже скачать из потоков и восходящих источников.

Использование артефактов в конвейерах выпуска

Можно загрузить артефакты, созданные в конвейере сборки (созданном в классическом редакторе) или в конвейере YAML (созданном с помощью YAML-файла) в конвейере выпуска, и развернуть их в выбранном целевом объекте.

Использование артефакта в следующем задании конвейера

Вы можете использовать артефакт, созданный одним заданием, в последующем задании конвейера, даже если это задание находится на другом этапе (конвейеры YAML). Это может быть полезно для тестирования артефакта.

Скачать в отладку

Вы можете скачать артефакт непосредственно из конвейера для использования при отладке.

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

YAML не поддерживается в TFS.

Примечание

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

Советы

  • аргумент расположения публикации артефакта : Azure Pipelines/тфс (TFS 2018 RTM и более ранние версии: тип артефакта: сервер) является лучшим и самым простым выбором в большинстве случаев. этот вариант приводит к тому, что артефакты будут храниться в Azure Pipelines или TFS. но если вы используете частный агент Windows, вы получаете возможность сброса в общую папку в формате UNC.

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

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

  • в Azure Pipelines и некоторых версиях TFS две разные переменные указывают на промежуточный каталог: и Build.StagingDirectory . Они взаимозаменяемы.

  • Каталог, на который ссылается, Build.ArtifactStagingDirectory очищается после каждой сборки.

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

  • Артефакты сборки можно получить из REST API.

Используйте эти задачи для публикации артефактов:

Просмотр, скачивание и развертывание артефактов

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

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

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

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

Здесь можно исследовать или скачивать артефакты.

вы также можете использовать Azure Pipelines для развертывания приложения с помощью опубликованных вами артефактов. см. Artifacts в Azure Pipelines выпусках.

Публикация из TFS в общую папку в формате UNC

если вы используете частный агент Windows, можно задать параметр расположения публикации артефакта (тип артефактаTFS 2018 RTM и более ранних версий), чтобы опубликовать файлы в общем файловом ресурсев формате UNC.

Примечание

используйте агент сборки Windows. Этот параметр не работает для агентов macOS и Linux.

Выберите файловый ресурс , чтобы скопировать артефакт в общую папку. Распространенные причины этого:

  • Размер перетаскивания большой и потребляет слишком много времени и пропускную способность для копирования.

  • Для артефакта необходимо запустить некоторые пользовательские скрипты или другие инструменты.

Если используется общая папка, укажите путь к папке в формате UNC. Управлять созданием папки для каждой сборки можно с помощью переменных. Например, \\my\share\$(Build.DefinitionName)\$(Build.BuildNumber).

Публикация артефактов из TFS 2015 RTM

Если вы используете TFS 2015 RTM, действия, описанные в предыдущих примерах, недоступны. Вместо этого вы копируете и публикуете артефакты с помощью одной задачи: сборка: публикация сборки Artifacts.