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

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)