Sprint 0 / #17: CI-пайплайн с гейтами (lint, unit+coverage>=70%, security, build, image-scan, push) #60

Merged
embeddevio merged 8 commits from feat/17-ci into main 2026-10-29 21:09:27 +03:00
Showing only changes of commit 80b33d5132 - Show all commits
+19
View File
@@ -157,6 +157,25 @@ Gitea не фиксировал результаты: jobs вечно в `queued
Repo-scoped runner (`gitea-runner-awg-repo`, id 2) с тем же образом пишет статусы и логи Repo-scoped runner (`gitea-runner-awg-repo`, id 2) с тем же образом пишет статусы и логи
корректно. Legacy-контейнер остановлен. корректно. Legacy-контейнер остановлен.
### 6.4 Артефакты Actions не публикуются
`actions/upload-artifact@v3` в логе рапортует `Artifact has been successfully uploaded!`,
но `GET /actions/runs/<id>/artifacts` → `{"artifacts":[],"total_count":0}` и в UI пусто;
`@v4` зависает на старте экшена (>6 мин). Платформенный дефект Gitea 1.26.0 + act_runner v0.6.1 — issue #62.
**Мера в пайплайне:** `unit` печатает coverage-таблицу (`coverage report --sort=cover`), `security` — вывод
`bandit`/`pip-audit`, `image-scan` — trivy-таблицу. Эти строки в логе job'а и есть доступный
артефакт: ссылка на job лежит в commit status. Скачать `coverage.xml`/`htmlcov`/`trivy-report.json`
из UI нельзя, пока #62 не закрыт.
### 6.5 `contract-openapi.yml` — тот же дефект git-http
Оба job'а (`openapi-contract`, `ts-client-is-current`) падали на шаге `checkout` за 28–50 с
(`bad pack header`, exit 128) и делали combined status любого PR = `failure`, хотя `ci / *` зелёные.
В ветке `fix/59-checkout-fallback` (PR #63) применён тот же archive-fallback; `ts-client-is-current`
после fallback сравнивает `sha256sum` перегенерированного `ui/src/api/generated/schema.d.ts`
вместо `git diff` (в распакованном архиве нет `.git`). Проверено: run #64 — success.
## 7. Локальное воспроизведение гейтов ## 7. Локальное воспроизведение гейтов
```bash ```bash