英文:
how to access specific key in Variables from file, gitlab-ci
问题
我想在Git中的一个文件夹中存储一个名为.env的文件,其内容如下:
a=香蕉
b=苹果
在我的流水线部署阶段中,我想包括这个文件并将其导出到环境变量,以便我的Docker容器可以接收它并将适当的值设置到docker-compose中。
我尝试了以下方法,但似乎没有成功:
部署生产环境:
  阶段: 部署
  镜像: 我的镜像
  变量:
    包括: /pr/.env
  脚本:
      - cat $a
      - echo $a
      - cat $b
      - echo $b
      - export .env
在GitLab CI中是否可能实现这个功能?
英文:
I would like to have a file in store in a folder in git named .env with the following content:
a=bananas
b=apples
in my pipeline deployment stage, I would like to include this file and export it to the env variables, so that my docker container would receive it and set the proper values into docker-compose.
I tried without much lucky the following:
Deploy Production:
  stage: deploy
  image: my_image
  variables:
    include: /pr/.env
  script:
      - cat $a
      - echo $a
      - cat $b
      - echo $b
      - export .env
it doesn't seem to work, is it possible in gitlab-ci?
答案1
得分: 2
以下是您要翻译的部分:
在部署阶段的(shell)脚本中,您可以直接在导出变量时使用文件作为源:
部署生产:
  阶段:部署
  镜像:我的镜像
  脚本:
      - set -o allexport; source .env; set +o allexport
      - echo $a
      - echo $b
如果您确实需要Gitlab解释变量,您可以使用带有dotenv artifacts的动态变量:
生成dotenv artifact:
  阶段:.pre
  脚本:
    - echo "生成变量" ## 实际上这里需要脚本,但实际上没有什么可做的
  构件:
    报告:
      dotenv:.env
部署生产:
  阶段:部署
  镜像:我的镜像
  脚本:
      - echo $a
      - echo $b
希望这对您有所帮助。
英文:
You can directly [source your file while exporting variables][2] in your (shell) script of the deploy stage:
Deploy Production:
  stage: deploy
  image: my_image
  script:
      - set -o allexport; source .env; set +o allexport
      - echo $a
      - echo $b
[2]: https://stackoverflow.com/a/30969768/13934411 "Answer to: Set environment variables from file of key/value pairs"
If you really need variables to be interpreted by Gitlab, you can use dynamic variables with dotenv artifacts:
Generate dotenv artifact:
  stage: .pre
  script: 
    - echo "generating variables" ## script is needed but in fact there is nothing to do here
  artifacts:
    reports:
      dotenv: .env
Deploy Production:
  stage: deploy
  image: my_image
  script:
      - echo $a
      - echo $b
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论