Skip to content

Latest commit

 

History

History
25 lines (20 loc) · 1.82 KB

File metadata and controls

25 lines (20 loc) · 1.82 KB

08 — CI/CD: линтеры на каждый push в master

Тема: минимальный CI/CD (см. ../../theory/software-engineering.md → «Минимальный CI/CD»).

Задача: залить апишку из 06_k8s/ в отдельный репозиторий на GitHub и приделать GitHub Actions, который на каждый push в master прогоняет линтеры из задачи 07_linters.md (ruff + vulture + mypy). Красный workflow = код не проходит.

Шаги

  • Создай на GitHub отдельный репозиторий с апишкой (app.py, Dockerfile, pyproject.toml с конфигом линтеров), запушь в master.
  • Заведи .github/workflows/lint.yml.
  • Запушь, открой вкладку Actions — убедись, что workflow стартует на push и падает, если линтеры находят проблемы.
  • Проверь оба исхода: сделай коммит с намеренной ошибкой (лишний импорт) → workflow красный; почини → зелёный.

Вопросы на подумать

  • CI != CD: где здесь заканчивается CI и с чего начался бы CD (build+push образа, деплой в тот самый minikube из задачи 06)?
  • Почему линтеры ставят в pipeline раньше тестов? (fail fast, дёшево)
  • Зачем гонять на master, а не только на PR — и что даёт связка «на PR + на master»?
  • Как сделать шаг блокирующим мёрж (branch protection / required checks)?