У меня есть конвейер сборки в Azure DevOps для моего репозитория github - где двоичные файлы?
Вот определение конвейера в формате YAML (неотредактированное из шаблона):
# .NET Desktop
# Build and run tests for .NET Desktop or Windows classic desktop solutions.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
Этот конвейер срабатывает, когда код помещается в основную ветвь моего репо, как и предполагалось, однако я не могу найти созданные им двоичные файлы! Как мне получить к ним доступ, чтобы поделиться ими с людьми? Бинарные файлы недоступны из-за того, что некоторые из моих модульных тестов не прошли, что привело к сбою сборки или что-то в этом роде?
2 ответа
Их нужно где-то опубликовать. Вам решать, что оставить на какой стадии конвейера. Вы можете скопировать файлы в каталог или просто захватить весь$(Build.SourcesDirectory)
. Вы также можете указать задаче VsBuild перенаправлять вывод в конкретный каталог, передав/p:OutputPath=$(Build.ArtifactStagingDirectory)
аргумент командной строки.
Затем у вас есть несколько вариантов:
Задача выпуска GitHub - создает выпуск в GitHub и связывает с ним нужные файлы.
# GitHub Release # Create, edit, or delete a GitHub release - task: GitHubRelease@0 inputs: gitHubConnection: #repositoryName: '$(Build.Repository.Name)' #action: 'create' # Options: create, edit, delete #target: '$(Build.SourceVersion)' # Required when action == Create || Action == Edit #tagSource: 'auto' # Required when action == Create# Options: auto, manual #tagPattern: # Optional #tag: # Required when action == Edit || Action == Delete || TagSource == Manual #title: # Optional #releaseNotesSource: 'file' # Optional. Options: file, input #releaseNotesFile: # Optional #releaseNotes: # Optional #assets: '$(Build.ArtifactStagingDirectory)/*' # Optional #assetUploadMode: 'delete' # Optional. Options: delete, replace #isDraft: false # Optional #isPreRelease: false # Optional #addChangeLog: true # Optional #compareWith: 'lastFullRelease' # Required when addChangeLog == True. Options: lastFullRelease, lastRelease, lastReleaseByTag #releaseTag: # Required when compareWith == LastReleaseByTag
Публикация артефакта конвейера (Azure DevOps) - связывает выбранные файлы со сборкой как артефакт. Вы можете скачать их со сводной страницы конвейера в Azure DevOps. Хорошо работает как в конвейере сборки, так и в конвейере выпуска.
# Publish pipeline artifact # Publish (upload) a file or directory as a named artifact for the current run - task: PublishPipelineArtifact@1 inputs: targetPath: '$(Pipeline.Workspace)' artifact: 'Output'
Опубликовать артефакт сборки (Azure DevOps и TFS) - аналогично публикации артефакта конвейера, но менее эффективен при его передаче и предназначен только для конвейеров сборки. Также можно публиковать в общей папке вместо вложения в сводку по конвейеру.
# Publish build artifacts # Publish build artifacts to Azure Pipelines or a Windows file share - task: PublishBuildArtifacts@1 inputs: #pathtoPublish: '$(Build.ArtifactStagingDirectory)' #artifactName: 'drop' #publishLocation: 'Container' # Options: container, filePath #targetPath: # Required when publishLocation == FilePath #parallel: false # Optional #parallelCount: # Optional
Вам не хватает задачи "скопировать и опубликовать артефакт". Эта задача скопирует полученные скомпилированные двоичные файлы как артефакт для загрузки позже.
Для получения дополнительной информации об этом артефакте копирования и публикации посетите официальную документацию: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-and-publish-build-artifacts?view=azure-devops
ОБНОВЛЕНИЕ: задача копирования и публикации артефактов устарела в Azure DevOps, используйте новейшую версию: https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/build-artifacts?view=azure- DevOps & tabs = yaml
Используйте это в своем YAML: PublishBuildArtifacts@1