在每个项目的 Octopus Deploy 中配置连接字符串

Configure connection string in Octopus Deploy per project

我的连接字符串是通过 library/variables/LibraryVariableSets 在 Octopus Deploy 中配置的,并且根据目标环境一切正常,我现在要做的是为每个 project/app 和在我的 Octopus 连接字符串中设置此 UID/PWD。

我的问题是:如何为每个项目配置此连接字符串,就像我已经拥有的项目局部变量(应用程序设置键)一样?

P.S。章鱼版本为4.1.2

库变量集中的变量不能限定为单个项目,因为它们被设计为跨项目全局使用。然而,有一个活跃的 UserVoice 建议来实现这一点: https://octopusdeploy.uservoice.com/forums/170787-general/suggestions/31206961-library-variables-ability-to-scope-to-projects

您目前可以在一个集合中定义这些变量,如果您想定义默认值,则可以将该集合包含到许多项目中。如果您定义一个具有相同名称的项目变量,那将被视为更多 "specifically scoped" 并因此在部署时使用。我认为这对特定于项目的连接字符串之类的事情没有多大帮助。

您可以将用户名和密码的变量引用添加到库变量集中的连接字符串变量中。

Server=myServerAddress;Database=myDataBase;User Id=#{dbuserid}; Password=#{dbpassword};

然后在每个使用这个库变量集的项目中,为dbuseriddbpassword创建一个新的变量,当这些变量被评估用于部署时,这些变量占位符在连接字符串将使用项目变量提供的值进行更新。

部署期间connection string变量的最终值:

Server=myServerAddress;Database=myDataBase;User Id=userid; Password=password;

更多详情:

这就是你的库变量集的样子,你也可以在这里添加一些范围。

Link Library Variable Set 到项目:

然后在项目变量中设置用户id和密码:

然后您可以在脚本中使用连接字符串或在配置文件中用作变量替换。

我用下面的 powershell 脚本测试了它

write-host $connectionstring
write-host "#{connectionstring}"

结果如下:

如果需要将连接字符串注入JSON文件中的特定位置,可以使用JSON Configuration Variables语法并将值设置为连接字符串变量引用#{connectionstring}.