如何使用 yaml 配置从 Azure 管道生成特定版本的 nuget 包
How to generate specific version of nuget package from azure pipelines using yaml configuration
我在这里定义了构建配置:
https://github.com/cpoDesign/APIFramework/blob/master/azure-pipelines.yml
我已经成功地使用以下命令生成了一个 nuget 包
- task: DotNetCoreCLI@2
inputs:
command: pack
projects: '**/*ApiFramework.csproj'
脚本任务输出的一个子集是
Task "PackTask"
2018-11-27T23:02:32.4459067Z Successfully created package '/home/vsts/work/1/a/CPODesign.ApiFramework.1.0.0.nupkg'.
下一步已解决:
我不想创建一个发布到 nuget 的构建,因为这些步骤必须在逻辑上分开。因此,我创建了一个新步骤 Create a drop.
配置:
我的掉落任务定义:
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
构建输出:
2018-11-27T23:04:24.6351310Z ##[section]Starting: PublishBuildArtifacts
2018-11-27T23:04:24.6353582Z ==============================================================================
2018-11-27T23:04:24.6353896Z Task : Publish Build Artifacts
2018-11-27T23:04:24.6353944Z Description : Publish build artifacts to Azure Pipelines/TFS or a file share
2018-11-27T23:04:24.6354007Z Version : 1.142.2
2018-11-27T23:04:24.6354046Z Author : Microsoft Corporation
2018-11-27T23:04:24.6354091Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=708390)
2018-11-27T23:04:24.6354156Z ==============================================================================
2018-11-27T23:04:26.1357631Z ##[section]Async Command Start: Upload Artifact
2018-11-27T23:04:26.1357755Z Uploading 1 files
2018-11-27T23:04:26.6373194Z File upload succeed.
2018-11-27T23:04:26.6373313Z Upload '/home/vsts/work/1/a' to file container: '#/1558454/drop'
2018-11-27T23:04:27.9231805Z Associated artifact 91 with build 806
2018-11-27T23:04:27.9231947Z ##[section]Async Command End: Upload Artifact
2018-11-27T23:04:27.9232436Z ##[section]Finishing: PublishBuildArtifacts
注意:azure-devops的UI发生了变化,artefacts(工件)不再创建为新的选项卡,而是错误地添加到报告中摘要
问题:
如何生成特定版本的 nuget 包 IE:1.0.%(Build.BuildId)?
我最后一次尝试是
- task: DotNetCoreCLI@2
inputs:
command: pack
projects: '**/*ApiFramework.csproj'
# packageVersion:'1.0.$(Build.BuildId)'
其中
packageVersion:'1.0.$(Build.BuildId)'
会导致构建失败
(当前分支发布在这里:https://github.com/cpoDesign/APIFramework/blob/cpoDesign-build-mods-1/azure-pipelines.yml)
我无法将内容视为 PublishBuildArtifacts@1 的 YAML 中的有效输入
你的意思是先做复制任务再做发布任务。就像发布文档中显示的那样?
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=vsts
经过令人沮丧的几个小时后,我找到了答案
- 将生成的 nuget 包发布到构建工件中
- 生成一个版本来发布 nuget 包
构建配置
pool:
vmImage: 'Ubuntu 16.04'
variables:
buildConfiguration: 'Release'
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**/*.csproj'
- script: dotnet test **/*.Tests.Unit.csproj --logger trx
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
- script: dotnet pack /p:PackageVersion='1.0.$(Build.BuildId)' --configuration $(buildConfiguration) -o $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
发布部分
我已将版本更新为在每次成功构建后触发
dotnet nuget push artefactName.APIFramework/drop/CPODesign.ApiFramework.1.0.$(Build.BuildId).nupkg -k $(myapiKey) -s https://api.nuget.org/v3/index.json
我在这里定义了构建配置:
https://github.com/cpoDesign/APIFramework/blob/master/azure-pipelines.yml
我已经成功地使用以下命令生成了一个 nuget 包
- task: DotNetCoreCLI@2
inputs:
command: pack
projects: '**/*ApiFramework.csproj'
脚本任务输出的一个子集是
Task "PackTask"
2018-11-27T23:02:32.4459067Z Successfully created package '/home/vsts/work/1/a/CPODesign.ApiFramework.1.0.0.nupkg'.
下一步已解决:
我不想创建一个发布到 nuget 的构建,因为这些步骤必须在逻辑上分开。因此,我创建了一个新步骤 Create a drop.
配置:
我的掉落任务定义:
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
构建输出:
2018-11-27T23:04:24.6351310Z ##[section]Starting: PublishBuildArtifacts
2018-11-27T23:04:24.6353582Z ==============================================================================
2018-11-27T23:04:24.6353896Z Task : Publish Build Artifacts
2018-11-27T23:04:24.6353944Z Description : Publish build artifacts to Azure Pipelines/TFS or a file share
2018-11-27T23:04:24.6354007Z Version : 1.142.2
2018-11-27T23:04:24.6354046Z Author : Microsoft Corporation
2018-11-27T23:04:24.6354091Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=708390)
2018-11-27T23:04:24.6354156Z ==============================================================================
2018-11-27T23:04:26.1357631Z ##[section]Async Command Start: Upload Artifact
2018-11-27T23:04:26.1357755Z Uploading 1 files
2018-11-27T23:04:26.6373194Z File upload succeed.
2018-11-27T23:04:26.6373313Z Upload '/home/vsts/work/1/a' to file container: '#/1558454/drop'
2018-11-27T23:04:27.9231805Z Associated artifact 91 with build 806
2018-11-27T23:04:27.9231947Z ##[section]Async Command End: Upload Artifact
2018-11-27T23:04:27.9232436Z ##[section]Finishing: PublishBuildArtifacts
注意:azure-devops的UI发生了变化,artefacts(工件)不再创建为新的选项卡,而是错误地添加到报告中摘要
问题:
如何生成特定版本的 nuget 包 IE:1.0.%(Build.BuildId)?
我最后一次尝试是
- task: DotNetCoreCLI@2
inputs:
command: pack
projects: '**/*ApiFramework.csproj'
# packageVersion:'1.0.$(Build.BuildId)'
其中
packageVersion:'1.0.$(Build.BuildId)'
会导致构建失败 (当前分支发布在这里:https://github.com/cpoDesign/APIFramework/blob/cpoDesign-build-mods-1/azure-pipelines.yml)
我无法将内容视为 PublishBuildArtifacts@1 的 YAML 中的有效输入
你的意思是先做复制任务再做发布任务。就像发布文档中显示的那样? https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=vsts
经过令人沮丧的几个小时后,我找到了答案
- 将生成的 nuget 包发布到构建工件中
- 生成一个版本来发布 nuget 包
构建配置
pool:
vmImage: 'Ubuntu 16.04'
variables:
buildConfiguration: 'Release'
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**/*.csproj'
- script: dotnet test **/*.Tests.Unit.csproj --logger trx
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
- script: dotnet pack /p:PackageVersion='1.0.$(Build.BuildId)' --configuration $(buildConfiguration) -o $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
contents: '**/$(BuildConfiguration)/**/?(*.nupkg)'
发布部分
我已将版本更新为在每次成功构建后触发
dotnet nuget push artefactName.APIFramework/drop/CPODesign.ApiFramework.1.0.$(Build.BuildId).nupkg -k $(myapiKey) -s https://api.nuget.org/v3/index.json