Тема: минимальный 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)?