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

时间:2020-01-22 12:09:36

标签: gitlab gitlab-ci gitlab-ci-runner

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

appsettings.json文件如下所示:

  "ConnectionStrings": {
    "DatabaseConnection": "my-connection-string"
  },

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

无效的Yml:

ConnectionStrings:
  DatabaseConnection: "my-connection-string"  

有效的Yml(无效):

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

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

/ bin / bash:第87行:导出: `ConnectionStrings :: DatabaseConnection = Server = mssql,1433; Database = MyDatabase; User Id = SA; Password = MyPassword; Trusted_Connection = False; MultipleActiveResultSets = True': 不是有效的标识符

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

1 个答案:

答案 0 :(得分:1)

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

"ConnectionStrings": {
    "DatabaseConnection": "$CONNECT_ENV"
  },

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

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