feat(bot): клиент SourceCraft API — прогоны, логи кубов, sha коммита, ретраи
- SourceCraftClient (httpx): list_runs, get_run, get_cube_logs (постранично), run_commit_sha; ретраи на сетевые ошибки и 5xx с экспоненциальной задержкой, 4xx — SourceCraftError без повторов - модели: RunStatus/EventType из swagger, «1970-01-01» = не задано, failed_cubes без служебных #-кубов - у прогона в API нет sha → куб check/meta в tgit-uploads печатает TGIT_COMMIT_SHA (ADR-014) - CLI: python -m app.sourcecraft.cli runs - тесты на реальных ответах API (фикстуры), порог покрытия 45 → 80 Refs #10 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+437
@@ -0,0 +1,437 @@
|
||||
{
|
||||
"id": "",
|
||||
"slug": "1000002",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:56.652199Z",
|
||||
"started_at": "2026-10-14T14:57:43.223468Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:57:43.242955Z"
|
||||
},
|
||||
"status": "processing",
|
||||
"workflows": [
|
||||
{
|
||||
"id": "",
|
||||
"slug": "check-and-deploy",
|
||||
"description": "",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:43.223468Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:57:43.234813Z"
|
||||
},
|
||||
"status": "processing",
|
||||
"tasks": [
|
||||
{
|
||||
"id": "",
|
||||
"slug": "check",
|
||||
"description": "",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:43.223468Z",
|
||||
"finished_at": "2026-10-14T14:58:19.375134Z",
|
||||
"updated_at": "2026-10-14T14:58:19.571691Z"
|
||||
},
|
||||
"status": "success",
|
||||
"cubes": [
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#create-environment",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:43.514526Z",
|
||||
"finished_at": "2026-10-14T14:57:43.584723Z",
|
||||
"updated_at": "2026-10-14T14:57:43.657871Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#git-clone",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:43.585127Z",
|
||||
"finished_at": "2026-10-14T14:57:45.528681Z",
|
||||
"updated_at": "2026-10-14T14:57:45.606302Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#create-environment"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-compile",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:45.529064Z",
|
||||
"finished_at": "2026-10-14T14:57:55.435126Z",
|
||||
"updated_at": "2026-10-14T14:57:55.537030Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-lint",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:55.435513Z",
|
||||
"finished_at": "2026-10-14T14:57:58.411834Z",
|
||||
"updated_at": "2026-10-14T14:57:58.479777Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-meta",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:57:58.412252Z",
|
||||
"finished_at": "2026-10-14T14:58:03.323469Z",
|
||||
"updated_at": "2026-10-14T14:58:03.420479Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-security",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:03.323798Z",
|
||||
"finished_at": "2026-10-14T14:58:04.898405Z",
|
||||
"updated_at": "2026-10-14T14:58:04.986588Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-tests",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:04.898847Z",
|
||||
"finished_at": "2026-10-14T14:58:09.732911Z",
|
||||
"updated_at": "2026-10-14T14:58:09.807301Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "compile",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:09.733227Z",
|
||||
"finished_at": "2026-10-14T14:58:12.400619Z",
|
||||
"updated_at": "2026-10-14T14:58:12.533056Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-compile"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "lint",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:12.401008Z",
|
||||
"finished_at": "2026-10-14T14:58:14.235114Z",
|
||||
"updated_at": "2026-10-14T14:58:14.304352Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-lint"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "meta",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:14.235485Z",
|
||||
"finished_at": "2026-10-14T14:58:14.707956Z",
|
||||
"updated_at": "2026-10-14T14:58:14.778120Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-meta"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "security",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:14.708362Z",
|
||||
"finished_at": "2026-10-14T14:58:17.148819Z",
|
||||
"updated_at": "2026-10-14T14:58:17.221280Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-security"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "tests",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:17.149213Z",
|
||||
"finished_at": "2026-10-14T14:58:19.298832Z",
|
||||
"updated_at": "2026-10-14T14:58:19.405984Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-tests"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#tear-down-environment",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "2026-10-14T14:58:19.299366Z",
|
||||
"finished_at": "2026-10-14T14:58:19.375117Z",
|
||||
"updated_at": "2026-10-14T14:58:19.528162Z"
|
||||
},
|
||||
"status": "success",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "compile"
|
||||
},
|
||||
{
|
||||
"name": "lint"
|
||||
},
|
||||
{
|
||||
"name": "meta"
|
||||
},
|
||||
{
|
||||
"name": "security"
|
||||
},
|
||||
{
|
||||
"name": "tests"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"relations": {
|
||||
"needs": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "deploy",
|
||||
"description": "",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:58:21.737007Z"
|
||||
},
|
||||
"status": "created",
|
||||
"cubes": [
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#create-environment",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#git-clone",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#create-environment"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-artifacts",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#git-clone"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#prepare-image-for-deploy",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-artifacts"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "deploy",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "#prepare-image-for-deploy"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "",
|
||||
"slug": "#tear-down-environment",
|
||||
"dates": {
|
||||
"created_at": "2026-10-14T14:51:57.521264Z",
|
||||
"started_at": "1970-01-01T00:00:00Z",
|
||||
"finished_at": "1970-01-01T00:00:00Z",
|
||||
"updated_at": "2026-10-14T14:51:57.522605Z"
|
||||
},
|
||||
"status": "created",
|
||||
"artifacts": [],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "deploy"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"relations": {
|
||||
"needs": [
|
||||
{
|
||||
"name": "check"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"environment_id": ""
|
||||
}
|
||||
],
|
||||
"event_type": "push",
|
||||
"error_messages": [],
|
||||
"user": {
|
||||
"id": "01a06158-1562-7db1-b6e9-018ddd4d4c29",
|
||||
"slug": "rogachevegorushka"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user