Назад к вопросам
Middle
192
questionbank

Как в 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.