Как определить правила в «этапах» gitlab, чтобы не нужно было определять отдельные правила для заданий

Предположим, есть 4 задания, которые определяются поэтапно.

этапы:

  • строить
  • контрольная работа
  • развертывать
  • загрузить

Теперь тестирование, развертывание и загрузка запускаются только при ручном запуске конвейера. Для этого мы можем определить правило для отдельных заданий, но оно будет повторяться (не хочу использовать это).

Можно ли определить правило для « этапов », чтобы одно задание запускалось при автоматическом запуске, а остальные 3 задания выполнялись при ручном запуске конвейера.

2 ответа

Боюсь, в данный момент невозможно применить правило ко всей стадии.

Возможный обходной путь — разместить все задания этапа в отдельном файле шаблона. Это включаемое действие может иметь правило [1].

пример: шаблон.yml

      job1:
  stage: test
  script:
    - run_tests

job2:
  stage: deploy
  script:
    - do_deployment

job3:
  stage: upload
  script:
    - do_the_uploading

.gitlab-ci.yml:

      include:
  - local: 'template.yml'
    rule:
      - your_rule_here

stages:
  - build
  - test
  - deploy
  - upload

build_job:
  stage: build
  script:
    - gcc sourcecode.cpp

[1] https://docs.gitlab.com/ee/ci/yaml/includes.html

Я знаю, что это поздний ответ, но я нашел решение, столкнувшись с этим сценарием.

Используйте рабочий процесс для управления поведением конвейера (представлено в GitLab 12.5) https://docs.gitlab.com/ee/ci/yaml/index.html#workflow

      workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
Другие вопросы по тегам