У меня есть конвейер сборки в 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

Другие вопросы по тегам