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

时间:2020-04-29 07:41:14

标签: python gitlab environment-variables gitlab-ci

如何从python脚本中获取gitlab-ci环境变量VERSION的值-get_version.py,以使gitlab-runners可以在OS Windows和Linux上运行? 我需要一些通用的解决方案,以便它在两个OS上都能正常工作。

这是我的.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 in pipeline log

3 个答案:

答案 0 :(得分:1)

我发现可以将其保存到临时文件中。

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

答案 1 :(得分:0)

通常是不可能的

您可以在Python脚本中使用os.environ来设置和修改环境变量,但是在脚本完成后,一切都将恢复为先前的值。

在StackOverflow上阅读以下文章会很有帮助:

Why can't environmental variables set in python persist?
How do I make environment variable changes stick in Python?
Environment Variables in Python on Linux

答案 2 :(得分:0)

将您的On-hold python脚本修改为:

Partial-paid

,然后在您的管道中:

wp_wc_product_meta_lookup
相关问题