【问题标题】:Azure pipeline won't create a prerelease versionAzure 管道不会创建预发布版本
【发布时间】:2019-12-13 08:13:01
【问题描述】:

我的管道中有以下代码:

steps:
  - script: echo '##vso[task.setvariable variable=suffix] --version-suffix alpha'
    displayName: "Stting suffix variable if not master"
    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))

  - script: dotnet pack ./myproj.csproj -p:Version=$(majorVersion).$(minorVersion).$(patchVersion).0 --configuration $(buildConfiguration) $(suffix) --output $(Build.ArtifactStagingDirectory)
    displayName: "Pack mypack"

  - task: PublishBuildArtifacts@1
    displayName: "Publish NuGet"
    inputs:
      pathtoPublish: "$(Build.ArtifactStagingDirectory)"
      artifactName: "Nuget"

  - task: DotNetCoreCLI@2
    displayName: "Publish Artifact"
    inputs:
      command: 'push'
      feedsToUse: 'select'
      packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'myfeed'
      versioningScheme: 'off'

管道完成且没有错误,我可以在日志中看到以下内容

dotnet 包 ./myproj.csproj -p:Version=0.0.12.0 --configuration 发布 --version-suffix alpha --output /home/vsts/work/1/a

但是,当查看工件或我的 Visual Studio 中的 nuget 包时,它不是预发布版,而是普通的 nuget。我做错了什么以及如何解决?

【问题讨论】:

  • 这里的prerelease 是什么意思?您是指Prerelease 视图吗?

标签: nuget yaml azure-pipelines


【解决方案1】:

您似乎在谈论Views on Azure DevOps Services feeds 请注意,在创建包时,它会自动将包发布回您的提要的 @local 视图。因此,这是您的场景中的预期行为。

@local 视图包含直接发布到提要的所有包(例如,通过 nuget push 或 npm 发布)以及保存的所有包 上游来源。如果您不使用任何其他视图,@local 应该是 您的默认视图。

但是,您可以在此之后将您的包推广到 @prerelease 视图:

当一个包准备好供早期采用者使用时,选择该包并 它的依赖关系图并将其提升到@prerelease 视图。

详情请参考Promote your package to the correct view

更新:

如果你的意思是在生成的包中没有添加后缀alpha,那么可以将后缀整合到version参数中:(--version-suffix alpha在命令中无效)

  - script: echo '##vso[task.setvariable variable=suffix]-alpha'
    displayName: "Stting suffix variable if not master"
    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))

  - script: dotnet pack ./myproj.csproj -p:Version=$(majorVersion).$(minorVersion).$(patchVersion)$(suffix) --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)
    displayName: "Pack mypack"

要推广这个包,你可以参考下面的截图:

【讨论】:

  • 对不起,我在这里有点困惑 :) 那么我应该如何将它推广到预发布视图?我应该将版本更改为 Version=$(majorVersion).$(minorVersion).$(patchVersion).alpha 还是其他?当我搜索时,我看到了您分享的链接,但不是很清楚
  • 如果你的意思是在生成的包中没有添加后缀alpha,那么可以将后缀整合到version参数中,类似Version=$(majorVersion).$(minorVersion).$(patchVersion).$(suffix);如果您的意思是prerelease 视图,那么与此处的版本无关,您设置的版本只是一个符号/标签,标志着变化的性质或质量。包将首先发布到本地视图,然后您可以将高质量的包提升到 @prerelease 视图。请参阅随附的有关推广软件包的屏幕截图。
  • 非常感谢安迪!我错误地认为 prerelase 与 alpha 和 beta 是相同的概念。通过添加 -alpha,我的 nuget 不会出现在我的 VS 中,除非我选中“包含预发布”复选框,这正是我想要的。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多