我的 github 存储库在 Azure DevOps 中有一个构建管道 - 二进制文件在哪里?
I have a build pipeline in Azure DevOps for my github repo - where are the binaries?
这是管道的(未经模板编辑)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)'
当代码按预期推送到我的存储库的 master 分支时,此管道将触发 - 但是我找不到它构建的二进制文件!我如何访问它们以便与其他人分享?二进制文件不可用是因为我的一些单元测试失败,导致构建失败,还是其他原因?
您缺少 "copy and publish artifact" 任务的任务。此任务会将生成的编译二进制文件复制为稍后下载的工件。
关于这个复制发布神器的更多信息,请访问官方文档: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
您需要在某处发布这些内容。您可以选择在管道的哪个阶段保留哪些内容。您可以将文件复制到目录中,或者只抓取整个 $(Build.SourcesDirectory)
。您还可以通过传入 /p:OutputPath=$(Build.ArtifactStagingDirectory)
命令行参数来指示 VsBuild 任务将输出重定向到特定目录。
然后您有几个选择:
GitHub Release task - 在 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
Publish Pipeline Artifact (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'
Publish Build Artifact(Azure DevOps 和 TFS)- 类似于 Publish Pipeline Artifact,但传输效率较低且特定于构建管道。也可以发布到文件共享而不是管道摘要的附件。
# 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
这是管道的(未经模板编辑)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)'
当代码按预期推送到我的存储库的 master 分支时,此管道将触发 - 但是我找不到它构建的二进制文件!我如何访问它们以便与其他人分享?二进制文件不可用是因为我的一些单元测试失败,导致构建失败,还是其他原因?
您缺少 "copy and publish artifact" 任务的任务。此任务会将生成的编译二进制文件复制为稍后下载的工件。
关于这个复制发布神器的更多信息,请访问官方文档: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
您需要在某处发布这些内容。您可以选择在管道的哪个阶段保留哪些内容。您可以将文件复制到目录中,或者只抓取整个 $(Build.SourcesDirectory)
。您还可以通过传入 /p:OutputPath=$(Build.ArtifactStagingDirectory)
命令行参数来指示 VsBuild 任务将输出重定向到特定目录。
然后您有几个选择:
GitHub Release task - 在 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
Publish Pipeline Artifact (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'
Publish Build Artifact(Azure DevOps 和 TFS)- 类似于 Publish Pipeline Artifact,但传输效率较低且特定于构建管道。也可以发布到文件共享而不是管道摘要的附件。
# 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