{"job_id":"a99f5b71-13d3-4a14-9ba6-c3c1b049837f","filters":{"level":null,"component":null},"total":194,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 17:50:42.950 [INFO] [agent:a99f5b71] 🚀 CI 流水线启动","timestamp":"2026-08-18T17:50:42.950310+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:42.950 [INFO] [git:a99f5b71] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/a99f5b71-13d3-4a14-9ba6-c3c1b049837f (branch=develop)","timestamp":"2026-08-18T17:50:42.950674+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:44.205 [INFO] [git:a99f5b71] Cloning into '/app/data/workspace/a99f5b71-13d3-4a14-9ba6-c3c1b049837f'...","timestamp":"2026-08-18T17:50:44.205023+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:44.205 [INFO] [git:a99f5b71] git clone success: /app/data/workspace/a99f5b71-13d3-4a14-9ba6-c3c1b049837f","timestamp":"2026-08-18T17:50:44.205142+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 17:50:44.205 [INFO] [agent:a99f5b71] 📦 代码已克隆到 /app/data/workspace/a99f5b71-13d3-4a14-9ba6-c3c1b049837f","timestamp":"2026-08-18T17:50:44.205551+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:44.208 [INFO] [orchestrator:a99f5b71] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-18T17:50:44.208029+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:45.054 [INFO] [orchestrator:a99f5b71] 📝 检测到变更的目录: fscp-modules, fscp-modules/fscp-billing","timestamp":"2026-08-18T17:50:45.054852+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:45.057 [INFO] [git:a99f5b71] 目录 fscp-gateway 代码指纹: df7c7da","timestamp":"2026-08-18T17:50:45.057892+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:45.466 [INFO] [docker:a99f5b71] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da（跳过构建）","timestamp":"2026-08-18T17:50:45.466087+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:45.466 [INFO] [orchestrator:a99f5b71] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-df7c7da 已存在，代码指纹 df7c7da)","timestamp":"2026-08-18T17:50:45.466233+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:45.470 [INFO] [git:a99f5b71] 目录 fscp-auth 代码指纹: 6db0579","timestamp":"2026-08-18T17:50:45.470313+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:45.855 [INFO] [docker:a99f5b71] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579（跳过构建）","timestamp":"2026-08-18T17:50:45.855463+08:00"},{"seq":13,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:45.855 [INFO] [orchestrator:a99f5b71] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-6db0579 已存在，代码指纹 6db0579)","timestamp":"2026-08-18T17:50:45.855591+08:00"},{"seq":14,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:45.859 [INFO] [git:a99f5b71] 目录 fscp-modules 代码指纹: 6a5057d","timestamp":"2026-08-18T17:50:45.859366+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:46.486 [INFO] [git:a99f5b71] 目录 fscp-modules 代码指纹: 6a5057d","timestamp":"2026-08-18T17:50:46.486508+08:00"},{"seq":16,"level":"INFO","component":"git","message":"[git] 2026-08-18 17:50:47.117 [INFO] [git:a99f5b71] 目录 fscp-modules 代码指纹: 6a5057d","timestamp":"2026-08-18T17:50:47.117081+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:47.737 [INFO] [orchestrator:a99f5b71] 🔨 开始构建 3 个服务","timestamp":"2026-08-18T17:50:47.737942+08:00"},{"seq":18,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:47.741 [INFO] [orchestrator:a99f5b71] 🔨 构建服务: fanson/fscp-system → 镜像标签 fanson/fscp-system:develop-6a5057d","timestamp":"2026-08-18T17:50:47.741323+08:00"},{"seq":19,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:50:47.741 [INFO] [orchestrator:a99f5b71] 已自动注入 -pl fscp-modules/fscp-system -am: mvn -pl fscp-modules/fscp-system -am clean package -DskipTests","timestamp":"2026-08-18T17:50:47.741462+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:47.741 [INFO] [docker:a99f5b71] building docker.fanson.cloud/fanson/fscp-system:develop-6a5057d (with cache)","timestamp":"2026-08-18T17:50:47.741941+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:48.005 [INFO] [docker:a99f5b71] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-18T17:50:48.005700+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:48.005 [INFO] [docker:a99f5b71] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-18T17:50:48.005871+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:48.005 [INFO] [docker:a99f5b71] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-18T17:50:48.006001+08:00"},{"seq":24,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 17:50:48.007 [ERROR] [docker:a99f5b71] docker command failed (exit=1): ERROR: failed to build: Cache export is not supported for the docker driver.\nSwitch to a different driver, or turn on the containerd image store, and try again.\nLearn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-18T17:50:48.007832+08:00"},{"seq":25,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 17:50:48.008 [WARNING] [docker:a99f5b71] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-18T17:50:48.008201+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:48.008 [INFO] [docker:a99f5b71] building docker.fanson.cloud/fanson/fscp-system:develop-6a5057d (native docker build)","timestamp":"2026-08-18T17:50:48.008351+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:48.882 [INFO] [docker:a99f5b71] #1 DONE 0.6s","timestamp":"2026-08-18T17:50:48.882748+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:49.234 [INFO] [docker:a99f5b71] #2 DONE 0.0s","timestamp":"2026-08-18T17:50:49.234045+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:49.645 [INFO] [docker:a99f5b71] #4 DONE 0.7s","timestamp":"2026-08-18T17:50:49.645828+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:50.795 [INFO] [docker:a99f5b71] #3 DONE 1.8s","timestamp":"2026-08-18T17:50:50.795976+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:51.436 [INFO] [docker:a99f5b71] #5 DONE 0.6s","timestamp":"2026-08-18T17:50:51.436946+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:51.646 [INFO] [docker:a99f5b71] #6 DONE 0.0s","timestamp":"2026-08-18T17:50:51.646203+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:51.646 [INFO] [docker:a99f5b71] #7 DONE 0.0s","timestamp":"2026-08-18T17:50:51.646337+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:52.277 [INFO] [docker:a99f5b71] #8 DONE 0.8s","timestamp":"2026-08-18T17:50:52.277257+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:52.497 [INFO] [docker:a99f5b71] #9 CACHED","timestamp":"2026-08-18T17:50:52.497645+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:52.497 [INFO] [docker:a99f5b71] #10 CACHED","timestamp":"2026-08-18T17:50:52.497778+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:52.497 [INFO] [docker:a99f5b71] #11 CACHED","timestamp":"2026-08-18T17:50:52.497877+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:52.497 [INFO] [docker:a99f5b71] #12 CACHED","timestamp":"2026-08-18T17:50:52.497970+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:50:54.533 [INFO] [docker:a99f5b71] #13 DONE 2.2s","timestamp":"2026-08-18T17:50:54.533013+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:08.929 [INFO] [docker:a99f5b71] #14 DONE 14.3s","timestamp":"2026-08-18T17:51:08.929532+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:09.499 [INFO] [docker:a99f5b71] #15 CACHED","timestamp":"2026-08-18T17:51:09.499609+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:11.760 [INFO] [docker:a99f5b71] #16 DONE 2.4s","timestamp":"2026-08-18T17:51:11.760279+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:12.976 [INFO] [docker:a99f5b71] #17 DONE 1.1s","timestamp":"2026-08-18T17:51:12.976598+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.063 [INFO] [docker:a99f5b71] build success: docker.fanson.cloud/fanson/fscp-system:develop-6a5057d","timestamp":"2026-08-18T17:51:14.063697+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.063 [INFO] [docker:a99f5b71] pushing docker.fanson.cloud/fanson/fscp-system:develop-6a5057d","timestamp":"2026-08-18T17:51:14.063821+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.099 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-18T17:51:14.099453+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.134 [INFO] [docker:a99f5b71] eb9418fed7dc: Preparing","timestamp":"2026-08-18T17:51:14.134930+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 5f70bf18a086: Preparing","timestamp":"2026-08-18T17:51:14.135047+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 71a2618c0925: Preparing","timestamp":"2026-08-18T17:51:14.135138+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Preparing","timestamp":"2026-08-18T17:51:14.135223+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] cd4b3dc03178: Preparing","timestamp":"2026-08-18T17:51:14.135307+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] b4cfcb8385a8: Preparing","timestamp":"2026-08-18T17:51:14.135387+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 2b730cf18c09: Preparing","timestamp":"2026-08-18T17:51:14.135469+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] edeaba958753: Preparing","timestamp":"2026-08-18T17:51:14.135548+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 8bf42db0de72: Preparing","timestamp":"2026-08-18T17:51:14.135625+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 31892cc314cb: Preparing","timestamp":"2026-08-18T17:51:14.135705+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 11936051f93b: Preparing","timestamp":"2026-08-18T17:51:14.135793+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] edeaba958753: Waiting","timestamp":"2026-08-18T17:51:14.135870+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.135 [INFO] [docker:a99f5b71] 11936051f93b: Waiting","timestamp":"2026-08-18T17:51:14.135946+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.136 [INFO] [docker:a99f5b71] 31892cc314cb: Waiting","timestamp":"2026-08-18T17:51:14.136022+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.136 [INFO] [docker:a99f5b71] b4cfcb8385a8: Waiting","timestamp":"2026-08-18T17:51:14.136098+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.136 [INFO] [docker:a99f5b71] 8bf42db0de72: Waiting","timestamp":"2026-08-18T17:51:14.136172+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.136 [INFO] [docker:a99f5b71] 2b730cf18c09: Waiting","timestamp":"2026-08-18T17:51:14.136247+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.467 [INFO] [docker:a99f5b71] 5f70bf18a086: Layer already exists","timestamp":"2026-08-18T17:51:14.467269+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.577 [INFO] [docker:a99f5b71] cd4b3dc03178: Layer already exists","timestamp":"2026-08-18T17:51:14.577720+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.577 [INFO] [docker:a99f5b71] 71a2618c0925: Layer already exists","timestamp":"2026-08-18T17:51:14.577900+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.578 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-18T17:51:14.578223+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.607 [INFO] [docker:a99f5b71] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-18T17:51:14.607232+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.707 [INFO] [docker:a99f5b71] 8bf42db0de72: Layer already exists","timestamp":"2026-08-18T17:51:14.707962+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.729 [INFO] [docker:a99f5b71] 31892cc314cb: Layer already exists","timestamp":"2026-08-18T17:51:14.729096+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.729 [INFO] [docker:a99f5b71] edeaba958753: Layer already exists","timestamp":"2026-08-18T17:51:14.729209+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.730 [INFO] [docker:a99f5b71] 2b730cf18c09: Layer already exists","timestamp":"2026-08-18T17:51:14.730016+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:14.808 [INFO] [docker:a99f5b71] 11936051f93b: Layer already exists","timestamp":"2026-08-18T17:51:14.808166+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:25.453 [INFO] [docker:a99f5b71] eb9418fed7dc: Pushed","timestamp":"2026-08-18T17:51:25.453624+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:26.224 [INFO] [docker:a99f5b71] develop-6a5057d: digest: sha256:727911f20310202269320a9fb424dbbda785f8731598562134c635a86f98bc00 size: 2629","timestamp":"2026-08-18T17:51:26.224559+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:26.308 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-18T17:51:26.308360+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:26.341 [INFO] [docker:a99f5b71] tag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-18T17:51:26.341889+08:00"},{"seq":78,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 17:51:26.342 [ERROR] [docker:a99f5b71] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-system]\ntag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-18T17:51:26.342661+08:00"},{"seq":79,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 17:51:26.343 [WARNING] [docker:a99f5b71] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-system]\ntag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-18T17:51:26.343021+08:00"},{"seq":80,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:51:26.343 [INFO] [orchestrator:a99f5b71] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-system:develop-6a5057d","timestamp":"2026-08-18T17:51:26.343183+08:00"},{"seq":81,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:51:26.346 [INFO] [orchestrator:a99f5b71] 🔨 构建服务: fanson/fscp-billing → 镜像标签 fanson/fscp-billing:develop-6a5057d","timestamp":"2026-08-18T17:51:26.346285+08:00"},{"seq":82,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:51:26.346 [INFO] [orchestrator:a99f5b71] 已自动注入 -pl fscp-modules/fscp-billing -am: mvn -pl fscp-modules/fscp-billing -am clean package -DskipTests","timestamp":"2026-08-18T17:51:26.346407+08:00"},{"seq":83,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:26.346 [INFO] [docker:a99f5b71] building docker.fanson.cloud/fanson/fscp-billing:develop-6a5057d (skipping buildx — already known to fail)","timestamp":"2026-08-18T17:51:26.346800+08:00"},{"seq":84,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:26.786 [INFO] [docker:a99f5b71] #1 DONE 0.2s","timestamp":"2026-08-18T17:51:26.786939+08:00"},{"seq":85,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.229 [INFO] [docker:a99f5b71] #3 DONE 0.4s","timestamp":"2026-08-18T17:51:27.229399+08:00"},{"seq":86,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.428 [INFO] [docker:a99f5b71] #2 DONE 0.6s","timestamp":"2026-08-18T17:51:27.428504+08:00"},{"seq":87,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.594 [INFO] [docker:a99f5b71] #4 DONE 0.2s","timestamp":"2026-08-18T17:51:27.594063+08:00"},{"seq":88,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.717 [INFO] [docker:a99f5b71] #5 DONE 0.0s","timestamp":"2026-08-18T17:51:27.717777+08:00"},{"seq":89,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.717 [INFO] [docker:a99f5b71] #6 DONE 0.0s","timestamp":"2026-08-18T17:51:27.717903+08:00"},{"seq":90,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:27.892 [INFO] [docker:a99f5b71] #7 DONE 0.2s","timestamp":"2026-08-18T17:51:27.892642+08:00"},{"seq":91,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:28.099 [INFO] [docker:a99f5b71] #8 CACHED","timestamp":"2026-08-18T17:51:28.099480+08:00"},{"seq":92,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:28.099 [INFO] [docker:a99f5b71] #9 CACHED","timestamp":"2026-08-18T17:51:28.099592+08:00"},{"seq":93,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:28.099 [INFO] [docker:a99f5b71] #10 CACHED","timestamp":"2026-08-18T17:51:28.099685+08:00"},{"seq":94,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:28.099 [INFO] [docker:a99f5b71] #11 CACHED","timestamp":"2026-08-18T17:51:28.099788+08:00"},{"seq":95,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:29.695 [INFO] [docker:a99f5b71] #12 DONE 1.7s","timestamp":"2026-08-18T17:51:29.695132+08:00"},{"seq":96,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:45.108 [INFO] [docker:a99f5b71] #13 DONE 15.4s","timestamp":"2026-08-18T17:51:45.108838+08:00"},{"seq":97,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:45.574 [INFO] [docker:a99f5b71] #14 CACHED","timestamp":"2026-08-18T17:51:45.574126+08:00"},{"seq":98,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:48.072 [INFO] [docker:a99f5b71] #15 DONE 2.5s","timestamp":"2026-08-18T17:51:48.072258+08:00"},{"seq":99,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:49.288 [INFO] [docker:a99f5b71] #16 DONE 1.1s","timestamp":"2026-08-18T17:51:49.288453+08:00"},{"seq":100,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.171 [INFO] [docker:a99f5b71] build success: docker.fanson.cloud/fanson/fscp-billing:develop-6a5057d","timestamp":"2026-08-18T17:51:51.171952+08:00"},{"seq":101,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.172 [INFO] [docker:a99f5b71] pushing docker.fanson.cloud/fanson/fscp-billing:develop-6a5057d","timestamp":"2026-08-18T17:51:51.172079+08:00"},{"seq":102,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.211 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-18T17:51:51.211557+08:00"},{"seq":103,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 3de8d0978f44: Preparing","timestamp":"2026-08-18T17:51:51.317182+08:00"},{"seq":104,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 5f70bf18a086: Preparing","timestamp":"2026-08-18T17:51:51.317314+08:00"},{"seq":105,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 71a2618c0925: Preparing","timestamp":"2026-08-18T17:51:51.317403+08:00"},{"seq":106,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Preparing","timestamp":"2026-08-18T17:51:51.317486+08:00"},{"seq":107,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] cd4b3dc03178: Preparing","timestamp":"2026-08-18T17:51:51.317567+08:00"},{"seq":108,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] b4cfcb8385a8: Preparing","timestamp":"2026-08-18T17:51:51.317646+08:00"},{"seq":109,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 2b730cf18c09: Preparing","timestamp":"2026-08-18T17:51:51.317724+08:00"},{"seq":110,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] edeaba958753: Preparing","timestamp":"2026-08-18T17:51:51.317812+08:00"},{"seq":111,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 8bf42db0de72: Preparing","timestamp":"2026-08-18T17:51:51.317889+08:00"},{"seq":112,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.317 [INFO] [docker:a99f5b71] 31892cc314cb: Preparing","timestamp":"2026-08-18T17:51:51.317965+08:00"},{"seq":113,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] 11936051f93b: Preparing","timestamp":"2026-08-18T17:51:51.318041+08:00"},{"seq":114,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] b4cfcb8385a8: Waiting","timestamp":"2026-08-18T17:51:51.318117+08:00"},{"seq":115,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] 2b730cf18c09: Waiting","timestamp":"2026-08-18T17:51:51.318192+08:00"},{"seq":116,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] edeaba958753: Waiting","timestamp":"2026-08-18T17:51:51.318267+08:00"},{"seq":117,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] 11936051f93b: Waiting","timestamp":"2026-08-18T17:51:51.318344+08:00"},{"seq":118,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] 8bf42db0de72: Waiting","timestamp":"2026-08-18T17:51:51.318420+08:00"},{"seq":119,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.318 [INFO] [docker:a99f5b71] 31892cc314cb: Waiting","timestamp":"2026-08-18T17:51:51.318497+08:00"},{"seq":120,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.615 [INFO] [docker:a99f5b71] 5f70bf18a086: Layer already exists","timestamp":"2026-08-18T17:51:51.615993+08:00"},{"seq":121,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.707 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-18T17:51:51.707437+08:00"},{"seq":122,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.707 [INFO] [docker:a99f5b71] 71a2618c0925: Layer already exists","timestamp":"2026-08-18T17:51:51.707598+08:00"},{"seq":123,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.708 [INFO] [docker:a99f5b71] cd4b3dc03178: Layer already exists","timestamp":"2026-08-18T17:51:51.708389+08:00"},{"seq":124,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.749 [INFO] [docker:a99f5b71] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-18T17:51:51.749228+08:00"},{"seq":125,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.840 [INFO] [docker:a99f5b71] edeaba958753: Layer already exists","timestamp":"2026-08-18T17:51:51.840147+08:00"},{"seq":126,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.840 [INFO] [docker:a99f5b71] 8bf42db0de72: Layer already exists","timestamp":"2026-08-18T17:51:51.840336+08:00"},{"seq":127,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.840 [INFO] [docker:a99f5b71] 2b730cf18c09: Layer already exists","timestamp":"2026-08-18T17:51:51.840454+08:00"},{"seq":128,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.882 [INFO] [docker:a99f5b71] 31892cc314cb: Layer already exists","timestamp":"2026-08-18T17:51:51.882120+08:00"},{"seq":129,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:51:51.916 [INFO] [docker:a99f5b71] 11936051f93b: Layer already exists","timestamp":"2026-08-18T17:51:51.916039+08:00"},{"seq":130,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:03.292 [INFO] [docker:a99f5b71] 3de8d0978f44: Pushed","timestamp":"2026-08-18T17:52:03.292504+08:00"},{"seq":131,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:04.107 [INFO] [docker:a99f5b71] develop-6a5057d: digest: sha256:b324f564c0026fe81549ddfbe6ef1ee843dde51f23a7b2a1d3a924a0a18918b9 size: 2629","timestamp":"2026-08-18T17:52:04.107092+08:00"},{"seq":132,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:04.207 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-18T17:52:04.207822+08:00"},{"seq":133,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:04.242 [INFO] [docker:a99f5b71] tag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-18T17:52:04.242449+08:00"},{"seq":134,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 17:52:04.243 [ERROR] [docker:a99f5b71] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]\ntag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-18T17:52:04.243314+08:00"},{"seq":135,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 17:52:04.243 [WARNING] [docker:a99f5b71] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]\ntag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-18T17:52:04.243751+08:00"},{"seq":136,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:52:04.243 [INFO] [orchestrator:a99f5b71] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-billing:develop-6a5057d","timestamp":"2026-08-18T17:52:04.243862+08:00"},{"seq":137,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:52:04.247 [INFO] [orchestrator:a99f5b71] 🔨 构建服务: fanson/fscp-tenant → 镜像标签 fanson/fscp-tenant:develop-6a5057d","timestamp":"2026-08-18T17:52:04.247289+08:00"},{"seq":138,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:52:04.247 [INFO] [orchestrator:a99f5b71] 已自动注入 -pl fscp-modules/fscp-tenant -am: mvn -pl fscp-modules/fscp-tenant -am clean package -DskipTests","timestamp":"2026-08-18T17:52:04.247404+08:00"},{"seq":139,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:04.247 [INFO] [docker:a99f5b71] building docker.fanson.cloud/fanson/fscp-tenant:develop-6a5057d (skipping buildx — already known to fail)","timestamp":"2026-08-18T17:52:04.247780+08:00"},{"seq":140,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:04.746 [INFO] [docker:a99f5b71] #1 DONE 0.2s","timestamp":"2026-08-18T17:52:04.746417+08:00"},{"seq":141,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:05.089 [INFO] [docker:a99f5b71] #2 DONE 0.3s","timestamp":"2026-08-18T17:52:05.089304+08:00"},{"seq":142,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:05.830 [INFO] [docker:a99f5b71] #3 DONE 1.0s","timestamp":"2026-08-18T17:52:05.830176+08:00"},{"seq":143,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.006 [INFO] [docker:a99f5b71] #4 DONE 0.2s","timestamp":"2026-08-18T17:52:06.006990+08:00"},{"seq":144,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.133 [INFO] [docker:a99f5b71] #5 DONE 0.0s","timestamp":"2026-08-18T17:52:06.133652+08:00"},{"seq":145,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.133 [INFO] [docker:a99f5b71] #6 DONE 0.0s","timestamp":"2026-08-18T17:52:06.133793+08:00"},{"seq":146,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.294 [INFO] [docker:a99f5b71] #7 DONE 0.2s","timestamp":"2026-08-18T17:52:06.294525+08:00"},{"seq":147,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.501 [INFO] [docker:a99f5b71] #8 CACHED","timestamp":"2026-08-18T17:52:06.501346+08:00"},{"seq":148,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.501 [INFO] [docker:a99f5b71] #9 CACHED","timestamp":"2026-08-18T17:52:06.501459+08:00"},{"seq":149,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.501 [INFO] [docker:a99f5b71] #10 CACHED","timestamp":"2026-08-18T17:52:06.501554+08:00"},{"seq":150,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:06.501 [INFO] [docker:a99f5b71] #11 CACHED","timestamp":"2026-08-18T17:52:06.501649+08:00"},{"seq":151,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:08.141 [INFO] [docker:a99f5b71] #12 DONE 1.8s","timestamp":"2026-08-18T17:52:08.141116+08:00"},{"seq":152,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:22.836 [INFO] [docker:a99f5b71] #13 DONE 14.6s","timestamp":"2026-08-18T17:52:22.836165+08:00"},{"seq":153,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:23.161 [INFO] [docker:a99f5b71] #14 CACHED","timestamp":"2026-08-18T17:52:23.161566+08:00"},{"seq":154,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:25.058 [INFO] [docker:a99f5b71] #15 DONE 1.9s","timestamp":"2026-08-18T17:52:25.058705+08:00"},{"seq":155,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:26.109 [INFO] [docker:a99f5b71] #16 DONE 1.0s","timestamp":"2026-08-18T17:52:26.109071+08:00"},{"seq":156,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.008 [INFO] [docker:a99f5b71] build success: docker.fanson.cloud/fanson/fscp-tenant:develop-6a5057d","timestamp":"2026-08-18T17:52:27.008198+08:00"},{"seq":157,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.008 [INFO] [docker:a99f5b71] pushing docker.fanson.cloud/fanson/fscp-tenant:develop-6a5057d","timestamp":"2026-08-18T17:52:27.008301+08:00"},{"seq":158,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.046 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-18T17:52:27.046429+08:00"},{"seq":159,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.079 [INFO] [docker:a99f5b71] 5b7f65c0075c: Preparing","timestamp":"2026-08-18T17:52:27.079790+08:00"},{"seq":160,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.079 [INFO] [docker:a99f5b71] 5f70bf18a086: Preparing","timestamp":"2026-08-18T17:52:27.079976+08:00"},{"seq":161,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 71a2618c0925: Preparing","timestamp":"2026-08-18T17:52:27.080071+08:00"},{"seq":162,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Preparing","timestamp":"2026-08-18T17:52:27.080161+08:00"},{"seq":163,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] cd4b3dc03178: Preparing","timestamp":"2026-08-18T17:52:27.080248+08:00"},{"seq":164,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] b4cfcb8385a8: Preparing","timestamp":"2026-08-18T17:52:27.080333+08:00"},{"seq":165,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 2b730cf18c09: Preparing","timestamp":"2026-08-18T17:52:27.080422+08:00"},{"seq":166,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] edeaba958753: Preparing","timestamp":"2026-08-18T17:52:27.080508+08:00"},{"seq":167,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 8bf42db0de72: Preparing","timestamp":"2026-08-18T17:52:27.080593+08:00"},{"seq":168,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 31892cc314cb: Preparing","timestamp":"2026-08-18T17:52:27.080677+08:00"},{"seq":169,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 11936051f93b: Preparing","timestamp":"2026-08-18T17:52:27.080771+08:00"},{"seq":170,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] b4cfcb8385a8: Waiting","timestamp":"2026-08-18T17:52:27.080855+08:00"},{"seq":171,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.080 [INFO] [docker:a99f5b71] 31892cc314cb: Waiting","timestamp":"2026-08-18T17:52:27.080936+08:00"},{"seq":172,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.081 [INFO] [docker:a99f5b71] 11936051f93b: Waiting","timestamp":"2026-08-18T17:52:27.081017+08:00"},{"seq":173,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.081 [INFO] [docker:a99f5b71] 2b730cf18c09: Waiting","timestamp":"2026-08-18T17:52:27.081099+08:00"},{"seq":174,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.081 [INFO] [docker:a99f5b71] edeaba958753: Waiting","timestamp":"2026-08-18T17:52:27.081180+08:00"},{"seq":175,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.081 [INFO] [docker:a99f5b71] 8bf42db0de72: Waiting","timestamp":"2026-08-18T17:52:27.081262+08:00"},{"seq":176,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.375 [INFO] [docker:a99f5b71] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-18T17:52:27.375046+08:00"},{"seq":177,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.466 [INFO] [docker:a99f5b71] cd4b3dc03178: Layer already exists","timestamp":"2026-08-18T17:52:27.466893+08:00"},{"seq":178,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.466 [INFO] [docker:a99f5b71] 71a2618c0925: Layer already exists","timestamp":"2026-08-18T17:52:27.467000+08:00"},{"seq":179,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.467 [INFO] [docker:a99f5b71] 5f70bf18a086: Layer already exists","timestamp":"2026-08-18T17:52:27.467535+08:00"},{"seq":180,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.486 [INFO] [docker:a99f5b71] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-18T17:52:27.486157+08:00"},{"seq":181,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.586 [INFO] [docker:a99f5b71] edeaba958753: Layer already exists","timestamp":"2026-08-18T17:52:27.586052+08:00"},{"seq":182,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.598 [INFO] [docker:a99f5b71] 2b730cf18c09: Layer already exists","timestamp":"2026-08-18T17:52:27.598306+08:00"},{"seq":183,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.598 [INFO] [docker:a99f5b71] 8bf42db0de72: Layer already exists","timestamp":"2026-08-18T17:52:27.598418+08:00"},{"seq":184,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.598 [INFO] [docker:a99f5b71] 31892cc314cb: Layer already exists","timestamp":"2026-08-18T17:52:27.598545+08:00"},{"seq":185,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:27.676 [INFO] [docker:a99f5b71] 11936051f93b: Layer already exists","timestamp":"2026-08-18T17:52:27.676758+08:00"},{"seq":186,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:36.000 [INFO] [docker:a99f5b71] 5b7f65c0075c: Pushed","timestamp":"2026-08-18T17:52:36.000042+08:00"},{"seq":187,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:36.803 [INFO] [docker:a99f5b71] develop-6a5057d: digest: sha256:1298403df897bbf32da97e4a33116a2aef7b9aa913535c38673c498b59dcca38 size: 2628","timestamp":"2026-08-18T17:52:36.803450+08:00"},{"seq":188,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:36.891 [INFO] [docker:a99f5b71] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-18T17:52:36.891542+08:00"},{"seq":189,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 17:52:36.927 [INFO] [docker:a99f5b71] tag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-18T17:52:36.927031+08:00"},{"seq":190,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 17:52:36.927 [ERROR] [docker:a99f5b71] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]\ntag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-18T17:52:36.927849+08:00"},{"seq":191,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 17:52:36.928 [WARNING] [docker:a99f5b71] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]\ntag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-18T17:52:36.928162+08:00"},{"seq":192,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 17:52:36.928 [INFO] [orchestrator:a99f5b71] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-tenant:develop-6a5057d","timestamp":"2026-08-18T17:52:36.928256+08:00"},{"seq":193,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 17:52:36.965 [INFO] [agent:a99f5b71] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da, docker.fanson.cloud/fanson/fscp-auth:develop-6db0579, docker.fanson.cloud/fanson/fscp-system:develop-6a5057d, docker.fanson.cloud/fanson/fscp-billing:develop-6a5057d, docker.fanson.cloud/fanson/fscp-tenant:develop-6a5057d","timestamp":"2026-08-18T17:52:36.965826+08:00"},{"seq":194,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 17:52:36.992 [INFO] [agent:a99f5b71] workspace cleaned","timestamp":"2026-08-18T17:52:36.992289+08:00"}]}