11

Git хук для запуска тестов

Есть у меня такой pre-push хук - автоматом прогоняет тесты локально, через maven. Подключается по необходимости через отдельные git конфиги для проектов.

Git хук для запуска тестов IT, Командная оболочка bash, Java, Программирование

Стащил его, судя по всему, отсюда: https://gist.github.com/arnobroekhof/9454645. Потом допиливал немного – чтобы он с многомодульными проектами работал корректно. Может, ещё что-то по мелочи причёсывал.

И он отлично работает (разве что можно через sed попробовать результаты по всем модулям агрегировать).

Но вот проблема – на текущем проекте везде gradle, а под него я что-то не могу найти похожего простого решения

Есть ли оно?

Вы смотрите срез комментариев. Показать все
0
DELETED
Автор поста оценил этот комментарий

А не проще на GitHub Actions гонять тесты при слиянии в мастер-ветку?

Ну или там, где ваш гит хостится

раскрыть ветку (6)
2
Автор поста оценил этот комментарий

А как ты сравниваешь вообще локальный прогон до пуша и удалённый после пуша?

>GitHub Actions
>там, где ваш гит хостится
Ну т.е. ты не знаешь, где он хостится и что там доступно. Откуда возникает мысль, что там будет проще гонять?

раскрыть ветку (4)
0
DELETED
Автор поста оценил этот комментарий

Очень просто. Локально (перед пушем) я пускаю тесты только той области проекта, которую затрагиваю своим коммитом. Это быстро.


А в раннерах запускаются все тесты после каждого пуша в ветку. Обычно после пуша идет перерыв в виде чая/кофе. По возвращению тесты прогнаны, и если есть красные - разбираемся локально. Но это редкая ситуация.


Затем предфинальные тесты в раннерах после слияния с мастером. И финальная - при деплое на продакт. Есть красные - деплой провален. Всё зеленое - деплой успешен.


Зы: очень сильно подозреваю, что если свой локальный гит - то это gitlab. У него все есть в коробке и для тестов и вообще для полноценного CI/CD.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

>я пускаю тесты только той области проекта, которую затрагиваю своим коммитом
Не уверен, что это так просто сделать через maven. Если есть готовое решение - прошу поделиться.
Gradle, насколько я успел про него прочитать, примерно так и работает из коробки.

Ручной запуск - не интересно, спасибо.


Перед пушем я автоматом пускаю тесты и, в случае проблем, просто сразу вношу правки, причесываю ветку ребейсом, пушу снова. При этом:

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

- Коллегам, подписанным на обновления репо, не придут уведомления об изменениях "запушено/сборка пошла/сборка сдохла на тестах" - пока там не окажется ветка, для которой тесты 99% проходят, т.к. были прогнаны в pre-push фазе.

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

Это экономит и моё время, и окружающих.


>У него все есть в коробке и для тестов и вообще для полноценного CI/CD
Если ставить его докером - придется пошаманить немного, чтобы раннеры прикрутить. Т.е. это не будет прямо "из коробки".

Но у меня локально - только голый гит. И в нём из коробки есть хуки.

раскрыть ветку (2)
0
DELETED
Автор поста оценил этот комментарий

Maven, gradle... Тьху блин, у вас же java.


Прошу прощения. Никогда рядом даже не проходил, у вас наверняка свои заморочки, нежели у нас, питонистов/перловиков.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В перле, насколько я помню (а я лет 7 его не трогал) - не было какого-то зоопарка в этом вопросе. Модуль Test, сборка мейкфайлом.

1
Автор поста оценил этот комментарий
Слишком мало велосипедов из костылей. Ну и за поддержку такого решения много не возьмёшь)
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку