Git и Gitea
Сам git (add/commit/push) ты уже знаешь
Здесь - про нашу конкретную Gitea (самохостный git-хостинг, аналог GitHub/GitLab) и про то, как
устроен автогрейдинг: весь код сдаётся через push в Gitea, дальше CI сам всё проверяет и ставит балл
Теория
Вход в Gitea и доступ для git
- Вход в веб-UI - кнопкой «Sign in with Keycloak» (единый вход, SSO) под своим ником
Форму логин/пароль не используем - только SSO - Git по HTTPS + токен (PAT) - SSH на платформе выключен: клонируем и пушим по HTTPS, а вместо пароля используем Personal Access Token
Как получить токен (PAT): в Gitea → Settings → Applications → Generate New Token → задать
имя, выбрать права (scope) на репозитории → Generate
Токен показывается один раз - сразу скопируй
PAT даёт доступ к твоим репозиториям
Не коммить его в код, не выкладывай
Потерял - сгенерируй новый, старый отзови
Клонирование
# при запросе пароля - вставь PAT, не аккаунт-пароль
git clone https://gitea.simple-env.site/<курс>/<репо>.git
cd <репо>
Чтобы не вводить токен при каждом push/pull - включи credential helper (сохранит токен):
git config --global credential.helper store # Linux
git config --global credential.helper osxkeychain # macOS
Работа с автогрейдингом
На каждый push в Gitea автоматически запускается пайплайн (Gitea Actions) - руками запускать
ничего не нужно
Обычно это ruff check + ruff format --check + mypy + скрытые тесты - конкретный набор смотри
в описании практики к теме
Результат - в самом репозитории, вкладка Actions:
- 🟡 - выполняется
- ✅ - прошёл, балл засчитан
- ❌ - упал, балла не будет
Нажми на запуск → выбери шаг → читай лог - там видно, что именно не прошло: какой тест или какое
правило ruff/mypy
Типовые ошибки
| Симптом | Причина | Что делать |
|---|---|---|
authentication failed при push | неверный/просроченный PAT | сгенерировать новый токен, обновить credential helper |
| В Actions после push пусто | push не дошёл, или ушёл не в тот репозиторий/ветку | git log, git remote -v - проверить, что реально ушло на сервер |
| В Actions ❌ | не проходит ruff/mypy/тест | открыть лог шага - там видно, что именно упало |
Примеры
Первый заход целиком (склонировать → изменить → сдать):
git clone https://gitea.simple-env.site/<курс>/picture-transformer.git
cd picture-transformer
# ...правишь код, настраиваешь ruff/mypy (см. «Среда и инструменты»)...
git add .
git commit -m "Настроил окружение и линтеры"
git push
После push - открой вкладку Actions в репозитории и дождись ✅ (или разбери ❌ по логу)
Проверь себя
1. Почему клонируем по HTTPS, а не по SSH?
На платформе SSH выключен - доступ к git только по HTTPS, с токеном (PAT) вместо пароля
2. Куда деть PAT, чтобы не вводить каждый раз?
Включить credential helper (git config --global credential.helper store / osxkeychain) - он
сохранит токен
3. Нужно ли самому что-то запускать, чтобы код проверился на балл?
Нет - пайплайн (Gitea Actions) стартует автоматически на каждый push
4. В Actions напротив твоего запуска - ❌. Что это значит и что делать?
Один из шагов (ruff/mypy/тест) не прошёл, балл не засчитан
Открой лог этого шага - там видно, что именно упало
5. Ты запушил код, но в Actions пусто. Что скорее всего произошло?
Push не дошёл до сервера, или ушёл не в тот репозиторий/ветку
Проверь git log и git remote -v
Итог / чек-лист
- Вход в Gitea - только через SSO; git - по HTTPS + PAT (SSH выключен)
- Push запускает автогрейдер (Gitea Actions) автоматически - руками ничего не запускать
- Результат - во вкладке Actions репозитория: 🟡 идёт, ✅ балл засчитан, ❌ упал - смотри лог шага
- Токен - как пароль: не коммитить, беречь, при утечке отозвать
Дополнительно
- Git-тренажёры (за прохождение - бонус, см. «Введение»)
- Pro Git (книга, рус.)
- Документация Gitea - в веб-интерфейсе (Help)