如何将gitlab ci环境变量转储到文件 问题
如何将所有Gitlab CI环境变量(在项目或组CI/CD设置中设置了变量)转储到一个文件中,但仅将它们转储到一个文件中,而不使用执行Gitlab runner的主机的环境变量 背景 我们正在使用gitlab CI/CD将项目部署到docker服务器。每个项目都包含一个如何将gitlab ci环境变量转储到文件 问题,gitlab,environment-variables,gitlab-ci,gitlab-ci-runner,Gitlab,Environment Variables,Gitlab Ci,Gitlab Ci Runner,如何将所有Gitlab CI环境变量(在项目或组CI/CD设置中设置了变量)转储到一个文件中,但仅将它们转储到一个文件中,而不使用执行Gitlab runner的主机的环境变量 背景 我们正在使用gitlab CI/CD将项目部署到docker服务器。每个项目都包含一个docker compose.yml文件,该文件使用各种环境变量,例如db密码。我们使用.env文件来存储这些变量,这样就可以在部署后从命令行启动/重新启动容器,而无需访问gitlab 我们的部署脚本如下所示: deploy:
docker compose.yml
文件,该文件使用各种环境变量,例如db密码。我们使用.env
文件来存储这些变量,这样就可以在部署后从命令行启动/重新启动容器,而无需访问gitlab
我们的部署脚本如下所示:
deploy:
script:
#...
- cp docker-compose.development.yml {$DEPLOY_TO_PATH}/docker-compose.yml
- env > variables.env
- docker-compose up -d
#...
version: "3"
services:
project:
image: some/image
env_file:
- variables.env
...
而docker compose.yml
文件如下所示:
deploy:
script:
#...
- cp docker-compose.development.yml {$DEPLOY_TO_PATH}/docker-compose.yml
- env > variables.env
- docker-compose up -d
#...
version: "3"
services:
project:
image: some/image
env_file:
- variables.env
...
现在的问题是.env
文件同时包含gitlab变量和hosts系统环境变量,结果中路径变量被覆盖
我已经开发了一个使用grep
的变通方法:
env | grep -Pv "^PATH" > variables.env
它允许我们暂时保持这种工作状态,但我认为问题可能会再次影响到我们,因为在容器内和主机系统上,另一个变量将被设置为不同的值
我知道我可以列出docker compose和类似文件中的所有变量,但我们在一些项目中已经有了相当多的变量,因此这不是一个解决方案。您需要添加到脚本下一个命令中
script:
...
# Read certificate stored in $KUBE_CA_PEM variable and save it in a new file
- echo "$KUBE_CA_PEM" > variables.env
...
谢谢你的回复,但这不是我们正在寻找的解决方案。我们的问题是,我们希望在将变量转储到文件时忽略一些变量。