Как в GitLab настроить запуск джобы по нажатию кнопки?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для настройки ручного запуска джобы в GitLab CI/CD используется ключевое слово when: manual в описании джобы в файле .gitlab-ci.yml.
Пример:
stages:
- build
- deploy
build_job:
stage: build
script:
- echo "Building the project..."
# Команды сборки
deploy_staging:
stage: deploy
script:
- echo "Deploying to staging..."
# Команды деплоя
when: manual # Эту джобу нужно запускать вручную
allow_failure: false # По умолчанию false, но явно укажем для ясности
Разъяснение:
when: manual: Указывает GitLab, что эта джоба автоматически не запустится при изменении кода (коммите) или по расписанию. Она будет ждать ручного запуска пользователем через интерфейс GitLab.allow_failure: false: Определяет, должны ли последующие джобы (если есть) выполняться, если эта ручная джоба завершилась неудачно. Если установлено вfalse(значение по умолчанию), то пайплайн остановится в случае неудачи этой джобы. Если установитьtrue, то пайплайн продолжит выполнение даже при неудаче.
После добавления и коммита такого .gitlab-ci.yml файла, в интерфейсе пайплайнов GitLab (CI/CD -> Pipelines) возле джобы deploy_staging появится кнопка запуска ("Run") или её статус будет отображаться как "Manual". Нажатие на эту кнопку инициирует выполнение джобы.
Можно также включать ручные джобы в состав этапов, которые автоматически запускают другие джобы. Например:
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building..."
test_job:
stage: test
needs: [build_job]
script:
- echo "Testing..."
deploy_production:
stage: deploy
needs: [test_job]
script:
- echo "Deploying to production..."
when: manual # Только после успешного теста, и тогда вручную
variables:
TARGET_ENVIRONMENT: "production" # Пример: передача переменных для ручной джобы
Здесь джоба deploy_production станет доступна для ручного запуска только после успешного завершения джобы test_job.
Дополнительно:
variables: Ручные джобы могут использовать переменные, определенные как в файле.gitlab-ci.yml, так и в настройках проекта/группы.rules: Более сложные сценарии запуска могут использовать ключевое словоrulesвместе сwhen: manualдля определения условий, при которых ручная джоба становится доступной или обязательной.- API: Ручные джобы также могут быть запущены через GitLab CI/CD API.
Таким образом, when: manual - это основной механизм для реализации ручного запуска джоб в GitLab.