|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
rigorMortisв общем, удалось сделать чтобы через VS запускался проект с автотестами в TeamCity и если они не пройдены то коммит в svn не происходит. Но не тут то было успокаиваться. Руководство хочет чтобы автотесты запускало именно событие коммит в svn и если тесты не проходят то коммит отменяется. В принципе, такое можно реализовать создав в svn хук который перехватит событие коммита и запустит автотесты в TeamCity из коммандной строки. Только запустить то он запустит, но коммит после прогона автотестов при таком способе запуска TeamCity вроде не сделает? Кто что знает?Ну явно надо скрипт писать, что запустит тесты, посмотрит на результат их выполнения и если всё ок, то сделает коммит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2014, 13:32 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
skyANA, не похоже что в svn hook можно отменить коммит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2014, 14:01 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
rigorMortisskyANA, не похоже что в svn hook можно отменить коммит.Зачем отменять коммит? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2014, 16:52 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
skyANA, хотим чтобы коммит отменялся если автотесты не прошли. В общем, сделать можно. Надо в svn в каком-нибудь hook, например Start commit hook написать скрипт, который проверит результаты тестов и при отрицательном результате сделать exit 1. Тогда коммит не будет зафиксирован. Соответственно, если автотесты ок то возвращаем exit 0, тогда коммит завершается успешно. Таким образом, можно засатвить любой автотест писать результат в какой-нибудь файл, из которого скритп hook'а будет считывать его. У меня так: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Autotest.result содержит в себе пару result=значение. Проверяем, если не 0 то exit 1. Сделано в цикле так как предполагается в будущем наличие множества пар. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2014, 17:58 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
YK13может это подойдет? А на вскидку, через командную строку запустить там проект с автотестами можно? Из bat-файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 00:23 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
rigorMortisskyANA, хотим чтобы коммит отменялся если автотесты не прошли. Помилуйте, бояре. Коммит- синхронная операция. Svn и так, прямо скажем, не самая быстрая штука (особенно если с https скрещена). А тут он будет ждать, пока тесты пойдут. А если их много и они 5 минут выполняются? Проблема игнорирования тестов перед коммитом в trunk - административная. И решать её надо соответственно - каждому виновному штраф- от "угостить всех пивом после работы", до "минус 10% месячной премии за каждый случай". А для контроля- автосборка по коммиту и при падении тестов- письмо всей команде (чтобы знали героев). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 09:12 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
Alexey TominrigorMortisskyANA, хотим чтобы коммит отменялся если автотесты не прошли. Помилуйте, бояре. Коммит- синхронная операция. Svn и так, прямо скажем, не самая быстрая штука (особенно если с https скрещена). А тут он будет ждать, пока тесты пойдут. А если их много и они 5 минут выполняются? Проблема игнорирования тестов перед коммитом в trunk - административная. И решать её надо соответственно - каждому виновному штраф- от "угостить всех пивом после работы", до "минус 10% месячной премии за каждый случай". А для контроля- автосборка по коммиту и при падении тестов- письмо всей команде (чтобы знали героев). Ну вот за офтоп с вас "угостить всех пивом после работы". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 09:34 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
rigorMortisНу вот за офтоп с вас "угостить всех пивом после работы". Недавно мы потеряли недели 3 работы разработчика, кучу его нервов и время на выполнение задачи из-за того, что пытались решить программными средствами административную проблему. Наконец убедили PM'а, что не надо так делать- и вот оно, всё хорошо. 3 недели- фиг с ними, ему списывать, а вот нервы... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 11:24 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
Alexey Tomin, если убедишь моего руководителя, тогда с меня пиво. Я не сам себе мозги выкручиваю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 15:12 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
Ну, я сам справился. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 16:00 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
rigorMortisНу, я сам справился. Так это через что сделали? хук на коммит? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 16:49 |
|
Как создать юнит-тест чтобы без его прохождения проект не собирался.
|
|||
---|---|---|---|
#18+
buserrigorMortisНу, я сам справился. Так это через что сделали? хук на коммит? Справился в смысле убеждения начальства, оно согласилось на гибрид первого и второй варианов - коммитим, запускается проект с автотестами на TeamCity, если не проходят то релиз не собираем. Так же оставляем возможность вызывать проект TeamCity из VisualStudio - если автотесты не проходят то не коммитим и рассылаем уведомление о том что fail. Это легко сделать одними средствами TeamCity (TeamCity remote run плагин на VisualStudio). Вариант с хуком который вызывал бы проект на TeamCity не прокатывает. Если хук вызвал бы TeamCity то последний должен был бы собрать билд с последними изменениями в проекте и прогнать на нём автотесты. Но проект с изменениями существует на машине разработчика который осуществляет коммит. Тогда TeamCity должен загрузить себе это проект, собрать его прогнать автотесты и принять решение о коммите, а это есть второй вариант описанный выше и при таком варианте хук смысла не имеет. Если даже делать это через хук то скрипт должен содержать сопоставление пользователя-коммитера и его машины, запускать TeamCity remote run на машине этого пользователя-коммитера. Но мне что-то не нравится. Так в скрипте придётся всех разработчиков прописывать-выписывать и ещё при разных проектах как-то вычислять что для них запускать (это может быть не обязательно TeamCity и VisualStudion по условию задачи). Тем не менее, спасибо всем за помощь. Опыт был получен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2014, 22:55 |
|
|
start [/forum/topic.php?fid=20&msg=38824472&tid=1402164]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 138ms |
0 / 0 |