【问题标题】:How can I add "pre-release" to a package name and push it to an Azure DevOps feed?如何将“预发布”添加到包名称并将其推送到 Azure DevOps 源?
【发布时间】:2021-03-03 15:42:03
【问题描述】:

我已对其进行了设置,以便它推送.csproj 文件中定义的包版本,并根据主控触发。有没有一种方法可以在提交到非主分支时基本上命令包具有诸如pre-release-.csproj 中定义的包版本)之类的名称?

【问题讨论】:

    标签: azure-devops yaml azure-pipelines pipeline


    【解决方案1】:

    更新:添加变量定义。

    当然,您可以通过根据正在构建的分支更改管道中的版本管道变量来完成此操作。

    在您的情况下,您需要在 Stage/Pipeline 变量中添加一个版本变量:

    variables:
      - name: Version
        value: ""
    

    然后,在您尝试打包和推送您的工件之前添加此任务:

    - script: |
        echo '##vso[task.setvariable variable=Version]pre-release-$(Version)'
        echo "Setting Version to pre-release-$(Version)"
      condition: ne(variables['Build.SourceBranch'], 'refs/heads/master')
    

    将变量设置为您的预发布名称后,您需要将版本传递给您的 NuGet 推送,如下所示:

    - task: DotNetCoreCLI@2
      displayName: "Run NuGet Pack"
      inputs:
        command: "pack"
        packagesToPack: "yourproject.csproj"
        versioningScheme: "off"
        buildProperties: Version=$(Version)
    

    【讨论】:

    • 这似乎不起作用。它没有意识到$(Version) 是什么。日志:Setting Version to pre-release- /home/vsts/work/_temp/ab79fe90-2191-49c8-983f-162e4c392dce.sh: line 2: Version: command not found
    • 抱歉,在这种情况下,我没有明确表示“版本”是自定义变量。您需要将其作为变量添加到 Stage 或 Pipeline 变量中。我已经更新了我的帖子以包含该步骤。
    • 也许我错过了什么。我需要将版本设置为我的 .csproj 文件中的内容。如果我理解正确,这只会将值设置为pre-release-,因为版本不等于任何内容。
    • 嗨@TheVanillaThrilla,我们可以读取 .csproj 文件并匹配字段版本,然后将值设置为变量版本。
    • @VitoLiu-MSFT 是正确的,上面的示例假设您将“版本”管道变量设置为项目文件中的内容。
    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多