[英]Gitlab-CI environment variable from Python script to pipeline
我如何从 python 脚本中获取 gitlab-ci 环境变量VERSION
值 - get_version.py
-runners 的 get_version.py 可以在操作系统 windows 和 ZE206A54E97690CCE9650CC872DD70EE8 上运行? 我需要一些通用解决方案,以便它可以在两个操作系统上运行。
这是我的.gitlab-ci.yml
:
stages:
- versioning
variables:
VERSION: ""
versioning:
stage: versioning
script:
- echo "[versioning] ..."
- python ./ci-cd_scripts/get_version.py
- echo $VERSION
这是我的./ci-cd_scripts/get_version.py
:
import os
refName = os.environ.get("CI_COMMIT_REF_NAME")
piplineID = os.environ.get("CI_PIPELINE_ID")
relVersion = refName + ".0." + piplineID
version = relVersion.replace("rel.", "")
print("current version is", version)
我发现可行的方法是将其保存到临时文件中。
import os
refName = os.environ.get("CI_COMMIT_REF_NAME")
piplineID = os.environ.get("CI_PIPELINE_ID")
relVersion = refName + ".0." + piplineID
version = relVersion.replace("rel.", "")
print("current version is", version)
with open('.env', 'w') as writer:
writer.write(f'export VERSION="{version}"')
然后在管道中,您只需使用 .env 文件导出变量
script:
- ./ci-cd_scripts/get_version.py
- source .env
- echo $VERSION
通常是不可能的
您可以使用 Python 脚本中的os.environ
设置和修改环境变量,但随着脚本完成,一切都会恢复到以前的值。
阅读 StackOverflow 上的这些帖子会很有帮助:
为什么在 python 中设置的环境变量不能持续存在?
如何在 Python 中进行环境变量更改?
Linux 上 Python 中的环境变量
修改您的get_version.py
python 脚本以具有:
#!/usr/bin/python3
print("export VERSION='{}'".format(value))
然后在您的管道中:
script:
- eval `python ./ci-cd_scripts/get_version.py`
- echo $VERSION
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.