Gitlab-ci - состояние конвейера в обзоре "выполнено" - PullRequest
0 голосов
/ 28 мая 2020

Мой .gitlab-ci.yml файл выглядит следующим образом:

always_on:
    before_script:
        - echo 'before_script'
    script: echo 'script done'

always_fail:
    before_script:
        - echo 'before_script'
    script: fail_now

backend_only_mr:
    only:
        refs:
            - merge_requests
            - master
        changes:
            - scripts/**/*
    before_script:
        - echo 'before_script'
    script: echo 'script done'

Как видите, есть задание always_fail, которое всегда терпит неудачу. Если у меня нет изменений в каталоге scripts, это работает нормально, и обзор Merge-request показывает, что конвейер не работает:

Overview - Normal case

Когда я сделал изменение в каталоге scripts, задание завершается неудачно, как и ожидалось, но обзор показывает, что задание выполнено, потому что backend_only_mr выполнено успешно:

Overview - Change in scripts

Задания выглядят следующим образом:

Job - Merge request Job - Always running

backend_only_mr помечается как detached, если это помогает.

1 Ответ

1 голос
/ 28 мая 2020

Это ожидаемое поведение в настоящее время, поскольку два конвейера выполняются для запроса фиксации и слияния отдельно. Затем конвейер мерж-реквеста проходит «после» сбоя фиксации, и GitLab видит его как пройденное.

Есть несколько вариантов, чтобы справиться с этим: * для каждого задания, которое вы хотите посчитать с «можем ли мы объединить это?»?

Новый глобальный workflow параметр позволяет вам сказать: «Я хочу, чтобы все мои задания выполнялись на объединении. конвейер запросов ". Существует ряд вопросов, касающихся того, как консолидированные конвейеры должны работать в дальнейшем. Хотелось бы получить ваши отзывы по этому поводу.

Вы также можете узнать больше о том, как мы решаем эту проблему с помощью rules: vs. only/except: здесь: https://docs.gitlab.com/ee/ci/yaml/#key -details-when -использование-правила .

...