代码之家  ›  专栏  ›  技术社区  ›  SWilk

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

  •  0
  • SWilk  · 技术社区  · 6 年前

    问题

    背景

    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
        ...
    

    现在的问题是 .环境 文件包含gitlab变量和hosts系统环境变量,并在结果中 PATH变量被覆盖 .

    我开发了一个解决方法 grep :

    env | grep -Pv "^PATH" > variables.env
    

    它允许我们暂时保持这个功能,但我认为问题可能会再次影响到我们,因为另一个变量将在容器内和主机系统上设置为不同的值。

    我知道我可以列出docker compose和类似文件中的所有变量,但我们在一些项目中已经有相当多的变量,所以这不是一个解决方案。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Ryabchenko Alexander    5 年前

    您需要添加到脚本的下一个命令

    script:
      ...
      # Read certificate stored in $KUBE_CA_PEM variable and save it in a new file
      - echo "$KUBE_CA_PEM" > variables.env
      ...