Ответ
CI/CD пайплайн автоматически запускается по триггерам — событиям в системе контроля версий или по расписанию. Это основа практик непрерывной интеграции и доставки.
Основные триггеры автоматического запуска:
-
Push в определённые ветки: Чаще всего при пуше в
main,masterилиdevelop. Это гарантирует, что каждая интеграция кода проверяется.# .gitlab-ci.yml пример test: script: echo "Running tests..." only: - main # Запуск при пуше в main - develop # Запуск при пуше в develop -
Создание или обновление Pull/Merge Request (PR/MR): Запуск пайплайна для проверки кода перед слиянием. Часто включает этапы сборки, тестирования и линтинга.
# .github/workflows/ci.yml пример для GitHub Actions on: pull_request: branches: [ main, develop ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm test -
По расписанию (Scheduled/Cron): Запуск ночных регрессий, нагрузочных тестов или задач обслуживания.
# GitLab CI: ночной запуск полного тестового набора nightly_regression: script: ./run_full_test_suite.sh rules: - if: $CI_PIPELINE_SOURCE == "schedule" # Триггер по расписанию -
Внешние события (Webhook): Запуск из внешних систем, например, при обновлении зависимости в артефакт-репозитории или по результатам другого пайплайна.
Важно: Настройка правильных триггеров предотвращает "сгорание" ресурсов (например, запуск тяжёлого пайплайна на каждый пуш в feature-ветку) и обеспечивает своевременную обратную связь.
Ответ 18+ 🔞
Да ты посмотри, какая хитрая жопа у этих CI/CD пайплайнов! Они ж не просто так, как дураки, по десять раз на дню запускаются. Нет, блядь, у них тут целая система, как у шпионов — ждут своего триггера, сука, сигнала!
Вот представь: сидит пайплайн, бздит тихонечко, и вдруг — раз! — ему в душу бога мать, событие какое-то прилетело. И он такой: «А, ну всё, понеслась, сейчас я вам покажу непрерывную интеграцию, мать вашу!»
Основные способы его раскачать, этого спящего красавца:
-
Кто-то пушнул в святые ветки. Обычно в
mainилиdevelop. Это святое, блядь! Туда чихнуть нельзя, а уж пушнуть — так сразу вся обойма проверок выезжает. Типа: «А ну-ка, покажи, что ты там, сука, накодил?»# .gitlab-ci.yml пример test: script: echo "Запускаю тесты, а то мало ли чё..." only: - main # Ткнули в main — получите распишитесь - develop # И сюда ткнули — тоже получите -
Кто-то Merge Request создал. Ага, хочешь своё творение в основную ветку впендюрить? Сначала, дружок, пройди все круги ада — сборку, тесты, линтинг. Пайплайн тебя проверит на вшивость.
# GitHub Actions, например on: pull_request: # Внимание, все на выход! Кто-то хочет мержиться! branches: [ main, develop ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm test # Не пройдёшь — иди нахуй со своим кодом -
По будильнику (Cron). Это как ночной дежурный, ёпта. Все спят, а он в три часа нощи поднимается и начинает: «А давайте-ка я полный регресс гонану, на всякий случай!» Спокойной ночи, ресурсы.
# GitLab CI nightly_regression: script: ./run_full_test_suite.sh # Всем пизда, я проснулся! rules: - if: $CI_PIPELINE_SOURCE == "schedule" # Да, именно по расписанию, а чё? -
Извне, по вебхуку. Вообще охуенно! Другая система, ни с того ни с сего, может ему пинка дать. Типа: «Эй, пацан, зависимости обновились, давай собирайся заново, не отлынивай!»
А самое главное, чувак, это не переборщить, а то терпения ноль ебать. Настроить эти триггеры с умом, чтобы он не вздрачивался на каждый чих в какую-нибудь левую ветку feature-petya-test. Иначе ресурсы сгорят, а толку — хуй с горы. Надо, чтобы работало чётко, как часы: по делу — вжжжжух, отработал; не по делу — спит, блядь, и не дергается. Вот и вся магия, в рот меня чих-пых!