我的连接字符串是在 Octopus Deploy 中配置的,library/variables/LibraryVariableSets
并且根据目标环境一切正常,我现在要做的是为每个项目/应用程序创建新的数据库用户,并在 Octopus 的连接字符串中设置这个 UID/PWD。
我的问题是:如何配置每个项目的连接字符串,就像我已经拥有的项目的局部变量(应用程序设置键)一样?
PS八达通版本是4.1.2
我的连接字符串是在 Octopus Deploy 中配置的,library/variables/LibraryVariableSets
并且根据目标环境一切正常,我现在要做的是为每个项目/应用程序创建新的数据库用户,并在 Octopus 的连接字符串中设置这个 UID/PWD。
我的问题是:如何配置每个项目的连接字符串,就像我已经拥有的项目的局部变量(应用程序设置键)一样?
PS八达通版本是4.1.2
您可以将用户名和密码的变量引用添加到库变量集中的连接字符串变量。
Server=myServerAddress;Database=myDataBase;User Id=#{dbuserid}; Password=#{dbpassword};
然后在您使用此库变量集的每个项目中,为dbuserid
和创建一个新变量dbpassword
,当为部署评估变量时,连接字符串中的这些变量占位符将使用项目变量提供的值进行更新。
connection string
部署期间变量的最终值:
Server=myServerAddress;Database=myDataBase;User Id=userid; Password=password;
更多细节:
链接Library Variable Set
到项目:
然后在项目变量中设置用户名和密码:
然后,您可以在脚本中使用连接字符串或在配置文件中作为变量替换。
我使用以下 powershell 脚本对其进行了测试
write-host $connectionstring
write-host "#{connectionstring}"
这导致以下输出:
如果需要将连接字符串注入 JSON 文件中的特定位置,可以使用JSON 配置变量语法并将值设置为连接字符串变量引用#{connectionstring}
。
库变量集中的变量不能限定为单个项目,因为它们被设计为跨项目的全局变量。但是,有一个有效的 UserVoice 建议来实现这一点: https ://octopusdeploy.uservoice.com/forums/170787-general/suggestions/31206961-library-variables-ability-to-scope-to-projects
您当前可以在一个集合中定义这些变量,如果您想定义一个默认值,可以将该集合包含到许多项目中。如果您定义具有相同名称的项目变量,则将被视为更“特定范围”,因此在部署时使用。我认为这对于特定于项目的连接字符串之类的事情没有太大帮助。