Заметка: CI CD CT система проекта - OwlSoul/YandexTransportProxy GitHub Wiki
Вот что происходит при обычном коммите:
Jenkins запускает очередной билд проекта на старом ноутбуке.
С GitHub вытягивается последняя версия.
Собирается тестовая версия Docker-контейнера (owlsoul/ytproxy:testing). Без кэша, чтобы наверняка.
Внутри тестового контейнера прогоняются юнит-тесты (pytest), результат сохраняется в формате junit.xml и вытаскиваются из контейнера.
Собирается "dev" версия Docker-контейнера (owlsoul/ytproxy:dev). Опять без кэша, чтобы очень наверняка.
"dev" версия образа загружается на DockerHub (owlsoul).
Запускаются вспомогательные скрипты:
Оценка качества кода линтером (pylint)
Размер Docker-изображения, в МБ.
Что происходит при релизе:
Jenkins запускает очередной билд проекта на старом ноутбуке.
С GitHub вытягивается последняя версия.
Версия внутри файла transport_proxy автоматически меняется на ту, которая указана в релизе.
Пользователь OwlAutomaton делает автоматический коммит в мастер на GitHub, из изменений - только новая версия.
OwlAutomaton ставить коммит-сообщение "Release: номер версии"
Это вызывает Build-процесс dev-версии ЕЩЕ РАЗ.
В принципе это легко убирается (просто не запускать Build-процесс если коммит был от OwlAutomaton),
но по сути при релизе тесты прогоняются дважды. Чтобы наверняка.
Собирается тестовая версия Docker-контейнера (owlsoul/ytproxy:testing). Без кэша, чтобы наверняка.
Внутри тестового контейнера прогоняются юнит-тесты (pytest), результат сохраняется в формате junit.xml и вытаскиваются из контейнера.
Собирается "dev" версия Docker-контейнера (owlsoul/ytproxy:dev). Опять без кэша, чтобы очень наверняка.
"dev" версия помечается тэгами "latest" и номером текущей версии (два дополнительных образа).
"dev", "latest" и "номерная" версии образов загружается на DockerHub (owlsoul).
Запускаются вспомогательные скрипты:
Оценка качества кода линтером (pylint)
Размер Docker-изображения, в МБ.
По окончанию билд-процесса:
Jenkins публикует результаты Юнит-Тестов
Jenkins строит графики по данным вспомогательных скриптов
Если все прошло успешно, запускается dev-билд проекта YandexTransportWebdriverAPI.