我的appSettings.json中的Gitlab CI / CD变量替换

时间:2020-07-24 13:48:08

标签: gitlab gitlab-ci

我正在使用Gitlab CI / CD将.netcore应用程序部署到AWS Beanstalk。 使用CI / CD管道设置中定义的变量部署到不同环境时,如何更新.netcore应用程序中的appSettings.json值?

Azure DevOps有一个我非常喜欢的JSON variable substitution feature

GitHub Actions也可以hook into this feature

如何使用Gitlab CI / CD实现此目标?

我想使用这种部署方法,因为

  1. 我不必在存储库中存储敏感的生产配置值。值将通过CI / CD管道中的掩码变量设置进行更新。
  2. 每次部署到新环境中时,我都不必重建人工制品。

如果在Gitlabs中无法做到这一点,建议的最佳实践是什么?

谢谢

2 个答案:

答案 0 :(得分:1)

我使用相同的解决方法。我在几个月前提交了一个关于这个的问题: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/78486

我最近在 gitlab 论坛上谈到了这个:

https://forum.gitlab.com/t/use-variables-per-branch-in-gitlab/43685

不幸的是,目前似乎没有一个好的/干净的解决方案。

所以我使用了解决方法: 1:对变量使用环境作用域,这样同一个变量可以有不同的值(对于测试/生产环境) 2:在gitlab-ci.yml中定义jobs中的环境和分支 3:创建一堆 sed one liner 来进行搜索/替换..

称其为丑陋,称其为低级,但我搜索了一个不错的/干净的/gitlab 原生解决方案,但没有找到。

答案 1 :(得分:0)

我在这里用gitlab做类似的事情,解决方案是构建一个shell脚本,该脚本在开始部署工作之前先从变量值中替换一些字符串

类似的东西

script:
  - sed -i 's/STRING_TO_REPLACE/$GITLAB_VARIABLE/g' file.json

只需注意正确转义json引号即可