2016-05-18 4 views
4

Существует проект, который имеет множество тестов, и их запуск занимает около 20 минут. К сожалению, невозможно провести параллель с ними внутри одного gitlab runner. Интересно, есть ли какие-нибудь хорошие практики для запуска нескольких бегунов gitlab с той же средой, но с различными тестовыми костюмами?Возможно ли использовать несколько gitlab-бегунов для одной сборки CI?

+0

Когда вы говорите «один сборник CI», вы имеете в виду, что вы можете разбить тестовый костюм на несколько частей или нет? – tmt

+0

@cascaval да, я имею в виду, что когда я нажимаю изменения в gitlab, он должен начать строить тесты в параллельных бегунах. Фактически, я нашел способ сделать это через рабочие места и этапы (http://docs.gitlab.com/ce/ci/yaml/README.html#jobs). Но я думаю, что есть более элегантный способ. – t1maccapp

+0

Вот что я собирался предложить вам, когда я начал писать свой ответ, а затем остановился, потому что не был уверен, не ожидаете ли вы, что одна работа будет выполняться несколькими бегунами с каким-то магическим отличием от того, что каждый из них Предполагалось завершить. Теперь я добавил свой ответ, который также указывает на некоторую конфигурацию, чтобы он работал так, как вы ожидали. – tmt

ответ

11

Если вы можете разбить тестовый костюм на несколько частей, вы можете создать равное количество заданий на одном и том же этапе (test). Работа на той же стадии выполняется параллельно, но задания на следующем этапе начнутся после завершения работ на предыдущем этапе. Они будут работать параллельно, даже если у вас есть только один бегун. Давайте предположим, что этот тестовый пример:

stages: 
    - test 

testsA: 
    stage: test 
    script: 
    - sleep 60 
    - echo 'Test set A done' 

testsB: 
    stage: test 
    script: 
    - sleep 30 
    - echo 'Test set B done' 

Вы увидите, что они работают в то же время и тест А завершит после испытания B.

Отрегулируйте направляющие settings (/и т.д./gitlab- бегун/config.toml) проверка на 2-х вариантов:

  • concurrent = общее количество заданий, выполняемых параллельно во всех бегунов
  • limit (набор для каждого бегуна) = число рабочих мест работать параллельно с одним конкретным бегуна

Примечание: я не проверил, если проект с несколькими бегунов, каждый из которых имеет limit значение 1, будет запускайте эти задания с помощью разных участников. Однако я полагаю, что это работает.

+3

Спасибо, что указали опцию 'concurrent', это был сбой в моей конфигурации. – CharlyDelta

+0

Вы можете найти файл в' ~/.gitlab-runner/config.toml' – Caipivara