Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Монопольный режим запуска джоба в jenkins

jenkins
Теги: #<Tag:0x00007f7b69056248>

(Bolatbek) #1

Есть несколько тестов, которые надо запускать как бы монопольно.
То есть, чтобы в единицу времени был запущен только один конкретный тест, остальные чтобы висели в ожидании.
Можно такое сделать?


(Andrew Zakordonets) #2

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


(Dmitrii Demin) #3

Проясните пожалуйста - речь все же о job или test ?


(Bolatbek) #4

Речь о джобе, просто у меня 1 job == 1 test.
В Jenkins 6 сборщиков. Параллельно могу запускать до 6 джобов. Но… иногда надо, что конкретный джоб блокировал запуск остальных, пока сам не отработает.


(Dmitrii Demin) #5

1 тест - 1 job это конечно сильно. А с чем связано такое разделение?
Есть спец. плагин, Build Blocker Plugin если не ошибаюсь. В каждом job можно сконфигурировать - при каких активных job нельзя его запускать (встанет в waiting)


(Bolatbek) #6

А почему 1 job == 1 test - это плохо?
У меня функциональные тесты, поэтому это вполне нормально.


(Bolatbek) #7

За плагин - спасибо. Пошел пробовать.


(Dmitrii Demin) #8

Мне всегда казалось, что тесты должны быть минимальными. 1 тест - 1 проверка в идеале, а значит на крупном проекте наверняка их будут сотни. В свою очередь тесты можно объединять в сьюты, группы и т.д. Далее уже можно указать Jenkins’у - какую группу/сьют запустить.

P.S. Хотя если кейсы давно написаны, времени на их рефакторинг нет, то вполне возможно что каждый автотест тест по таким кейсам будет достаточно “жирным”


(Bolatbek) #9

Так и делается.
1 тест-кейс -> 1 автотест -> 1 job в Jenkins.
Дальше, если тесты легко параллелятся - то создается job, вызывающий остальные. Если нет, то в job`е запускается скрипт, запускающися тесты из набора (каталога).


(Dmitrii Demin) #10

Могу сказать за связку Java+TestNG на моих проектах - в job дженкинса через запятую просто указываю теги. Тесты имеющие эти теги в аннотации @Test (поле group) и будут запущены.
При каждом запуске джобы волен выбрать - какие тесты хочу запустить. Итог - всего 1 джоб


(Bolatbek) #11

А где указываются эти теги?
Получается один джоб с параметрами? И перед запуском надо смотреть, что именно запускаете?
Тесты внутри джоба запускаются параллельно или последовательно?


(Dmitrii Demin) #12

Использую Maven. Вот что в pom файле:

  1. раздел properties
<myconf.tags>All</myconf.tags>
<myconf.parallel>methods</myconf.parallel>
<myconf.threads>1</myconf.threads>
  1. раздел плагина surefire
<configuration>
   <parallel>${myconf.parallel}</parallel>
   <threadCount>${myconf.threads}</threadCount>
   <groups>${myconf.tags}</groups>
  1. В самом коде тесты помечаются грубо говоря так:
@Test(groups = {"All", "Smoke", "ClientSearch"})

Т.е. тест входит в общий набор, в набор смок-тестов, а ClientSearch - допустим его личная метка

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

Параллельность - как настроите джобу, а также зависит от всяких dependsOn значения в @Test аннотации и т.д.
Перед запуском конечно же надо выбрать параметры =)

P.S. Еще можно настроить регулярный запуск джоба с параметрами (отдельный плагин кажется). Например в 9 утра автоматически запускаются smoke тесты


(Bolatbek) #13

Неудобно же - перед запускать смотреть в параметры джоба и что-то там менять. Наверное, я не пробовал.
У меня тесты на питоне, мавен не юзается.
Да и руководству нашему приятно видеть кучку джобов ))).


(Dmitrii Demin) #14

На вкус и цвет =)


(Bolatbek) #15

Я просто не пробовал. Мне интересен ваш опыт.
Подумываю летом попробовать написать тесты на Java, на этом ЯП и вакансий поболее.


(Bolatbek) #16

Нашел еще один похожий плагин.
Но сайт не открывается
https://wiki.jenkins-ci.org/display/JENKINS/Locks+and+Latches+plugin


(Dmitrii Demin) #17

Дженкинсу плохо сегодня, тоже заметил… Ждем-с