Jenkins+Java+Ant+Selenium+Git Запуск тестов после комита

Здравствуйте!

Jenkins установлен локально. Нужно, чтобы Jenkins опрашивал репозиторий, в случае нового коммита в ветку “Master”, необходимо чтобы на локальной машине запускались тесты, которые на ней находятся

Настройки:



В результате происходит копирование содержимого репозитория в папку с тестами, при этом все содержимое папки с тестами удаляется (уже приходилось восстанавливать код тестов). И соответственно потом не находит тесты Jenkins

Started by user Admin
Building in workspace /Users/Krawchuk/Documents/AutoTests_bosco.ru_mobile/zAzimut
Cloning the remote Git repository
Cloning repository https://github.com/SheffBRC/test.git_
_ > git init /Users/Krawchuk/Documents/AutoTests_bosco.ru_mobile/zAzimut # timeout=10

Fetching upstream changes from https://github.com/SheffBRC/test.git_
_ > git --version # timeout=10

_ > git fetch --tags --progress GitHub - SheffBRC/test +refs/heads/:refs/remotes/origin/_
_ > git config remote.origin.url GitHub - SheffBRC/test # timeout=10_
_ > git config --add remote.origin.fetch +refs/heads/:refs/remotes/origin/ # timeout=10_
_ > git config remote.origin.url GitHub - SheffBRC/test # timeout=10_
Fetching upstream changes from https://github.com/SheffBRC/test.git_
_ > git fetch --tags --progress GitHub - SheffBRC/test +refs/heads/:refs/remotes/origin/

_ > git rev-parse refs/remotes/origin/master^{commit} # timeout=10_
_ > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10_
Checking out Revision b4bbffa2847ee876672930db9669d68197553655 (refs/remotes/origin/master)
_ > git config core.sparsecheckout # timeout=10_
_ > git checkout -f b4bbffa2847ee876672930db9669d68197553655_
Commit message: “Update README.md”
_ > git rev-list b4bbffa2847ee876672930db9669d68197553655 # timeout=10_
ERROR: Unable to find build script at /Users/Krawchuk/Documents/AutoTests_bosco.ru_mobile/zAzimut/build.xml
Recording test results
ERROR: Step ‘Publish JUnit test result report’ failed: No test report files were found. Configuration error?
Finished: FAILURE

Как сделать что бы тесты просто запускались после коммита и ничего не копировалось в их папку с гита?..

1 лайк

У меня была похожая проблема. Я решил ее следующим образом: 1) имеет смысл не загружать в репозиторий результаты выполнения тестов - можно добавить в .gitignore /test-output/ 2) чтобы видеть репорты по тестам в результатах сборки дженкинсом - в шаге Publish JUnit test result report добавил путь на отчеты target/surefire-reports/*.xml. 3) чтобы не возникало новой ошибки, что репорты уже есть имеет смысл добавит шаг, чтобы чистил воркспейс в начале выполнения ( у меня мавен, я использую package, уверен, что-то похожее можно найти для ant) в build или delete workspace в пост-билд

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

возможно, я не понял. “Мне не нужно ничего передавать на гит” - я думал, что проблема в том, что при запуске тестов создавались репорты, которые не игнорились гитом при коммите и поэтому передавались в репозиторий и потом оттуда загружались, каждый раз, когда вы загружали src с гита и билдили приложение для теста. Решением такой проблемы было бы не загружать тест репорты на гит(не важно вами лично или кем-то другим). Если проблема в том, что папку с тестами затирают файлы из репозитория - то, возможно, глупый вопрос - почему не положить их в другую папку и вызывать в командной строке запуск тестов отдельно в билде шагом Execute shell или Execute Windows batch file?

В таком случае пропадает возможность работы с отчетами в JUnit :worried:

может это “костыль”, но я бы поставил на локальную машину мавен и запускал бы тесты мавеном, при этом можно использовать плагин maven-surefire-plugin, который будет генерить репорты в папке <папка с тестами>/target/surefire-reports/*.xml на эту же папку даете ссылку на вашем локальном Дженкинсе и должно все работать. Другой вариант - вероятно в командной строке при запуске тестов можно указать куда генерить отчеты, но это надо гуглить

или речь идет о отчетах в JUnit которые генерируются не на основе ваших локальных тестов, а на основе юнит тестов, которые хранятся вместе с кодом приложения и загружаются из гит репозитория?

Нет, отчеты по локальным тестам. Спасибо! Буду думать

Вопрос решился тем что нужно было добавить отдельный проект для “слушания” гита, который в свою очередь в “Post build action” запускал бы проект с тестами

1 лайк