Заметка: CI CD CT система проекта - OwlSoul/YandexTransportProxy GitHub Wiki

Вот что происходит при обычном коммите:

  1. Jenkins запускает очередной билд проекта на старом ноутбуке.
  2. С GitHub вытягивается последняя версия.
  3. Собирается тестовая версия Docker-контейнера (owlsoul/ytproxy:testing). Без кэша, чтобы наверняка.
  4. Внутри тестового контейнера прогоняются юнит-тесты (pytest), результат сохраняется в формате junit.xml и вытаскиваются из контейнера.
  5. Собирается "dev" версия Docker-контейнера (owlsoul/ytproxy:dev). Опять без кэша, чтобы очень наверняка.
  6. "dev" версия образа загружается на DockerHub (owlsoul).
  7. Запускаются вспомогательные скрипты:
    • Оценка качества кода линтером (pylint)
    • Размер Docker-изображения, в МБ.

Что происходит при релизе:

  1. Jenkins запускает очередной билд проекта на старом ноутбуке.
  2. С GitHub вытягивается последняя версия.
  3. Версия внутри файла transport_proxy автоматически меняется на ту, которая указана в релизе.
  4. Пользователь OwlAutomaton делает автоматический коммит в мастер на GitHub, из изменений - только новая версия. OwlAutomaton ставить коммит-сообщение "Release: номер версии" Это вызывает Build-процесс dev-версии ЕЩЕ РАЗ. В принципе это легко убирается (просто не запускать Build-процесс если коммит был от OwlAutomaton), но по сути при релизе тесты прогоняются дважды. Чтобы наверняка.
  5. Собирается тестовая версия Docker-контейнера (owlsoul/ytproxy:testing). Без кэша, чтобы наверняка.
  6. Внутри тестового контейнера прогоняются юнит-тесты (pytest), результат сохраняется в формате junit.xml и вытаскиваются из контейнера.
  7. Собирается "dev" версия Docker-контейнера (owlsoul/ytproxy:dev). Опять без кэша, чтобы очень наверняка.
  8. "dev" версия помечается тэгами "latest" и номером текущей версии (два дополнительных образа).
  9. "dev", "latest" и "номерная" версии образов загружается на DockerHub (owlsoul).
  10. Запускаются вспомогательные скрипты:
  • Оценка качества кода линтером (pylint)
  • Размер Docker-изображения, в МБ.

По окончанию билд-процесса:

  1. Jenkins публикует результаты Юнит-Тестов
  2. Jenkins строит графики по данным вспомогательных скриптов
  3. Если все прошло успешно, запускается dev-билд проекта YandexTransportWebdriverAPI.