【问题标题】:Azure devops Octopus deploy release name semver checkAzure devops Octopus 部署版本名称 semver 检查
【发布时间】:2021-02-06 17:41:43
【问题描述】:

我们正在使用带有 Octopus 部署的 Azure Devops。 我已经集成了发布步骤,并且发布创建以及发布到第一个环境(在我的情况下是开发)正在毫无问题地进行。

问题在于后续版本。 发布在发布名称的语义版本控制检查中失败。

'1.2.1023.0508-09' 不是有效的版本字符串

在 Octopus.Client.Model.SemanticVersion.Parse(String value, Boolean 保留缺失组件)

在第一阶段,我正在创建 Octopus 版本,并在同一任务中部署到开发环境(使用 Azure devops 中的 Create Octopus Release 任务)

create-release "--project=<projectName>" "--releaseNumber=1.2.1023.0508-09" "--server=<serverName>" "--apiKey=***" --enableServiceMessages "--deployTo=Development" --progress "--releaseNotesFile=<path>"

这一步成功了。 在下一阶段,我尝试了 2 种变体,

  • 推广发布

promote-release "--project=projectName" "--server=serverName" "--apiKey=***" "--from=Development" "--to=envName"

  • 部署发布

部署发布 "--project=projectName" "--releaseNumber=latest" "--server=serverName" "--apiKey=***" "--deployTo=envName"

他们都给出了同样的错误,说版本名称不是有效的版本字符串。

我的困惑是,如果名称不正确,即使第一次部署也会失败。 如果正确且允许,那么后续阶段发布也应该成功。

如果有人以前遇到过这样的问题,或者可以添加一些指针来解决这个问题,那将非常有帮助。

【问题讨论】:

    标签: azure azure-devops octopus-deploy


    【解决方案1】:

    以防万一有人来这里寻找解决方案,以下是我为解决问题所采取的步骤,

    • 对于第一阶段(在我的例子中是开发),创建一个新版本。如果您有多个租户,请添加它们。不要忘记添加包版本。当您创建多个版本的工件时,尤其需要这样做。我很难解决这个问题。如果您不添加 PackageVersion,则会选择最新的可用工件。
    • 对于进一步的阶段,不要促进释放。相反,部署发布。这样,您可以传递与第一阶段配置的版本号相同的版本号。就我而言,我保持舞台名称与我的环境名称相同。所以我也可以为 env 使用变量。我为 4 个不同的环境复制了这个阶段。

    【讨论】:

      【解决方案2】:

      这听起来像是一个错误,但我需要更多时间来重现和验证。你能分享一下你使用的是什么版本的八达通和八达通扩展吗?

      我最好的建议是根据 Azure DevOps 内部版本号确定发布号,并使用该变量来控制要部署的版本。如果您在阶段之间创建了其他版本,则使用“最新”版本可能会适得其反。

      如果您可以将 Azure DevOps 内部版本号设置为与您希望 Octopus 版本号 (1.2.1023.0508-09) 相同的格式,则可以使用以下命令来构建和升级版本。

      create-release "--project=<projectName>" "--releaseNumber=$(Build.BuildNumber)" "--server=<serverName>" "--apiKey=***" --enableServiceMessages "--deployTo=Development" --progress "--releaseNotesFile=<path>"
      
      deploy-release "--project=projectName" "--releaseNumber=$(Build.BuildNumber)" "--server=serverName" "--apiKey=***" "--deployTo=envName"
      

      这将确保您推广的是在管道中创建的同一版本。

      【讨论】:

      • 使用版本 2018.9.11 根据您使用 buildNumber 的建议,我得以继续发布。 - 部署发布通过。 - 推广发布失败。但问题是,如果你想在同一个版本上创建另一个版本,Octopus 会出错。由于版本已经存在同名。所以用户需要再次触发构建。正是出于这个原因,我将 releaseName 保留为 Octopus 版本名称。您的建议部分解决了问题,而不是完全解决。因此不标记为答案。
      • 哦,您不应该将内部版本号硬编码为静态值。对于每个 AzureDevOps 构建,它应该是动态的。除非您的意思是在 Azure DevOps 构建中的同一项目中创建多个 Octopus 版本。如果是这样,那有什么用例?
      • 不是硬编码。而不是内部版本号,我使用 azure 版本名称作为 Octopus 版本 ID。这样,如果出现某些故障或任何版本变量更新,即使我在同一版本上创建新版本,章鱼版本也会有新的 id。并且不会给出release已经存在的错误。
      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 2020-10-22
      • 2015-04-29
      • 2020-03-24
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多