Перейти к содержимому
TelegramGitHub

Итоговая практика

Вы пришли в команду данных. Нужно завести репозиторий для отчётов и пройти весь путь изменения, как в настоящей команде.

Используйте только то, что было в курсе. Решайте сами, без AI. Решения — под заданиями.

Создайте репозиторий sales-reports на своём компьютере и на GitHub. В нём:

  • README.md с описанием проекта в одну строку;
  • .gitignore с .env, *.duckdb, .DS_Store;
  • models/revenue.sql.

Проверка: на GitHub видны три файла. В git log --oneline есть минимум три коммита, и у каждого понятное сообщение.

Решение
Окно терминала
mkdir sales-reports && cd sales-reports
git init
echo "# Sales reports" > README.md
git add README.md && git commit -m "Add README"
printf ".env\n*.duckdb\n.DS_Store\n" > .gitignore
git add .gitignore && git commit -m "Add .gitignore"
mkdir models
printf "select\n order_id,\n amount\nfrom orders\n" > models/revenue.sql
git add models && git commit -m "Add revenue model"
git remote add origin git@github.com:YOUR_NAME/sales-reports.git
git push -u origin main

Добавьте тест и .github/workflows/ci.yml из урока CI/CD. Сделайте это в ветке add-ci и через Pull Request.

Проверка: Pull Request с зелёной проверкой смёржен в main.

Включите защиту main: только через Pull Request и с зелёным CI.

Проверка: прямой git push origin main отклоняется.

В ветке add-refunds добавьте models/refunds.sql. Пишите каждый столбец на новой строке, иначе sqlfluff в CI упадёт с ошибкой LT09. Откройте Pull Request. Попросите коллегу сделать ревью. Учтите хотя бы одно замечание отдельным коммитом.

Проверка: в PR виден комментарий ревьюера и два коммита: основной и после замечания. Merge через Squash.

В новой ветке намеренно сломайте запрос так, чтобы тест упал. Отправьте ветку и откройте Pull Request.

Проверка: CI красный, merge заблокирован. Исправьте запрос, сделайте push. CI стал зелёным.

Допустим, main уже содержит плохой коммит. Отмените его безопасно.

Проверка: в main появился коммит Revert .... История не переписана.

Решение
Окно терминала
git switch -c revert-bad-change
git revert <hash плохого коммита>
git push -u origin revert-bad-change

Откройте Pull Request. Так откат тоже проходит ревью и CI.

Загрузите проект в GitLab. Добавьте .gitlab-ci.yml и откройте Merge Request.

Проверка: в Merge Request виден зелёный pipeline.

Попросите AI-агента добавить новую модель models/orders_by_status.sql в отдельной ветке. Проверьте git diff. Откройте Pull Request.

Проверка: вы нашли минимум одну вещь, которую поправили вручную. CI зелёный.

  • Попробуйте git rebase и git stash. Они нужны реже, но часто встречаются.
  • Освойте dbt и запустите dbt build в CI.
  • Изучите Docker. В CI часто запускают контейнеры.
  • Подробнее про платформы: Git и DevOps.