GitLab CI запускает только задания и изменения - PullRequest
1 голос
/ 23 марта 2020

Я хочу запустить задание только для merge_requests ссылок и при изменениях для указанных файлов, в соответствии с официальным делом c я создаю это задание в .gitlab-ci.yml:

merge-request-test:
  <<: *some_anchor
  only:
    refs:
      - merge_requests
    changes:
      - "*.py"
      - "**/*.py"
      - postman/some-file.json

Но эта работа начинается, даже если я изменяю любой другой файл.

Я понимаю, что GitLab CI применяет правило OR для refs и changes разделов:

В приведенном ниже примере тестовое задание не будет создано, если любой из следующих условий:

Конвейер работает для мастера. В файле README.md есть изменения в каталоге root репо.

test:   
    script: npm run test
    except:
      refs:
        - master
      changes:
        - "README.md"  

Я хочу запустить это задание только для MR и при изменении указанных файлов. Как я могу добиться такого поведения?

Если удалить раздел refs, он работает только при изменении файлов, но официальный do c не рекомендует делать это, потому что я хочу использовать его в конвейерах:

При использовании только: изменения с разрешением объединения запросов только в случае успешного выполнения конвейера могут привести к нежелательному поведению, если вы также не используете только: merge_requests.

1 Ответ

0 голосов
/ 26 марта 2020

Пока у меня есть это рабочее решение:

merge-request-deploy:
  <<: *deploy-app
  rules:
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
      changes:
      - "*.py"
      - "**/*.py"
      - postman/some-file.json
      when: always
  • if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"' - дает мне MR отруби c
  • changes - дает мне измененные файлы

Разделы правила работают с правилом AND.

...