我们正在使用Octopus Deploy,我们希望有两个feed,一个用于开发分支,另一个用于TFS中的主分支。当我们完成一项功能时,我们将它从开发分支合并到主分支。我们为两个分支生成nuget包的构建。 DEV构建从DEV分支获取代码并将nuget包发布到DEV提要,MAIN构建从MAIN分支获得并将包发布到MAIN提要。我们希望dev build能够自动启动Octopus中的部署并让它使用DEV feed中的nuget包。我们还希望使用相同的Octopus部署项目部署到我们的QA,生产和培训环境,但是使用MAIN Feed而不是DEV Feed。
我们尝试了几种不同的方法来解决这个问题,但尚未成功。用于创建步骤的Octopus UI允许在Feed字段中输入变量,因此我假设我们可以执行此操作,但我们只是略有错误。但有可能是因为我们根据环境(八达通环境)建立了变量,这是问题的一部分吗?
我们还尝试让TFS构建告诉Octopus使用哪个Feed,这似乎可以帮助创建发布版本,但是当它尝试部署时,它无法找出该变量的内容。
我发现这些帖子有类似或相同的问题但尚未发布解决方案:
我尝试创建一个名为testFeed的环境变量,并使用下面的语法作为步骤中的feed值,它允许我保存更改并创建一个版本但是当我尝试部署时说"你的请求有问题。部署前验证失败:此项目中的步骤引用的一个或多个订阅源不再存在。您需要创建一个新版本。":
#{#{testFeed}|feeds-33}
答案 0 :(得分:1)
幸运的是,现在有一个非常简单的解决方案,已由Paul in the comments of this post.
记录不是使用我曾经尝试过的语法或语法,而是设置一个额外的变量,该变量不限于作为默认值的环境。
因此,对于我的情况,我设置了一个名为nugetFeed的变量,其值为feeds-33(我的dev feed),变量表中的行也称为nugetFeed,其值为feeds-34(我的MAIN feed)和作用域它适用于QA和PROD环境。然后在流程步骤Feed字段中使用#{nugetFeed}的自定义表达式。
注意:保存流程步骤后,您将看起来已经选择了默认Feed,但这只是解析该值的UI。实际部署时,使用变量值。
目前有一个需要注意的错误描述为:当您输入#{Feed}变量并保存一切正常时。但是当您再次在Edit中打开包时,#{Feed}变量将在设计器中评估为第一个Feed,例如饲料-1。如果您更改其他内容并再次保存,则您的流程会中断,因为Feed现在的值为feed-1而不是#{Feed}。