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

Как заставить прогонять тесты в teamcity в зависимости от события.

team-city
Теги: #<Tag:0x00007f7b62e72ec8>

(You Rooock) #1

Привет всем!
Товарищи, есть вопрос:
Как запускать тесты в тимсити в зависимости от какого-то события? Если оно случилось, то прогнать тесты, а если не случилось, то не прогонять.
Допустим, есть тулзовина, которая генерит 1 или 0 в зависимости от результата. Если 1, то значит всё ок, если 0, то что-то пошло не так и надо запустить тесты, чтобы выяснить причину где мог произойти сбой.
Так вот, можно ли как-то заставить тимсити запускать билд, когда результат становится 0?
Спасибо)


(Eugene Tkachenko) #2

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


(You Rooock) #3

Спасибо, что откликнулись.
Если более подробно то :
Есть приложение, связанное с реальными деньгами. Бывает так, что платежные системы иногда дают сбой и нет возможности вовремя об этом узнать.
Было придумано написать тесты, которые могут точно сказать какая система отвалилась и при каких условиях.
Но запускать их регулярно нет возможности так как в тестах использованы реальные деньги.
Поэтому нужно запускать только тогда, когда есть в этом острая необходимость, чтобы локализовать ошибку.
Для этого было создано приложение, которое проверяет каждый час есть ли поступление денежных средств на счет. И пингует об этом всех.
Приложение не знает ничего ни про платежную систему, ни про место где не удалось её провести. Так вот по результатам этого пинга нужно либо прогнать тесты, либо ниче не делать.
Просто не уверен, что сам тимсити умеет такое. Скорее-всего прийдется какой-то хендер писать для этого.


(Eugene Tkachenko) #4

Делается это все очень просто:

Пишите мини тестик, который опрашивает например API вашего приложение, которое возвращает 1 или 0 и в сам тесте делаете ассерт, например, что если 1 = тест прошел.

Потом, создаете проект, для него билд конфигурацию, потом этой конфигурации ставите Тригер, что бы ваш тестик запускался допустим каждые 5-10 минут используя крон синтаксис: http://screenpresso.com/=9gd5b

Потом, идем в наши тесты, которые будут запускать только тогда, когда наш предыдущий билд конфигурейшен запасился(значит например ваше рабочее приложение имеет какой-то сбой и нужно запускать ваши тесты).

Делаем депенденси от предедущего билд-конфигурейшена: http://screenpresso.com/=8tnOc
Потом добавляем тригеры: http://screenpresso.com/=sIWVc

Собственно все, если нужно будет более детально, обращайтесь.


(You Rooock) #5

Cool. Спасибо)
Всё гениальное - просто! :wink:


(ex3me0) #6

У тимсити разве нет API?
У дженкинса есть линк, по которому можно запустить тот или иной джоб.
Т.е. все так же, как отписал tkachenko_eugen, только в своем “тесте платежной системе” - в случае фейла Вы делаете get/post запрос на АПИ, и запускаете джоб