2016-12-10 13 views
0

Я настраивал среду gitlab. После каждого нажатия 1 час работы выполняется 5 тестовых случаев. Но если любой из тестовых случаев падает, другие тестовые тесты пропускаются. Я хочу запустить все случаи. Потому что они независимы друг от друга.Все тестовые данные должны запускаться в gitlab вместо 1-го отказались

gitlab-ci.yml

stages: 
    - build 
    - unit_test_1 
    - unit_test_2 
    - unit_test_3 

job1: 
    stage: build 
    script: 
     - bash build.sh 

job2: 
    stage: unit_test_1 
    script: 
     - bash ./unit_test_1.sh 

job3: 
    stage: unit_test_2 
    script: 
     - bash ./unit_test_2.sh 

job4: 
    stage: unit_test_3 
    script: 
     - bash ./unit_test_3.sh 

Если uint_test_1.sh не удается. Другие тесты пропущены.

ответ

0

Вы можете попробовать так:

gitlab-ci.yml

stages: 
    - build 
    - test 

job1: 
    stage: build 
    script: 
     - bash build.sh 

job2: 
    stage: test 
    script: 
     - bash ./unit_test_1.sh 

job3: 
    stage: test 
    script: 
     - bash ./unit_test_2.sh 

job4: 
    stage: test 
    script: 
     - bash ./unit_test_3.sh 

документация говорят:

Упорядочение элементов в стадии определяет порядок сборки выполнение:

Собрания одной и той же стадии выполняются параллельно. Сборка следующего этапа запускается после успешного завершения заданий с предыдущего этапа.

https://docs.gitlab.com/ce/ci/yaml/README.html#stages

работать параллельно вы должны поставить тот же сценическое имя https://docs.gitlab.com/ce/ci/pipelines.html#pipelines

+0

Да, я пробовал это. Но он выполнит все задания job2, job3 и job4. Я не хочу выполнять параллельно. Он создаст хруст ресурсов. Я хочу выполнить весь скрипт. Но если первый не увенчался успехом, он пропускает другие этапы. – 10305059

+0

В этом случае вам, вероятно, понадобится 'allow_failure'https: //docs.gitlab.com/ce/ci/yaml/README.html#allow_failure – pinage404

+0

(я не знаю, как отредактировать комментарий), если вы хотите, чтобы один этап вызывал 'test' и запускать все задания тестов (последовательно: не в parrallel), даже если некоторые из них не работают, вам нужно будет добавить' dependencies' и 'allow_failure' в решение, которое я предлагаю вам https://docs.gitlab.com/ce/ ci/yaml/README.html # dependencies docs.gitlab.com/ce/ci/yaml/README.html#allow_fa ilure – pinage404

2

Вы можете использовать when свойство, чтобы сделать ваши задания выполняются каждый раз, независимо от состояния рабочих мест с предшествующие этапы сборки.

stages: 
    - build 
    - test 

job1: 
    stage: build 
    when: always 
    script: 
     - bash build.sh 

job2: 
    stage: test 
    when: always 
    script: 
     - bash ./unit_test_1.sh 

job3: 
    stage: test 
    when: always 
    script: 
     - bash ./unit_test_2.sh 

job4: 
    stage: test 
    when: always 
    script: 
     - bash ./unit_test_3.sh 

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

Конфигурирование globally ограничит все ваши бегуны только одновременным запуском 1 работы между всеми бегунами.

Конфигурирование этого per runner ограничит этот бегун, чтобы выполнять только одно задание одновременно на токен сборки.

+0

Спасибо. Меня устраивает. – 10305059