Ні, це не з двох причин:
Швидкість
Коміти повинні бути швидкими. Наприклад, комісія, яка займає 500 мс., Занадто повільна і спонукає розробників до поміркованіших зобов'язань. Зважаючи на те, що на будь-який проект, більший за Hello World, у вас будуть десятки чи сотні тестів, для їх запуску знадобиться занадто багато часу під час попередньої фіксації.
Зрозуміло, для великих проектів все гірше, коли тисячі тестів працюють протягом декількох хвилин на розподіленій архітектурі або тижнів чи місяців на одній машині.
Найгірше - це те, що ви можете зробити, щоб зробити це швидше. Невеликі проекти Python, які мають, скажімо, сотню одиничних тестів, потребують принаймні секунди, щоб запустити на середньому сервері, але часто набагато довше. Для програми C # це буде в середньому чотири-п’ять секунд через час компіляції.
З цього моменту ви можете або заплатити додаткові 10 000 доларів за кращий сервер, що скоротить час, але не на багато, або запустити тести на декількох серверах, що лише сповільнить справи.
Обоє добре платять, коли у вас є тисячі тестів (а також функціональні, системні та інтеграційні тести), що дозволяють запустити їх за лічені хвилини замість тижнів, але це не допоможе вам для малих масштабних проектів.
Натомість ви можете:
Заохочуйте розробників запускати тести, тісно пов’язані з кодом, який вони змінили локально, перш ніж здійснити комісію. Вони, можливо, не можуть запустити тисячі одиничних тестів, але вони можуть виконати п'ять-десять з них.
Переконайтесь, що знайти відповідні тести та запустити їх насправді просто (та швидко). Наприклад, Visual Studio здатний виявити, на які тести можуть вплинути зміни, внесені після останнього запуску. Інші IDE / платформи / мови / рамки можуть мати подібну функціональність.
Тримайте зобов’язання якомога швидше. Застосування правил стилю нормально, тому що часто це єдине місце для цього, і тому, що такі перевірки часто бувають надзвичайно швидкими. Зробити статичний аналіз добре, як тільки він залишається швидким, що трапляється рідко. Запуск тестів на блоці не в порядку.
Запустіть одиничні тести на сервері безперервної інтеграції.
Переконайтеся, що розробники повідомляються автоматично, коли вони порушили збірку (або коли не вдалося виконати тести одиниць, що практично те саме, якщо ви розглядаєте компілятор як інструмент, який перевіряє деякі можливі помилки, які ви можете ввести у свій код).
Наприклад, перехід на веб-сторінку, щоб перевірити останні збірки, не є рішенням. Вони повинні бути повідомлені автоматично . Відображення спливаючого вікна або надсилання SMS - це два приклади того, як їх можна повідомити.
Переконайтеся, що розробники розуміють, що зламати збірку (або провалити регресійні тести) не так, і щойно це станеться, їх головним пріоритетом є виправлення. Не має значення, чи працюють вони над першочерговою особливістю, яку їхній начальник попросив відправити на завтра: вони не виконали збірку, вони повинні її виправити.
Безпека
Сервер, на якому розміщено сховище, не повинен запускати спеціальний код, наприклад, тести одиниць, особливо з міркувань безпеки. Ці причини були вже пояснені у CI runner на тому ж сервері GitLab?
Якщо, з іншого боку, ваша ідея - запустити процес на сервері збирання з гака, який попередньо здійснює, то це сповільнить ще більше зобов'язань.