英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论