Что означает точка в названии задачи (job) в пайплайне CI/CD?


В названии таска в пайплайне точка (.) обычно используется для группировки или вложенности имен. Это зависит от используемого инструмента CI/CD, но вот несколько распространённых значений:

  1. Группировка шагов
    Например, в GitLab CI/CD, Jenkins, ArgoCD или других инструментах можно встретить:

    stages: - build - test - deploy jobs: build.frontend: stage: build script: echo "Building frontend" build.backend: stage: build script: echo "Building backend"

    Здесь build.frontend и build.backend принадлежат одной стадии (build), но имеют разные подзадачи.

  2. Пространство имён
    В некоторых системах, например, в Tekton, точка может использоваться как часть имени ресурса или таска.

  3. Иерархия логов или мониторинга
    В инструментах мониторинга (например, Prometheus, ELK) имена метрик или логов могут включать точки, чтобы указывать на их иерархическую структуру.

Если точка (.) стоит перед именем таска в пайплайне, это может означать одно из следующих:

  1. Скрытый таск (например, в GitLab CI/CD)
    В GitLab CI/CD, если имя задачи начинается с точки, то эта задача считается "скрытой" (hidden job) и не выполняется напрямую. Обычно такие таски используются как шаблоны для последующего наследования:

    .build_template: script: - echo "This is a hidden job template" build: extends: .build_template

    Здесь .build_template не запустится самостоятельно, но его настройки унаследует build.

  2. Некорректное имя
    В некоторых CI/CD системах название таска не может начинаться с точки, и это приведёт к ошибке. Например, в Jenkins и GitHub Actions имя шага или задания с точкой в начале может быть недопустимым.

  3. Техническая особенность конкретного инструмента
    В некоторых редких случаях точка может использоваться как особый синтаксис, но это зависит от CI/CD системы.

Что означает точка перед именем таска в GitLab CI/CD?

В GitLab CI/CD точка (.) перед именем задачи (job) делает её скрытой (hidden job). Такие задачи:

Не запускаются автоматически
Не отображаются в интерфейсе GitLab
Используются для переиспользования конфигурации через extends


Как работают скрытые таски в GitLab CI/CD?

1. Обычный таск без точки (выполняется автоматически)

stages: - test test_job: stage: test script: - echo "This job will run!"

test_job выполнится, так как он явно объявлен.


2. Скрытый таск с точкой (не выполняется сам)

stages: - test .hidden_template: script: - echo "This job is hidden and won’t run on its own." visible_job: extends: .hidden_template

🔹 Что здесь происходит?

  • .hidden_template – скрытая (шаблонная) задача, она не выполняется автоматически
  • visible_job унаследует script из .hidden_template и выполнится

3. Использование extends для нескольких тасков

stages: - build .build_template: script: - echo "Building project" backend_build: extends: .build_template script: - echo "Building backend" frontend_build: extends: .build_template script: - echo "Building frontend"

🔹 Что здесь происходит?

  • .build_template – скрытая задача с базовой логикой
  • backend_build и frontend_build унаследовали её, но переопределили script

4. Скрытые таски полезны для DRY (Don't Repeat Yourself)

Если у тебя есть много тасков с похожей логикой, лучше создать скрытый шаблон и использовать extends. Это уменьшает дублирование кода и облегчает поддержку .gitlab-ci.yml.

Пример без скрытого шаблона (много дублирования):
stages: - test test_python: stage: test script: - pytest test_js: stage: test script: - npm test

🚨 Минусы: код повторяется, сложно поддерживать.

Пример с скрытым шаблоном (лучше):
stages: - test .test_template: stage: test script: - echo "Running tests" test_python: extends: .test_template script: - pytest test_js: extends: .test_template script: - npm test

Плюсы: код проще, можно легко изменить общий script в .test_template.


Вывод

  • Точка перед именем делает таск скрытым и он не выполняется сам по себе
  • Такие таски используются для шаблонов, которые можно переиспользовать с extends
  • Это помогает сократить дублирование кода и сделать .gitlab-ci.yml чище и понятнее

💡 Рекомендация: Используй скрытые таски для повторяющихся шагов в пайплайне, например, для билдов, тестов и деплоя.

Комментарии

Популярные сообщения из этого блога

Consul – включает Service Discovery и Key-Value хранилище для Kubernetes

Сравнительный анализ манифестов Kubernetes, Helm-чартов и Kustomize

Service Mesh в Kubernetes: Подробный разбор с примерами