← Назад ко всем вопросам

Что такое only/except в GitLab CI

1️⃣ Как кратко ответить

Only/except в GitLab CI — это директивы, которые определяют, при каких условиях должен выполняться конкретный job в pipeline. Only указывает, когда job должен запускаться, а except — когда не должен. Они могут использоваться для фильтрации по веткам, тегам, переменным и другим условиям.

2️⃣ Подробное объяснение темы

В GitLab CI/CD, когда вы создаете pipeline, вы можете столкнуться с ситуацией, когда не все jobs должны выполняться при каждом запуске. Например, вы можете захотеть запускать определенные jobs только для определенных веток или исключать их для других. Для этого в GitLab CI используются директивы only и except.

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

Использование only/except позволяет оптимизировать процесс CI/CD, избегая ненужных запусков jobs, что экономит ресурсы и время. Это особенно важно в больших проектах, где каждый запуск pipeline может занимать значительное время и ресурсы.

Как это работает

  • only: Определяет условия, при которых job должен быть выполнен. Если условия, указанные в only, выполняются, job запускается.
  • except: Определяет условия, при которых job не должен быть выполнен. Если условия, указанные в except, выполняются, job не запускается.

Примеры использования

Пример 1: Фильтрация по веткам

job:
  script: echo "This job runs only on the master branch"
  only:
    - master
  • script: Команда, которая будет выполнена в job.
  • only: - master: Job будет выполняться только в ветке master.

Пример 2: Исключение для определенной ветки

job:
  script: echo "This job runs on all branches except master"
  except:
    - master
  • except: - master: Job будет выполняться во всех ветках, кроме master.

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

job:
  script: echo "This job runs only for tagged commits"
  only:
    - tags
  • only: - tags: Job будет выполняться только для коммитов, помеченных тегами.

Пример 4: Комбинированные условия

job:
  script: echo "This job runs on master and for tagged commits"
  only:
    refs:
      - master
      - tags
  • only: refs: - master - tags: Job будет выполняться в ветке master и для всех коммитов с тегами.

Практическое применение

  • Разделение окружений: Вы можете настроить jobs так, чтобы они выполнялись только в определенных окружениях, например, только в production.
  • Оптимизация ресурсов: Исключение выполнения jobs для веток, которые не требуют тестирования или деплоя, например, для feature-веток.
  • Управление релизами: Запуск jobs только для тегированных коммитов, что может быть полезно для автоматизации релизов.

Таким образом, only/except — это мощные инструменты для управления поведением jobs в GitLab CI/CD, позволяющие гибко настраивать условия их выполнения.

Тема: CI/CD
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки