Gitlab CI И оператор в правилах

#gitlab #continuous-integration #logic #gitlab-ci

#gitlab #непрерывная интеграция #Логические #gitlab-ci

Вопрос:

В правилах Gitlab CI Gitlab проверяет, присутствует ли одно из правил, затем он выбирает, добавлять задание или нет. Я хочу проверить все условия, и если все в порядке, он может добавить задание, в противном случае он не должен добавлять его в конвейер:

   rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" amp;amp; $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
    - changes:
      - filder1/*.xml
 

В этом примере я пытаюсь указать gitlab добавлять задание только в том случае, если некоторые XML-файлы были изменены, и есть запрос на слияние для объединения с основной веткой.

Ответ №1:

Вы должны просто объединить оба условия в одно сопоставление. Т.Е. Удалить лишнюю черту перед changes :

   rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" amp;amp; $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
      changes:
        - filder1/*.xml
 

Но, пожалуйста, также примите во внимание, что действие по умолчанию on_success равно, поэтому вам следует добавить другое сопоставление с never , чтобы предотвратить добавление задания:

   rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" amp;amp; $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
      changes:
        - filder1/*.xml
      when: on_success
    - when: never