如何将gitlab ci环境变量转储到文件 问题

如何将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:

如何将所有Gitlab CI环境变量(在项目或组CI/CD设置中设置了变量)转储到一个文件中,但仅将它们转储到一个文件中,而不使用执行Gitlab runner的主机的环境变量

背景 我们正在使用gitlab CI/CD将项目部署到docker服务器。每个项目都包含一个
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
  ...

谢谢你的回复,但这不是我们正在寻找的解决方案。我们的问题是,我们希望在将变量转储到文件时忽略一些变量。