Ответ
Да, активно использовал. Правила rules — это основной инструмент для условного выполнения джобов в GitLab CI/CD. Они заменили устаревшие only/except и предоставляют гораздо более гибкую и читаемую логику.
Основные сценарии использования:
- Запуск по событию или ветке: Например, запускать сборку только для merge request или для ветки
main. - Запуск по изменению файлов: Использование ключа
changesдля запуска джобов только при модификации определённых файлов (например,Dockerfileилиpackage.json). - Ручное подтверждение: Установка
when: manualдля критичных операций, таких как деплой в production.
Пример из реального пайплайна:
integration_test:
stage: test
script: ./run_integration_tests.sh
rules:
# Всегда запускать для merge request
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
# Запускать для main, но требовать ручного подтверждения
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual
# Не запускать ни при каких других условиях
- when: never
docker_build:
stage: build
script: docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
rules:
# Собирать образ только если изменился Dockerfile и мы в main
- if: '$CI_COMMIT_BRANCH == "main"'
changes:
- Dockerfile
- docker/scripts/*
when: on_success
Правила позволяют создавать эффективные пайплайны, где ресурсы тратятся только на необходимые операции, что экономит время и вычислительную мощность.