docs: Gitea — основной репозиторий и трекер, SourceCraft — зеркало (ADR-010)
Refs #22 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# Gitea API — шпаргалка
|
||||
|
||||
Gitea — основной репозиторий и трекер: [`HSE/tgit`](https://gitea.24studbank.ru/HSE/tgit). SourceCraft — зеркало (ADR-010).
|
||||
|
||||
> **Кириллица в JSON:** не собирать тело в `curl -d '{...}'` руками — ломается кодировка и экранирование.
|
||||
> Тело собираем в Python (`json.dumps(..., ensure_ascii=False)`) в файл и отправляем `--data @file.json`.
|
||||
|
||||
```bash
|
||||
set -a; . ./.env; set +a # GITEA_URL, GITEA_TOKEN, GITEA_USER, GITEA_REPO
|
||||
G="$GITEA_URL/api/v1/repos/$GITEA_REPO"
|
||||
A="Authorization: token $GITEA_TOKEN"
|
||||
J="Content-Type: application/json; charset=utf-8"
|
||||
alias curl='curl --retry 4 --retry-all-errors --retry-delay 2'
|
||||
```
|
||||
|
||||
> Сервер иногда рвёт SSH (`Connection closed … port 2222`) и медленно отвечает на запись — повторять, перед повторным
|
||||
> POST проверять, не создалась ли сущность.
|
||||
|
||||
## Issues
|
||||
|
||||
```bash
|
||||
# мои открытые
|
||||
curl -s -H "$A" "$G/issues?state=open&type=issues&assigned_by=$GITEA_USER"
|
||||
|
||||
# создать: {"title","body","labels":[id…],"milestone":id,"assignees":["$GITEA_USER"]}
|
||||
curl -s -X POST -H "$A" -H "$J" "$G/issues" --data @issue.json
|
||||
|
||||
# обновить тело / закрыть
|
||||
curl -s -X PATCH -H "$A" -H "$J" "$G/issues/NN" --data @body.json # {"body": "..."}
|
||||
curl -s -X PATCH -H "$A" -H "$J" "$G/issues/NN" -d '{"state":"closed"}'
|
||||
|
||||
# комментарий
|
||||
curl -s -X POST -H "$A" -H "$J" "$G/issues/NN/comments" --data @comment.json # {"body": "..."}
|
||||
|
||||
# метки и вехи — по id
|
||||
curl -s -H "$A" "$G/labels"
|
||||
curl -s -H "$A" "$G/milestones?state=all"
|
||||
```
|
||||
|
||||
## Зависимости (только через API, не текстом в теле)
|
||||
|
||||
```bash
|
||||
# #NN зависит от #MM (MM блокирует NN)
|
||||
curl -s -X POST -H "$A" -H "$J" "$G/issues/NN/dependencies" -d "{\"owner\":\"${GITEA_REPO%%/*}\",\"repo\":\"${GITEA_REPO##*/}\",\"index\":MM}"
|
||||
curl -s -H "$A" "$G/issues/NN/dependencies"
|
||||
```
|
||||
|
||||
## Pull requests
|
||||
|
||||
```bash
|
||||
# PR в dev (не в main!); тело — с "Closes #NN"
|
||||
curl -s -X POST -H "$A" -H "$J" "$G/pulls" --data @pr.json # {"head":"feat/NN-slug","base":"dev","title":"…","body":"…"}
|
||||
|
||||
# ветка ещё есть? пусто → PR смержен, не пушить
|
||||
git ls-remote --heads origin <ветка>
|
||||
```
|
||||
|
||||
## Зеркало в SourceCraft
|
||||
|
||||
```bash
|
||||
curl -s -H "$A" "$G/push_mirrors" # статус: last_update, last_error
|
||||
curl -s -X POST -H "$A" "$G/push_mirrors-sync" # синхронизировать сейчас
|
||||
```
|
||||
|
||||
Зеркало — HTTPS (`git.sourcecraft.dev`) с токеном SourceCraft: SSH-зеркала на этом Gitea отключены.
|
||||
Синхронизация — на каждый push + раз в 8 часов. Зеркало перезаписывает SourceCraft целиком (`--mirror`):
|
||||
**в SourceCraft ничего не пушим и не мержим** — изменения пропадут.
|
||||
@@ -1,5 +1,8 @@
|
||||
# SourceCraft API — шпаргалка
|
||||
|
||||
> Issues и PR ведём в Gitea ([`GITEA_API.md`](GITEA_API.md), ADR-010). Здесь нужны в основном CI-прогоны, логи и секреты;
|
||||
> разделы про issues/метки/PR — справочно (бот и скрипты могут работать с `tgit-uploads`).
|
||||
|
||||
Справочник: [методы](https://sourcecraft.dev/portal/docs/en/api-ref/index.md) ·
|
||||
[интерактивный](https://api.sourcecraft.tech/docs/index.html) ·
|
||||
[swagger.json](https://api.sourcecraft.tech/sourcecraft.swagger.json)
|
||||
|
||||
+13
-1
@@ -2,7 +2,8 @@
|
||||
|
||||
## Откуда задачи
|
||||
|
||||
- Только из Issues на SourceCraft. Нет issue → завести → потом код. API: [`SOURCECRAFT_API.md`](SOURCECRAFT_API.md).
|
||||
- Только из [Gitea Issues](https://gitea.24studbank.ru/HSE/tgit/issues). Нет issue → завести → потом код. API: [`GITEA_API.md`](GITEA_API.md).
|
||||
- Зависимости между issue — через API Gitea, не текстом в теле.
|
||||
- Атрибуты issue: исполнитель, метка зоны (`bot` / `ci` / `infra` / `llm` / `docs`),
|
||||
тип (`feature` / `fix` / `refactor` / `docs`), размер (`size/0.5` ≈ 2ч · `size/1` ≈ 4ч · `size/2` ≈ 1д).
|
||||
- Тело — по [`ISSUE_TEMPLATE.md`](ISSUE_TEMPLATE.md).
|
||||
@@ -20,6 +21,17 @@
|
||||
8. Мерж → ветку удалить
|
||||
```
|
||||
|
||||
## Репозитории
|
||||
|
||||
```
|
||||
Gitea HSE/tgit (origin) ──push-mirror (на каждый push)──► SourceCraft rogachevegorushka/tgit
|
||||
код · issues · PR · ревью CI/CD (.sourcecraft/ci.yaml)
|
||||
```
|
||||
|
||||
- Работаем только с `origin` (Gitea). Remote `sourcecraft` — для чтения/сверки.
|
||||
- ⛔ В SourceCraft не пушим, не мержим, PR не открываем: зеркало перезаписывает его целиком.
|
||||
- CI SourceCraft запускается пушем зеркала; результат смотрим там же (ссылка — в PR вручную или через бота, когда будет).
|
||||
|
||||
## Ветки
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user