TGViewer
Devops Bootcamp с Федосеевым Devops Bootcamp с Федосеевым @devopsupgrade · 5.33K subscribers
Post #1127 1.33K
Коллеги, привет! 👋🏻
Сегодня поговорим про Gitlab и посмотрим простой прием с переменными (variables) и вводом (input).
Они начали использоваться начиная с 17.0 версии, уже 10 версий прошло, кажется можно и обсудить. Не забудьте, что на более старых версиях может вообще не работать. в т.ч проверяйте версию раннера.

Как работать с переменными должно быть всем понятно, но у них есть несколько проблем и сложностей. Сегодня рассмотрим как просто поменять Variable на Inputs и как можно расширить возможности вашего пайплайна:

📌Простой пример как использовать переменные в job в Вашем gitlab-ci:
variables:
versions:
value: "1.0"
options:
- "0.1"
- "1.0"
- "2.1"
description: "tag name"

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

📌Так как это действительно удобно, сделаем тоже самое с inputs
spec:
inputs:
versions:
options: ['0.1', '1.0', '2.1']
default: '1.0'
description: 'tag name'

Работает точно также. Только для использования нужно использовать $[[ inputs.versions ]] вместо $versions

Возможно, выглядит может чуть сложнее, но с большей сложностью приходят новые возможности.

⏩Одну из них сегодня разберем.
С помощью переменных, я могу сделать огромный список разных вариантов переменных, сочетание которых, будет делать то, что нужно. Но мне хочется больше.
С помощью inputs можно создавать условие отображения возможных вариантов переменных. То есть, выбрав одну переменную, сделать возможным отображение вариантов или условий соответствующих только для нее.

Попробуем это сделать:
spec:
inputs:
run_playbook: # Например я хочу выбирать значение для опредленного плейбука
options: ['', 'nginx', 'k8s', 'postgres']
default: ''
description: 'Playbook to run'

environment:   # Возможно значение будет зависеть от окружения
options: ['development', 'staging', 'production']
default: 'development'
description: 'Your environment'

playbook:     # Вот и основное значение, допустим это имя плейбука или нужная ему переменная
description: 'Install'
rules: # Пишем привычные правила, указывая условия. варианты будут доступны только при выполнении условий
- if: $[[ inputs.run_playbook ]] == 'nginx' && $[[ inputs.environment ]] == 'development'
options: ['my_lb', 'your_lb']
default: 'my_lb'
- if: $[[ inputs.run_playbook ]] == 'nginx' && $[[ inputs.environment ]] == 'production'
options: ['prod01', 'prod02', 'prod03']
default: 'prod01'
- if: $[[ inputs.run_playbook ]] == 'k8s'
options: ['common-test', 'common-dev', 'common-prod']
default: 'common-test'
- if: $[[ inputs.run_playbook ]] == 'postgres'
options: ['base01', 'base02', 'base03']
default: 'base01'
- options: ['']
default: '' # Пока не выбрано - будет пустое значение


Попробуйте использовать в ваших пайплайнах, а если вам будет полезно, разберем и другие варианты использования 🔥
  • 🔥 11
  • ❤ 3
  • 🐳 1
More from @devopsupgrade
  1. Sep 23, 2026Вчера стартовал курс «Профессия DevOps-инженер»🔥 Из чего состоит курс: Обучение проходит…
  2. Sep 22, 2026⚡️⚡️⚡️⚡️⚡️⚡️ Коллеги, приветствую👋 🔴Бывали ли у вас такое, открываешь вакансию - а там с…
  3. Sep 21, 2026Post #1247
  4. Sep 18, 2026Коллеги, приветствую 👋 Сегодня подводим итоги розыгрыша фирменного мерча: разыгрывались 3…
  5. Sep 8, 2026🎉 Розыгрыш завершен! 🏆 Победители: 1. @WolkStt 🔍 Проверить результаты
  6. Sep 7, 2026Коллеги, приветствую👋 Решил порадовать подписчиков своего канала и разыграть фирменный ме…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →