.gitlab-ci.yml覆盖变量在appsetings.json中定义

.gitlab-ci.yml Override Variable Defined in appsetings.json

我正在尝试通过在.gitlab-ci.yml文件中定义它们来替换AspnetCore使用的env变量。

appsettings.json文件如下所示:

1
2
3
 "ConnectionStrings": {
   "DatabaseConnection":"my-connection-string"
  },

这是我尝试过的一些事情。

无效的Yml:

1
2
ConnectionStrings:
  DatabaseConnection:"my-connection-string"

有效的yml(无效):

1
2
"ConnectionStrings:DatabaseConnection":"my-connection-string"  
"ConnectionStrings::DatabaseConnection":"my-connection-string"

对于最后两个错误,如您所见,它全部转换为一个长字符串,而不是env变量的键值对:

/bin/bash: line 87: export:
`ConnectionStrings::DatabaseConnection=Server=mssql,1433;Database=MyDatabase;User
Id=SA;Password=MyPassword;Trusted_Connection=False;MultipleActiveResultSets=True':
not a valid identifier

我正在将Linux运行程序用于CI。


好像您正在根据环境尝试替换数据库连接。您可以使用一些策略,例如配置变量

1
2
3
"ConnectionStrings": {
   "DatabaseConnection":"$CONNECT_ENV"
  },

在每个环境中,例如$CONNECT_INT, $CONNECT_QA, $CONNECT_PROD可以有一个,并正确配置这些变量中的每一个(.gitlab-ci.yml的变量部分)

1
2
variables:
    CONNECT_INT :"ConnectionStrings::DatabaseConnection=Server=mssql,1433;Database=DB_INTEGRATION_PROD;User Id=SA;Password=MyPassword;Trusted_Connection=False;MultipleActiveResultSets=True"

或者每个环境CONSTRING_INT.conf, CONSTRING_PROD可能有多个文件,并根据环境进行替换。

或者您可以使用shell命令替换连接字符串。 https://unix.stackexchange.com/questions/226005/how-can-i-replace-a-specific-string-within-a-line-inside-a-text-file

我们正在使用的真实项目的示例1
[一个项目的实际例子] 1