После долгих поисков https://docs.gitlab.com/ee/ci/yaml/, вот решение, которое я нашел:
1.Генерировать покрытие кода при выполнении тестов
. Этот конвейер будет хранить процент покрытия под coverage/.current
между заданиями с использованием артефактов
"Ember Unit Tests":
artifacts:
paths:
- coverage/.current
script:
- COVERAGE=true yarn test --filter=Unit
after_script:
- grep -o <regex> coverage.json >> coverage/.current
2.Сравните покрытие кода с сохраненным «максимальным» покрытием (по умолчанию 0)
Если покрытие уменьшилось, просто верните ненулевой код выхода (Спасибо, Люкс!)
"Increase Coverage":
before_script:
- MAX=`if [ -f coverage/.max ] ; then cat coverage/.max ; else echo 00.00 ; fi`
- CURRENT=`cat coverage/.current`
script: if [[ $CURRENT < $MAX ]] ; then exit 1 ; fi
3.Обновите покрытие "max" при объединении запросов извлечения
"Update Max Coverage":
except:
- pushes
before_script:
- NEW_MAX=`cat coverage/.current`
script: echo $NEW_MAX > coverage/.max
Запустите эти три конвейера подряд, используя stage , и не забудьте кэшировать покрытие "max" между конвейерами:
cache:
paths:
- coverage/.max