Переменная среды Gitlab-CI из сценария Python в конвейер - PullRequest
2 голосов
/ 29 апреля 2020

Как я могу получить значение переменной окружения gitlab-ci VERSION из сценария python - get_version.py для бегунов gitlab, которые будут работать как на ОС windows, так и linux? Мне нужно какое-то универсальное решение, чтобы оно работало на обеих ОС.

Вот мой .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 вывод в журнал конвейера

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Обычно это невозможно

Вы можете устанавливать и изменять переменные среды, используя os.environ внутри Python сценариев, но когда сценарии завершены, все возвращается к предыдущему значению.

Было бы полезно прочитать эти сообщения в StackOverflow:

Почему переменные окружения, установленные в python, не сохраняются?
Как сделать, чтобы изменения переменных среды оставались в Python?
Переменные среды в Python в Linux

0 голосов
/ 29 апреля 2020

Измените ваш get_version.py python сценарий так, чтобы он имел:

#!/usr/bin/python3

print("export VERSION='{}'".format(value))

и затем в вашем конвейере:

script:
  - eval `python ./ci-cd_scripts/get_version.py`
  - echo $VERSION
...