Переопределите определенную переменную CI/CD в задании gitlab

# #gitlab #gitlab-ci

Вопрос:

в настоящее время я сталкиваюсь с проблемой с использованием Gitlab-ci. я использую gitlab 13.12 community edition. Я хочу иметь возможность переопределять значение переменной CICD из задания gitlab-ci.yml.

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

Чтобы быть точным , я хочу иметь возможность изменять MY_CICD_VARIABLE_TO_CHANGE, который я определил в проекте > cicd >> переменные. и обновите это значение из задания gitlab-ci

что-то вроде этого, но не только измените его для текущего конвейера, но и обновите его :

 change_variable_value:
  stage: "change_variable"
  image: myimage
  script:
    - $MY_CICD_VARIABLE_TO_CHANGE="value_changed"
 

, я пытался сделать все отдельные решения, указанные здесь :
https://docs.gitlab.com/13.12/ee/ci/variables/index.html#override-a-defined-cicd-variable

кажется, ничего не работает. Я также пытался использовать артефакт, но , похоже, я не могу передавать артефакт между 2 различными конвейерами, они должны быть частью одного конвейера, даже свернув api (по крайней мере, в версии сообщества)

Любая идея более чем приветствуется 🙂

Комментарии:

1. Запускаете ли вы следующий трубопровод из этого трубопровода? Или вы просто имеете в виду следующий конвейер, который будет запущен, когда бы это ни было?

2. Существует метод API для обновления переменной проекта ; вы пробовали это?

3. я также рекомендую добавить, в чем заключается ваше использование. я не думаю, что то, что вы планируете сделать, является хорошей практикой. Каждый конвейер выполняется самостоятельно. Поэтому, если вы хотите отредактировать переменную CI, вам нужен API или вы можете управлять файлом и зафиксировать это. В любом случае, я не думаю, что это целесообразно без прецедента использования 🙂

4. Привет , большое спасибо за ваши ответы ! на самом деле мой вариант использования заключается в том, что я хочу выполнить свою работу дважды. при первом запуске моя пользовательская переменная была установлена в значение «true» в соответствии с условием правила. И я хотел бы иметь возможность выполнить задание во второй раз с условием правила только в том случае, если ранее установленная переменная имеет значение «true». Как следствие, возможность сохранить это значение и использовать его во втором запуске. но поскольку они не являются частью одного и того же конвейера, переменная либо пуста, либо имеет значение, которое я приписал ей до того, как задание изменило ее

5. если вы хотите выполнить задание дважды, почему бы не определить его дважды в CI YAML, но где второе задание выполняется только в том случае, если переменная соответствует определенному значению?