Обновление переменных среды Gitlab из сценария python в конвейере - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь обновить переменную среды Gitlab из сценариев python:

В gitlab-ci.yml

gitlab_job:
  stage: gitlab_stage
  script:
    - python set_myvar.py
    - echo $MYVAR

В set_myvar.py

import os
os.environ["MYVAR"] = my_value

Мне не нужна переменная для сохранения. Мне просто нужно, чтобы он был программно обновлен (от python).

Пока что он ничего не делает.

1 Ответ

1 голос
/ 11 февраля 2020

Это не сработает. Модель процесса UNIX требует, чтобы определенные атрибуты были частными для процесса. Это включает в себя такие вещи, как текущий рабочий каталог процесса и его переменные среды . Каждый из этих личных атрибутов наследуется; либо неявно, либо явно, в зависимости от того, как дочерний процесс порожден его родительским процессом. Дочерний процесс не может изменить эти частные атрибуты своего родителя.

Существуют способы обойти вышеупомянутое ограничение. Например, дочерний процесс может записать новые пары var=value в стандартный вывод. Затем родительский процесс, который запускает вашу программу python, может прочитать эти строки и добавить их в свою среду. В вашем случае ваша python программа будет делать print("MYVAR=my_value"), и вы будете запускать ее из скрипта gitlab как eval $(python set_myvar.py).

...