feat(update): 发布双链路更新进度与线上验收审计
@@ -0,0 +1,3 @@
|
||||
FROM registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway@sha256:a2b5fb67384c7f0eca7c7a768b5deacb4c0d2195dfbeb6e16ef40d6dc097bf25
|
||||
LABEL easyai.acceptance="intentional gateway health failure for rollback verification 20261002"
|
||||
COPY pm2.config.js acceptance-health-failure.cjs /app/
|
||||
@@ -0,0 +1 @@
|
||||
require('node:http').createServer((q,s)=>{s.statusCode=503;s.end('acceptance-health-failure')}).listen(3012,'0.0.0.0');
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={apps:[{name:'acceptance-health-failure',script:'./acceptance-health-failure.cjs'}]};
|
||||
@@ -0,0 +1,6 @@
|
||||
/easyai-server sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea healthy
|
||||
/easyai-web sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 healthy
|
||||
sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea ["registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server@sha256:6825def1b7bf252eee477b34d3ddc0317e691f0787ea3f300793c4d272a3b491"]
|
||||
sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f ["registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai@sha256:a287db622d13a706725520d3a9864f986b8854630d198fce3373a8e7f1cfe3b0"]
|
||||
sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 ["registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway@sha256:a2b5fb67384c7f0eca7c7a768b5deacb4c0d2195dfbeb6e16ef40d6dc097bf25"]
|
||||
|
After Width: | Height: | Size: 160 KiB |
|
After Width: | Height: | Size: 176 KiB |
@@ -0,0 +1,4 @@
|
||||
/easyai-server sha256:d70bb954db8e6dea13ae2ae295bd274df6bcfbdaf690fe2599698d449af86773 2026-10-02T11:22:03.534661056Z healthy
|
||||
/easyai-web sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07 2026-10-02T11:22:04.002902303Z healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 2026-09-29T07:22:22.307885848Z healthy
|
||||
/easyai-watchtower-1 sha256:04f6afca616ae63c48c860250212b7406ba917b712f4b2ebff5d43ef45578b87 2026-10-02T11:19:18.087853796Z healthy
|
||||
@@ -0,0 +1,138 @@
|
||||
[
|
||||
{
|
||||
"time": "2026-10-02T11:15:34.439Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": [],
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:22:54.730Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 500,
|
||||
"value": {
|
||||
"statusCode": 500,
|
||||
"timestamp": "2026-10-02T11:22:54.644Z",
|
||||
"path": "/app/update-jobs?active=true&limit=1",
|
||||
"message": "getaddrinfo EAI_AGAIN easyai-updater",
|
||||
"traceId": "yGyuK8eBkaXeNsMy",
|
||||
"appVersion": "3.22.0.20261002.1",
|
||||
"diagnosticCode": "RequestError"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:20.074Z",
|
||||
"path": "/api/app/update-capabilities",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"mode": "legacy_watchtower",
|
||||
"jobApi": false,
|
||||
"executorReachable": false
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:26.733Z",
|
||||
"path": "/api/app/update",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:28.856Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:30.935Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:33.033Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:35.153Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:37.254Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:39.392Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:41.490Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:43.622Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:45.733Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:47.824Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:49.905Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:51.995Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:54.094Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:56.194Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:58.414Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:24:20.993Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "ok",
|
||||
"service": "easyai-server-main",
|
||||
"version": "3.22.0.20261002.2",
|
||||
"buildId": "3.22.0.20261002.2",
|
||||
"timestamp": "2026-10-02T11:24:20.920Z",
|
||||
"uptime": 42.086032874,
|
||||
"dependencies": {
|
||||
"mongo": "ok",
|
||||
"redis": "ok",
|
||||
"rabbitmq": "ok"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 170 KiB |
@@ -0,0 +1,36 @@
|
||||
Update event timeline. Container configuration and authentication details omitted.
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Log entry sent immediately (not batching)" fields.level=info legacy_template=true message="Received HTTP API update request" notify=no
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Generated notification message" message="Received HTTP API update request | method=GETpath=/v1/update" notify=no
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Preparing to send entries" error="<nil>" message="Received HTTP API update request | method=GETpath=/v1/update" notify=no
|
||||
time="2026-10-02T11:23:20Z" level=info msg="Received HTTP API update request" method=GET path=/v1/update
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Handler: trying to acquire lock"
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Handler: acquired lock"
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Handler: executing update function"
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Starting container update check"
|
||||
time="2026-10-02T11:23:20Z" level=debug msg="Sending notification" message="Received HTTP API update request | method=GETpath=/v1/update" notify=no
|
||||
time="2026-10-02T11:23:22Z" level=debug msg="Log entry queued for batching" entries_count=1 fields.level=info legacy_template=true message="Found new image" notify=no
|
||||
time="2026-10-02T11:23:22Z" level=info msg="Found new image" container=easyai-web image="registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002" new_id=4161c653ff66
|
||||
time="2026-10-02T11:23:23Z" level=debug msg="Log entry queued for batching" entries_count=2 fields.level=info legacy_template=true message="Found new image" notify=no
|
||||
time="2026-10-02T11:23:23Z" level=info msg="Found new image" container=easyai-server image="registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002" new_id=72ec514ed221
|
||||
time="2026-10-02T11:23:24Z" level=debug msg="Stopping container for restart" container=easyai-web image="registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:24Z" level=debug msg="Log entry queued for batching" entries_count=3 fields.level=info legacy_template=true message="Stopping container" notify=no
|
||||
time="2026-10-02T11:23:24Z" level=info msg="Stopping container" container=easyai-web id=877447f1cc84 signal=SIGTERM timeout=30s
|
||||
time="2026-10-02T11:23:25Z" level=debug msg="Stopping container for restart" container=easyai-server image="registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:25Z" level=debug msg="Log entry queued for batching" entries_count=4 fields.level=info legacy_template=true message="Stopping container" notify=no
|
||||
time="2026-10-02T11:23:25Z" level=info msg="Stopping container" container=easyai-server id=5aadf9dad929 signal=SIGTERM timeout=30s
|
||||
time="2026-10-02T11:23:27Z" level=debug msg="Starting container after update/restart" container=easyai-server image="registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:28Z" level=debug msg="Log entry queued for batching" entries_count=5 fields.level=info legacy_template=true message="Started new container" notify=no
|
||||
time="2026-10-02T11:23:28Z" level=info msg="Started new container" container=easyai-server id=5aadf9dad929 new_id=f2706ffec607
|
||||
time="2026-10-02T11:23:28Z" level=debug msg="Started new container" container=easyai-server image="registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002" new_id=f2706ffec607
|
||||
time="2026-10-02T11:23:28Z" level=debug msg="Restarted container" container=easyai-server image="registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:28Z" level=debug msg="Starting container after update/restart" container=easyai-web image="registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Log entry queued for batching" entries_count=6 fields.level=info legacy_template=true message="Started new container" notify=no
|
||||
time="2026-10-02T11:23:30Z" level=info msg="Started new container" container=easyai-web id=877447f1cc84 new_id=67052e84930b
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Started new container" container=easyai-web image="registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002" new_id=67052e84930b
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Restarted container" container=easyai-web image="registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002"
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Generated notification message" message="Found new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002 (4161c653ff66)\nFound new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002 (72ec514ed221)\nStopped stale container: easyai-web (877447f1cc84)\nStopped stale container: easyai-server (5aadf9dad929)\nStarted new container: easyai-server (f2706ffec607)\nStarted new container: easyai-web (67052e84930b)" notify=no
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Preparing to send entries" error="<nil>" message="Found new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002 (4161c653ff66)\nFound new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002 (72ec514ed221)\nStopped stale container: easyai-web (877447f1cc84)\nStopped stale container: easyai-server (5aadf9dad929)\nStarted new container: easyai-server (f2706ffec607)\nStarted new container: easyai-web (67052e84930b)" notify=no
|
||||
time="2026-10-02T11:23:30Z" level=info msg="Update session completed" failed=0 notify=no scanned=3 updated=2
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Handler: update function completed"
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Handler: releasing lock"
|
||||
time="2026-10-02T11:23:30Z" level=debug msg="Sending notification" message="Found new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002 (4161c653ff66)\nFound new image: registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002 (72ec514ed221)\nStopped stale container: easyai-web (877447f1cc84)\nStopped stale container: easyai-server (5aadf9dad929)\nStarted new container: easyai-server (f2706ffec607)\nStarted new container: easyai-web (67052e84930b)" notify=no
|
||||
@@ -0,0 +1,6 @@
|
||||
/easyai-server sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea healthy
|
||||
/easyai-web sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 healthy
|
||||
sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea ["registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server@sha256:6825def1b7bf252eee477b34d3ddc0317e691f0787ea3f300793c4d272a3b491"]
|
||||
sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f ["registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai@sha256:a287db622d13a706725520d3a9864f986b8854630d198fce3373a8e7f1cfe3b0"]
|
||||
sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 ["registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway@sha256:a2b5fb67384c7f0eca7c7a768b5deacb4c0d2195dfbeb6e16ef40d6dc097bf25"]
|
||||
@@ -0,0 +1,252 @@
|
||||
[
|
||||
{
|
||||
"id": "154b6781-dd24-434d-94a5-4bf59122c0bb",
|
||||
"idempotencyKey": "c00a35c9-6e10-4ab1-9915-5e44f58e2daf",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"status": "succeeded",
|
||||
"phase": "finished",
|
||||
"message": "更新完成,所有核心服务均已通过检查",
|
||||
"createdAt": "2026-10-02T11:37:32.825Z",
|
||||
"updatedAt": "2026-10-02T11:38:26.397Z",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"components": [
|
||||
{
|
||||
"key": "server-main",
|
||||
"containerName": "easyai-server",
|
||||
"status": "succeeded",
|
||||
"targetImageId": "sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea",
|
||||
"previousImageId": "sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.6",
|
||||
"ipv6Address": ""
|
||||
},
|
||||
"easyai_sandbox-network": {
|
||||
"networkId": "b2daf0ea06fc85a171ed60f0a3fb7a58e7ca56fad15490fb2e589ad05e0ffffc",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.20.0.2",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
},
|
||||
{
|
||||
"key": "ws-gateway",
|
||||
"containerName": "easyai-wsgateway",
|
||||
"status": "succeeded",
|
||||
"targetImageId": "sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5"
|
||||
},
|
||||
{
|
||||
"key": "web",
|
||||
"containerName": "easyai-web",
|
||||
"status": "succeeded",
|
||||
"targetImageId": "sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f",
|
||||
"previousImageId": "sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-web",
|
||||
"easyai-web"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.8",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
}
|
||||
],
|
||||
"executor": "updater",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:37:32.825Z",
|
||||
"finishedAt": "2026-10-02T11:37:32.827Z"
|
||||
},
|
||||
{
|
||||
"id": "prechecking",
|
||||
"title": "检查环境",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:37:32.827Z",
|
||||
"finishedAt": "2026-10-02T11:37:32.829Z"
|
||||
},
|
||||
{
|
||||
"id": "pulling",
|
||||
"title": "下载更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:37:32.829Z",
|
||||
"finishedAt": "2026-10-02T11:37:33.478Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "更新服务",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:37:33.478Z",
|
||||
"finishedAt": "2026-10-02T11:38:26.153Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "验证版本",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:38:26.153Z",
|
||||
"finishedAt": "2026-10-02T11:38:26.397Z"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "完成",
|
||||
"status": "completed",
|
||||
"finishedAt": "2026-10-02T11:38:26.397Z"
|
||||
}
|
||||
],
|
||||
"startedAt": "2026-10-02T11:37:32.827Z",
|
||||
"releaseId": "online-update-progress-20261002",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"finishedAt": "2026-10-02T11:38:26.397Z"
|
||||
},
|
||||
{
|
||||
"id": "d0f02915-1cbe-4063-94c6-e9d749aaf2d7",
|
||||
"idempotencyKey": "c05c99af-affd-482b-98e1-eca9dea21c6b",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"status": "rolled_back",
|
||||
"phase": "finished",
|
||||
"message": "新版本未能正常启动,已恢复原版本",
|
||||
"createdAt": "2026-10-02T11:33:41.418Z",
|
||||
"updatedAt": "2026-10-02T11:36:15.937Z",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"components": [
|
||||
{
|
||||
"key": "server-main",
|
||||
"containerName": "easyai-server",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea",
|
||||
"previousImageId": "sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.6",
|
||||
"ipv6Address": ""
|
||||
},
|
||||
"easyai_sandbox-network": {
|
||||
"networkId": "b2daf0ea06fc85a171ed60f0a3fb7a58e7ca56fad15490fb2e589ad05e0ffffc",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.20.0.2",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
},
|
||||
{
|
||||
"key": "ws-gateway",
|
||||
"containerName": "easyai-wsgateway",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:4fb8a96a311686f59ab142dd150f7a2df8662a8b9f19233f9b06cfe548c899d6",
|
||||
"previousImageId": "sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-wsgateway",
|
||||
"ws-gateway"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.5",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "web",
|
||||
"containerName": "easyai-web",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f",
|
||||
"previousImageId": "sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-web",
|
||||
"easyai-web"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.8",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
}
|
||||
],
|
||||
"executor": "updater",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.421Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.426Z"
|
||||
},
|
||||
{
|
||||
"id": "prechecking",
|
||||
"title": "检查环境",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.432Z"
|
||||
},
|
||||
{
|
||||
"id": "pulling",
|
||||
"title": "下载更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.432Z",
|
||||
"finishedAt": "2026-10-02T11:33:43.339Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "更新服务",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:43.339Z",
|
||||
"finishedAt": "2026-10-02T11:35:11.300Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "验证版本",
|
||||
"status": "failed",
|
||||
"startedAt": "2026-10-02T11:35:11.300Z",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "完成",
|
||||
"status": "failed",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
}
|
||||
],
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"releaseId": "update-rollback-acceptance-20261002",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"reasonCode": "healthcheck_failed",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 146 KiB |
@@ -0,0 +1,4 @@
|
||||
/easyai-server sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af healthy
|
||||
/easyai-web sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07 healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 healthy
|
||||
{"status":"success","data":{"version":"3.22.0.20261002.1"},"message":"success"}
|
||||
|
After Width: | Height: | Size: 149 KiB |
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"id": "d0f02915-1cbe-4063-94c6-e9d749aaf2d7",
|
||||
"idempotencyKey": "c05c99af-affd-482b-98e1-eca9dea21c6b",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"status": "rolled_back",
|
||||
"phase": "finished",
|
||||
"message": "新版本未能正常启动,已恢复原版本",
|
||||
"createdAt": "2026-10-02T11:33:41.418Z",
|
||||
"updatedAt": "2026-10-02T11:36:15.937Z",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"components": [
|
||||
{
|
||||
"key": "server-main",
|
||||
"containerName": "easyai-server",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea",
|
||||
"previousImageId": "sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.6",
|
||||
"ipv6Address": ""
|
||||
},
|
||||
"easyai_sandbox-network": {
|
||||
"networkId": "b2daf0ea06fc85a171ed60f0a3fb7a58e7ca56fad15490fb2e589ad05e0ffffc",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.20.0.2",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
},
|
||||
{
|
||||
"key": "ws-gateway",
|
||||
"containerName": "easyai-wsgateway",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:4fb8a96a311686f59ab142dd150f7a2df8662a8b9f19233f9b06cfe548c899d6",
|
||||
"previousImageId": "sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-wsgateway",
|
||||
"ws-gateway"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.5",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "web",
|
||||
"containerName": "easyai-web",
|
||||
"status": "rolled_back",
|
||||
"targetImageId": "sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f",
|
||||
"previousImageId": "sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-web",
|
||||
"easyai-web"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.8",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
}
|
||||
],
|
||||
"executor": "updater",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.421Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.426Z"
|
||||
},
|
||||
{
|
||||
"id": "prechecking",
|
||||
"title": "检查环境",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.432Z"
|
||||
},
|
||||
{
|
||||
"id": "pulling",
|
||||
"title": "下载更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.432Z",
|
||||
"finishedAt": "2026-10-02T11:33:43.339Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "更新服务",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:43.339Z",
|
||||
"finishedAt": "2026-10-02T11:35:11.300Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "验证版本",
|
||||
"status": "failed",
|
||||
"startedAt": "2026-10-02T11:35:11.300Z",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "完成",
|
||||
"status": "failed",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
}
|
||||
],
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"releaseId": "update-rollback-acceptance-20261002",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"reasonCode": "healthcheck_failed",
|
||||
"finishedAt": "2026-10-02T11:36:15.936Z"
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"id": "d0f02915-1cbe-4063-94c6-e9d749aaf2d7",
|
||||
"idempotencyKey": "c05c99af-affd-482b-98e1-eca9dea21c6b",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"status": "running",
|
||||
"phase": "applying",
|
||||
"message": "正在更新网页服务",
|
||||
"createdAt": "2026-10-02T11:33:41.418Z",
|
||||
"updatedAt": "2026-10-02T11:35:05.249Z",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"components": [
|
||||
{
|
||||
"key": "server-main",
|
||||
"containerName": "easyai-server",
|
||||
"status": "succeeded",
|
||||
"targetImageId": "sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea",
|
||||
"previousImageId": "sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af",
|
||||
"backupContainerName": "easyai-update-backup-d0f02915-server-main",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.6",
|
||||
"ipv6Address": ""
|
||||
},
|
||||
"easyai_sandbox-network": {
|
||||
"networkId": "b2daf0ea06fc85a171ed60f0a3fb7a58e7ca56fad15490fb2e589ad05e0ffffc",
|
||||
"aliases": [
|
||||
"easyai-server",
|
||||
"easyai-server"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.20.0.2",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
},
|
||||
"message": "新版本已通过检查"
|
||||
},
|
||||
{
|
||||
"key": "ws-gateway",
|
||||
"containerName": "easyai-wsgateway",
|
||||
"status": "succeeded",
|
||||
"targetImageId": "sha256:4fb8a96a311686f59ab142dd150f7a2df8662a8b9f19233f9b06cfe548c899d6",
|
||||
"previousImageId": "sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5",
|
||||
"backupContainerName": "easyai-update-backup-d0f02915-ws-gateway",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-wsgateway",
|
||||
"ws-gateway"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.5",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "web",
|
||||
"containerName": "easyai-web",
|
||||
"status": "verifying",
|
||||
"targetImageId": "sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f",
|
||||
"previousImageId": "sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07",
|
||||
"backupContainerName": "easyai-update-backup-d0f02915-web",
|
||||
"networks": {
|
||||
"easyai_easyai": {
|
||||
"networkId": "c4265a68ef2b242f0a7d26e4a059d2d62e8aedf5db7029c27fc3676ea779b170",
|
||||
"aliases": [
|
||||
"easyai-web",
|
||||
"easyai-web"
|
||||
],
|
||||
"links": null,
|
||||
"ipv4Address": "172.21.0.8",
|
||||
"ipv6Address": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"executor": "updater",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.421Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.426Z"
|
||||
},
|
||||
{
|
||||
"id": "prechecking",
|
||||
"title": "检查环境",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"finishedAt": "2026-10-02T11:33:41.432Z"
|
||||
},
|
||||
{
|
||||
"id": "pulling",
|
||||
"title": "下载更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:33:41.432Z",
|
||||
"finishedAt": "2026-10-02T11:33:43.339Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "更新服务",
|
||||
"status": "running",
|
||||
"startedAt": "2026-10-02T11:33:43.339Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "验证版本",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "完成",
|
||||
"status": "pending"
|
||||
}
|
||||
],
|
||||
"startedAt": "2026-10-02T11:33:41.426Z",
|
||||
"releaseId": "update-rollback-acceptance-20261002",
|
||||
"productVersion": "3.22.0.20261002.2"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/easyai-server sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea healthy
|
||||
/easyai-web sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 healthy
|
||||
sha256:72ec514ed221c424422542f7922f3962b03de969a65e3ffec058fa7cd70e1fea ["registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server@sha256:6825def1b7bf252eee477b34d3ddc0317e691f0787ea3f300793c4d272a3b491"]
|
||||
sha256:4161c653ff66e92e0f24f0b175bb9b3a447f095c0e55b238f480a12ddce2821f ["registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai@sha256:a287db622d13a706725520d3a9864f986b8854630d198fce3373a8e7f1cfe3b0"]
|
||||
sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 ["registry.cn-shanghai.aliyuncs.com/easyaigc/wsgateway@sha256:a2b5fb67384c7f0eca7c7a768b5deacb4c0d2195dfbeb6e16ef40d6dc097bf25"]
|
||||
|
After Width: | Height: | Size: 176 KiB |
@@ -0,0 +1,4 @@
|
||||
/easyai-server sha256:6a809aacd82dd70c23ef1f3873bab3f46c7daa824a5c3b6196bfb6dadb1718af 2026-10-02T11:25:01.404278562Z healthy
|
||||
/easyai-web sha256:73689c521bdc5ecb57171c0fc629b6746491769dd2e015b9abb4e0d6091cbc07 2026-10-02T11:25:03.264453447Z healthy
|
||||
/easyai-wsgateway sha256:821ed6a69be4771c57a7bf67084455a4c0c7e4c9e201b8e7bcb2dedf1fb229f5 2026-09-29T07:22:22.307885848Z healthy
|
||||
/easyai-watchtower-1 sha256:6ba1e78a0c9ce1ae5389ecf8a78426b82beaf3357c71d52548f7d05fd92eebb7 2026-10-02T11:25:01.394675669Z healthy
|
||||
@@ -0,0 +1,459 @@
|
||||
[
|
||||
{
|
||||
"time": "2026-10-02T11:15:34.439Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": [],
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:22:54.730Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 500,
|
||||
"value": {
|
||||
"statusCode": 500,
|
||||
"timestamp": "2026-10-02T11:22:54.644Z",
|
||||
"path": "/app/update-jobs?active=true&limit=1",
|
||||
"message": "getaddrinfo EAI_AGAIN easyai-updater",
|
||||
"traceId": "yGyuK8eBkaXeNsMy",
|
||||
"appVersion": "3.22.0.20261002.1",
|
||||
"diagnosticCode": "RequestError"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:20.074Z",
|
||||
"path": "/api/app/update-capabilities",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"mode": "legacy_watchtower",
|
||||
"jobApi": false,
|
||||
"executorReachable": false
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:26.733Z",
|
||||
"path": "/api/app/update",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:28.856Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:30.935Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:33.033Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:35.153Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:37.254Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:39.392Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:41.490Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:43.622Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:45.733Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:47.824Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:49.905Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:51.995Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:54.094Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:56.194Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:23:58.414Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:24:20.993Z",
|
||||
"path": "/api/health/update-ready",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "ok",
|
||||
"service": "easyai-server-main",
|
||||
"version": "3.22.0.20261002.2",
|
||||
"buildId": "3.22.0.20261002.2",
|
||||
"timestamp": "2026-10-02T11:24:20.920Z",
|
||||
"uptime": 42.086032874,
|
||||
"dependencies": {
|
||||
"mongo": "ok",
|
||||
"redis": "ok",
|
||||
"rabbitmq": "ok"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:25:52.477Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": [],
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:25:58.757Z",
|
||||
"path": "/api/app/update-capabilities",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"mode": "legacy_watchtower",
|
||||
"executor": "watchtower",
|
||||
"jobApi": true,
|
||||
"eventApi": true,
|
||||
"realtime": true,
|
||||
"executorReachable": true
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:25:58.910Z",
|
||||
"path": "/api/app/update-jobs",
|
||||
"status": 201,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"id": "wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"idempotencyKey": "9bb11e4f-924a-4fd5-a501-86150a35e147",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"executor": "watchtower",
|
||||
"status": "queued",
|
||||
"phase": "queued",
|
||||
"message": "更新任务已保存,正在提交更新请求",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"createdAt": "2026-10-02T11:25:58.856Z",
|
||||
"updatedAt": "2026-10-02T11:25:58.856Z",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "running",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "执行更新",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "等待服务恢复",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "确认版本",
|
||||
"status": "pending"
|
||||
}
|
||||
],
|
||||
"components": []
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:25:59.020Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:01.059Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"id": "wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"idempotencyKey": "9bb11e4f-924a-4fd5-a501-86150a35e147",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"executor": "watchtower",
|
||||
"status": "running",
|
||||
"phase": "applying",
|
||||
"message": "更新服务已开始执行,正在检查、下载并更新服务",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"createdAt": "2026-10-02T11:25:58.856Z",
|
||||
"updatedAt": "2026-10-02T11:25:58.893Z",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"finishedAt": "2026-10-02T11:25:58.893Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "执行更新",
|
||||
"status": "running",
|
||||
"startedAt": "2026-10-02T11:25:58.893Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "等待服务恢复",
|
||||
"status": "pending"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "确认版本",
|
||||
"status": "pending"
|
||||
}
|
||||
],
|
||||
"components": []
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:01.259Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:03.159Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:03.288Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:05.239Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:05.338Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:07.353Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:07.462Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:09.548Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:09.746Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:11.619Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:11.842Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:13.722Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:13.978Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:15.817Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:15.916Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:17.930Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:18.136Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:20.053Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:20.233Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:22.159Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:22.331Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:24.287Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:24.428Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:26.401Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:26.647Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:28.491Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:26:28.654Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a/events",
|
||||
"status": 502
|
||||
},
|
||||
{
|
||||
"time": "2026-10-02T11:27:02.209Z",
|
||||
"path": "/api/app/update-jobs/wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"status": 200,
|
||||
"value": {
|
||||
"status": "success",
|
||||
"data": {
|
||||
"id": "wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"idempotencyKey": "9bb11e4f-924a-4fd5-a501-86150a35e147",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"executor": "watchtower",
|
||||
"status": "succeeded",
|
||||
"phase": "finished",
|
||||
"message": "更新完成,目标版本和核心服务均已确认可用",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"createdAt": "2026-10-02T11:25:58.856Z",
|
||||
"updatedAt": "2026-10-02T11:26:41.594Z",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"finishedAt": "2026-10-02T11:25:58.893Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "执行更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:25:58.893Z",
|
||||
"finishedAt": "2026-10-02T11:26:39.560Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "等待服务恢复",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:26:39.560Z",
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "确认版本",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:26:41.594Z",
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
}
|
||||
],
|
||||
"components": [],
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 170 KiB |
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"id": "wt-91612f117537604c18fc41bf214d06a8b0aeaa4956b2c42aad738d657c5f369a",
|
||||
"idempotencyKey": "9bb11e4f-924a-4fd5-a501-86150a35e147",
|
||||
"action": "update",
|
||||
"source": "manual",
|
||||
"executor": "watchtower",
|
||||
"status": "succeeded",
|
||||
"phase": "finished",
|
||||
"message": "更新完成,目标版本和核心服务均已确认可用",
|
||||
"previousVersion": "3.22.0.20261002.1",
|
||||
"productVersion": "3.22.0.20261002.2",
|
||||
"createdAt": "2026-10-02T11:25:58.856Z",
|
||||
"updatedAt": "2026-10-02T11:26:41.594Z",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"steps": [
|
||||
{
|
||||
"id": "queued",
|
||||
"title": "提交请求",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:25:58.856Z",
|
||||
"finishedAt": "2026-10-02T11:25:58.893Z"
|
||||
},
|
||||
{
|
||||
"id": "applying",
|
||||
"title": "执行更新",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:25:58.893Z",
|
||||
"finishedAt": "2026-10-02T11:26:39.560Z"
|
||||
},
|
||||
{
|
||||
"id": "verifying",
|
||||
"title": "等待服务恢复",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:26:39.560Z",
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
},
|
||||
{
|
||||
"id": "finished",
|
||||
"title": "确认版本",
|
||||
"status": "completed",
|
||||
"startedAt": "2026-10-02T11:26:41.594Z",
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
}
|
||||
],
|
||||
"components": [],
|
||||
"finishedAt": "2026-10-02T11:26:41.594Z"
|
||||
}
|
||||
|
After Width: | Height: | Size: 160 KiB |
|
After Width: | Height: | Size: 160 KiB |
@@ -0,0 +1,31 @@
|
||||
Update event timeline. Container configuration and authentication details omitted.
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:25:58Z level=info msg="Received HTTP API update request" method=POST notify=no path=/v1/update
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Handler: trying to acquire lock" notify=no
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Handler: acquired lock for full update" notify=no
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Starting container update check"
|
||||
time=2026-10-02T11:25:58Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:25:59Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:26:00Z level=info msg="Found new image" container=easyai-web image=registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002 new_id=4161c653ff66
|
||||
time=2026-10-02T11:26:00Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:26:01Z level=info msg="Found new image" container=easyai-server image=registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002 new_id=72ec514ed221
|
||||
time=2026-10-02T11:26:01Z level=debug msg="Stopping container for restart" container=easyai-web image=registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:01Z level=info msg="Stopping container" container=easyai-web id=41244005ea7a signal=SIGTERM timeout=30000
|
||||
time=2026-10-02T11:26:01Z level=debug msg="Received HTTP API history request" method=GET notify=no path=/v1/history
|
||||
time=2026-10-02T11:26:01Z level=debug msg="Stopping container for restart" container=easyai-server image=registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:01Z level=info msg="Stopping container" container=easyai-server id=cea3cafc9806 signal=SIGTERM timeout=30000
|
||||
time=2026-10-02T11:26:03Z level=debug msg="Starting container with updated configuration" container=easyai-server image=registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:03Z level=debug msg="Starting container by ID" container_id=62a2a7eea3d6
|
||||
time=2026-10-02T11:26:05Z level=debug msg="Container started successfully" container_id=62a2a7eea3d6
|
||||
time=2026-10-02T11:26:05Z level=info msg="Started new container" container=easyai-server image=registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002 new_id=62a2a7eea3d6
|
||||
time=2026-10-02T11:26:05Z level=debug msg="Restarted container" container=easyai-server image=registry.cn-shanghai.aliyuncs.com/comfy-ai/comfy-server:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:06Z level=debug msg="Starting container with updated configuration" container=easyai-web image=registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:06Z level=debug msg="Starting container by ID" container_id=6b1c321e8352
|
||||
time=2026-10-02T11:26:07Z level=debug msg="Container started successfully" container_id=6b1c321e8352
|
||||
time=2026-10-02T11:26:07Z level=info msg="Started new container" container=easyai-web image=registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002 new_id=6b1c321e8352
|
||||
time=2026-10-02T11:26:07Z level=debug msg="Restarted container" container=easyai-web image=registry.cn-shanghai.aliyuncs.com/comfy-ai/one-ai:update-acceptance-20261002
|
||||
time=2026-10-02T11:26:07Z level=info msg="Update session completed" failed=0 notify=no scanned=3 skipped=0 updated=2
|
||||
time=2026-10-02T11:26:07Z level=debug msg="Handler (async): update function completed" duration=8527.922807 notify=no
|
||||
time=2026-10-02T11:26:07Z level=debug msg="Handler: releasing lock" notify=no
|
||||