TGViewer
CORTEL CORTEL @cortel_cloud · 4.07K subscribers
Post #2640 1.25K
GitLab CI Components —переиспользуемые, параметризуемые блоки конфигурации CI/CD, которые позволяют применять принцип DRY (Don't Repeat Yourself) в пайплайнах GitLab.

📎 Компоненты были представлены в GitLab 16.0 как экспериментальная функция, а в версии 17.0 стали общедоступными. Механика похожа на модули в Terraform или пакеты в языках программирования.

✅ Зачем это нужно?

— Избежать дублирования кода: Устранить копирование одинаковых jobs и steps в разные .gitlab-ci.yml файлы.
— Стандартизировать процессы: Создать единые, проверенные шаблоны для часто выполняемых задач (сборка, тестирование, деплой).
— Упростить поддержку: Обновить логику в одном месте (компоненте), и изменения применятся во всех проектах, которые его используют.
— Создавать библиотеки шагов: Делиться готовыми решениями внутри команды или сообщества.

✅ Ключевые принципы:

🔵Компонент — это файл .yml с определением одной или нескольких джоб, который хранится в отдельном репозитории GitLab.

🔵Include — Подключение компонента в .gitlab-ci.yml с помощью директивы include: component.

🔵Параметры — Компоненты принимают входные параметры (inputs), что делает их гибкими и адаптируемыми.

✅ Практический пример:

Простой компонент для линтера (.gitlab/ci/components/linter.yml в отдельном репозитории)


# Определение компонента
spec:
inputs:
stage:
default: test
image:
default: "node:20-alpine"

"lint-$[[ inputs.linter ]]": # Динамическое имя джобы
stage: $[[ inputs.stage ]]
image: $[[ inputs.image ]]
script:
- run-lint --linter $[[ inputs.linter ]]


Использование компонента в проекте:


# .gitlab-ci.yml вашего приложения
include:
# Указываем полный путь к компоненту
- component: gitlab.example.com/org/ci-catalog/linter@main
inputs:
linter: "eslint"


GitLab CI Components — это эволюция подхода к CI/CD как к коду. Они позволяют заменить рутинное копирование десятков строк конфигурации в каждом проекте на подключение готового компонента. В результате CI/CD-конфигурация превращается из монолитного скрипта в набор декларативных, версионируемых и легко тестируемых модулей.

➡️ Подробнее в документации Gitlab

#заметкиИнженера
  • ❤ 7
  • 👍 4
  • 🔥 3
More from @cortel_cloud
  1. Oct 1, 2026🖥 sed — потоковый редактор текста в Linux 🤓 Появился в Bell Labs в 1970-х и до сих пор и…
  2. Sep 29, 2026🖥 РАЗНИЦА Block, File и Object Storage 🧑‍🎓Повторение — мать учения. Для разных задач по…
  3. Sep 25, 2026😎 Когнитивная РАЗгрузка За неделю с горящими дедлайнами, часовыми ВКС и постоянным перекл…
  4. Sep 23, 2026💻 kubectl diff: обработка изменений в CI/CD kubectl diff сравнивает текущую конфигурацию…
  5. Sep 18, 2026🛡 ДА! У НАС ЦЕЛАЯ ЧЕРЕДА ПОЛЕЗНЫХ ЭФИРОВ ПРО ИБ! 🎙 Уже 24 сентября Вероника Нечаева, выс…
  6. Sep 16, 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 →