gitlab-runner - запускайте задания против нескольких бегунов - PullRequest
0 голосов
/ 17 января 2020

В настоящее время я улучшаю наш CI, чтобы выполнять работу с несколькими бегунами с разными конфигурациями (например, с разными ОС, ...) , против всех целей (много).

В настоящее время у меня есть рабочее решение, но я должен копировать и вставлять с тегом каждое задание. Это шаблон ... Я почти уверен, что есть решение, но не могу его удержать.

Один пример

Некоторая информация о моем образце:

  1. У нас есть цепной тест (неразрушающий), который можно запустить на одном и том же задании
  2. У нас есть деструктивный тест, в котором мы настолько сильно меняем конфигурацию, что не можем связать другой тесты. Поэтому мы переустанавливаем нашу систему перед следующей работой
###########
# System tests.
###########
.system-tests-setup:
  stage: system-test
  image: docker.net:5000/our-builder:0.3
  script:
    - set-the-env-for-our-application

.system-tests-non-destructive:
  extends: .system-tests-setup
  script:
    - system_tests/non-destructive-tests.py --stack-ip ${LOCAL_IP} --stack-port 9090

.system-tests-destructive-check-1:
  extends: .system-tests-setup
  script:
    - system_tests/destructive_tests/check-1.py --address ${LOCAL_IP}

.system-tests-destructive-check-2:
  extends: .system-tests-setup
  script:
    - system_tests/destructive_tests/check-1.py --address ${LOCAL_IP}

.system_tests_sbc_poc_requirement:
  extends: .system-tests-setup
  script:
    - system_tests/destructive_tests/sbc_poc_requirements.py --address ${LOCAL_IP}

## Run on ubuntu 18.04.03 - docker 19.03.5
test:ubuntu-18.04.03-docker-19.03.5-non-destructive:
  extends:
    - .system-tests-non-destructive
  tags:
    - test:ubuntu-18.04.03-docker-19.03.5

test:ubuntu-18.04.03-docker-19.03.5-check-1:
  extends:
    - .system-tests-destructive-check-1
  tags:
    - test:ubuntu-18.04.03-docker-19.03.5

test:ubuntu-18.04.03-docker-19.03.5-check-2:
  extends:
    - .system-tests-destructive-check-2
  tags:
    - test:ubuntu-18.04.03-docker-19.03.5

## Run on ubuntu 18.04.03 - docker 18.09.9
test:ubuntu-18.04.03-docker-18.09.9-non-destructive:
  extends:
    - .system-tests-non-destructive
  tags:
    - test:ubuntu-18.04.03-docker-18.09.9

test:ubuntu-18.04.03-docker-18.09.9-check-1:
  extends:
    - .system-tests-destructive-check-1
  tags:
    - test:ubuntu-18.04.03-docker-18.09.9

test:ubuntu-18.04.03-docker-18.09.9-check-2:
  extends:
    - .system-tests-destructive-check-2
  tags:
    - test:ubuntu-18.04.03-docker-18.09.9

Спасибо

1 Ответ

1 голос
/ 20 января 2020

Если у вас много очень похожих заданий, которые можно запустить на одном и том же бегуне и / или образе docker, то вы можете использовать ключевое слово параллельный , а затем внешние сценарии для обработки небольших изменений. необходимо для различных заданий.

Затем вы можете использовать переменную CI_NODE_INDEX в качестве аргумента для вашего сценария тестирования:

.system-tests-non-destructive:
  extends: .system-tests-setup
  script:
    - system_tests/non-destructive-tests.py --ci_node_index $CI_NODE_INDEX

...

test:ubuntu-18.04.03-docker-19.03.5-non-destructive:
  extends:
    - .system-tests-non-destructive
  tags:
    - test:ubuntu-18.04.03-docker-19.03.5
  parallel: 10

Ваш файл .gitlab-ci.yml будет затем определять, какую платформу вы будете использовать. запустите ваши тесты, в то время как ваши внешние python сценарии будут содержать всю информацию о том, как выполняются тесты. Это может уменьшить объем кода, который необходимо дублировать, хотя это не идеальное решение.

Другим решением может быть просто создание файла .gitlab-ci.yml. Тогда будет очень легко добавлять, удалять и изменять его части любым удобным для вас способом.

...