Ответ
Я использовал GitLab Hooks для автоматизации процессов и интеграций в CI/CD-пайплайнах.
1. Webhooks: Настраивал webhooks репозитория GitLab для отправки событий (push, merge request, tag) во внешние системы.
- Уведомления в Slack/MS Teams: О новых коммитах в важные ветки или о создании merge request.
- Запуск внешних CI-систем или скриптов развертывания.
- Обновление внешнего issue tracker или системы документации.
2. Git Hooks на стороне сервера (Server-Side Hooks): Администрировал хуки на GitLab-сервере (через файловую систему или API) для реализации корпоративных политик.
pre-receiveхук: Для проверки, что коммит-мессаджи соответствуют соглашению (например, Conventional Commits), или что в push не добавлены файлы большого размера.post-receiveхук: Для запуска сложных сценариев, которые неудобно описывать в.gitlab-ci.yml.
3. Интеграция хуков в CI/CD:
Чаще всего автоматизацию реализовывал непосредственно в .gitlab-ci.yml, что является более предпочтительным и прозрачным способом.
Пример: этап пайплайна, который выполняется только для merge request и проводит дополнительную проверку безопасности (SAST):
sast_analysis:
stage: test
script:
- echo "Running SAST analysis for Merge Request..."
- /opt/security-scanner/run-analysis.sh $CI_PROJECT_DIR
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" # Триггером является событие MR
Таким образом, хуки в GitLab — это мощный механизм для расширения стандартного workflow и глубокой интеграции с инструментами DevOps-стека.