在 Octopus Deploy 中,您可以使用每个环境设置的变量作为 feed 的值吗?

Posted

技术标签:

【中文标题】在 Octopus Deploy 中,您可以使用每个环境设置的变量作为 feed 的值吗?【英文标题】:In Octopus Deploy, can you use a variable set per environment as the value for feed? 【发布时间】:2014-09-09 21:00:10 【问题描述】:

我们正在使用 Octopus Deploy,我们希望有两个提要,一个用于开发分支,另一个用于 TFS 中的主分支。当我们完成一个功能时,我们将它从开发分支合并到主分支。我们为生成 nuget 包的两个分支构建了版本。 DEV 构建从 DEV 分支获取代码并将 nuget 包发布到 DEV 提要,MAIN 构建从 MAIN 分支获取并将包发布到 MAIN 提要。我们希望开发版本能够自动启动 Octopus 中的部署,并让它使用来自 DEV 提要的 nuget 包。我们还想使用同一个 Octopus 部署项目来部署到我们的 QA、生产和培训环境,但从 MAIN 提要而不是 DEV 提要。

我们尝试了几种不同的方法来解决这个问题,但还没有成功。用于创建步骤的 Octopus UI 允许在提要字段中输入变量,所以我假设我们可以做到,但我们只是有一些小问题。但是有可能是因为我们根据环境(章鱼环境)设置了变量,这是问题的一部分?

我们还尝试让 TFS 构建告诉 Octopus 使用哪个提要,这似乎可以创建发布,但是当它尝试部署时,它无法再确定该变量是什么。

我发现这些帖子有类似或相同的问题,但尚未发布解决方案:

http://help.octopusdeploy.com/discussions/problems/16452-custom-binding-of-nuget-feed http://help.octopusdeploy.com/discussions/questions/2189-separate-nuget-feeds-for-regional-deployments

我尝试创建一个名为 testFeed 的环境变量,并在步骤中使用以下语法作为提要值,它允许我保存更改并创建发布,但是当我尝试部署时说“有一个您的请求有问题。部署前验证失败:此项目中的步骤引用的一个或多个提要不再存在。您需要创建一个新版本。":

##testFeed|feeds-33

【问题讨论】:

【参考方案1】:

幸运的是,现在有一个非常简单的解决方案,Paul in the comments of this post. 已记录在案

除了使用我一直在尝试的 or 语法之外,您所要做的就是设置一个附加变量,该变量不限于作为默认值的环境。

因此,对于我的情况,我设置了一个名为 nugetFeed 的变量,其值为 feeds-33(我的开发提要)和变量表中的行,也称为 nugetFeed,其值为 feeds-34(我的主要提要)和范围它适用于 QA 和 PROD 环境。然后在流程步骤提要字段中使用自定义表达式#nugetFeed。

注意:一旦您保存了流程步骤,它看起来就像您选择了默认提要,但这只是 UI 解析该值。当您实际部署它时,它会使用变量值。

目前有一个需要注意的错误描述为:当您输入#Feed 变量并保存时,一切正常。但是,当您再次在编辑中打开包时,#Feed 变量在设计器中被评估为第一个提要,例如饲料-1。如果您更改其他内容并再次保存,您的流程将被破坏,因为提要现在具有值 feeds-1 而不是 #Feed。

【讨论】:

以上是关于在 Octopus Deploy 中,您可以使用每个环境设置的变量作为 feed 的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Octopus Deploy 中为多个项目定义角色和环境

GitVersion:Octopus Deploy 在 Nuget 包版本上拒绝了多个候选版本

powershell 自动执行Octopus Deploy Server安装和配置

如何将不存在的部署目标配置为 Octopus Deploy?

部署应用程序时,Octopus Deploy 未合并我的转换文件

Octopus Deploy:如何将不同的项目部署到不同的生产机器上