繁体   English   中英

从 Python 脚本到管道的 Gitlab-CI 环境变量

[英]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)

管道日志中的 python output

我发现可行的方法是将其保存到临时文件中。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM