{"job_id":"a112b0ae-01bd-4c4a-8986-5c49d6e847b7","filters":{"level":null,"component":null},"total":193,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-21 10:36:57.879 [INFO] [agent:a112b0ae] 🚀 CI 流水线启动","timestamp":"2026-08-21T10:36:57.879396+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:36:57.879 [INFO] [git:a112b0ae] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/a112b0ae-01bd-4c4a-8986-5c49d6e847b7 (branch=develop)","timestamp":"2026-08-21T10:36:57.879761+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:36:59.187 [INFO] [git:a112b0ae] Cloning into '/app/data/workspace/a112b0ae-01bd-4c4a-8986-5c49d6e847b7'...","timestamp":"2026-08-21T10:36:59.187586+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:36:59.187 [INFO] [git:a112b0ae] git clone success: /app/data/workspace/a112b0ae-01bd-4c4a-8986-5c49d6e847b7","timestamp":"2026-08-21T10:36:59.187683+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-21 10:36:59.187 [INFO] [agent:a112b0ae] 📦 代码已克隆到 /app/data/workspace/a112b0ae-01bd-4c4a-8986-5c49d6e847b7","timestamp":"2026-08-21T10:36:59.187989+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:36:59.190 [INFO] [orchestrator:a112b0ae] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-21T10:36:59.190459+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:36:59.685 [INFO] [orchestrator:a112b0ae] 📝 检测到变更的目录: fscp-modules, fscp-modules/fscp-billing","timestamp":"2026-08-21T10:36:59.685927+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:36:59.689 [INFO] [git:a112b0ae] 目录 fscp-gateway 代码指纹: df7c7da","timestamp":"2026-08-21T10:36:59.689158+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:00.152 [INFO] [docker:a112b0ae] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da（跳过构建）","timestamp":"2026-08-21T10:37:00.152616+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:00.152 [INFO] [orchestrator:a112b0ae] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-df7c7da 已存在，代码指纹 df7c7da)","timestamp":"2026-08-21T10:37:00.152756+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:37:00.156 [INFO] [git:a112b0ae] 目录 fscp-auth 代码指纹: 6db0579","timestamp":"2026-08-21T10:37:00.156593+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:00.526 [INFO] [docker:a112b0ae] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579（跳过构建）","timestamp":"2026-08-21T10:37:00.526423+08:00"},{"seq":13,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:00.526 [INFO] [orchestrator:a112b0ae] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-6db0579 已存在，代码指纹 6db0579)","timestamp":"2026-08-21T10:37:00.526545+08:00"},{"seq":14,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:37:00.530 [INFO] [git:a112b0ae] 目录 fscp-modules 代码指纹: 5df56f8","timestamp":"2026-08-21T10:37:00.530031+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:37:01.161 [INFO] [git:a112b0ae] 目录 fscp-modules 代码指纹: 5df56f8","timestamp":"2026-08-21T10:37:01.161362+08:00"},{"seq":16,"level":"INFO","component":"git","message":"[git] 2026-08-21 10:37:01.784 [INFO] [git:a112b0ae] 目录 fscp-modules 代码指纹: 5df56f8","timestamp":"2026-08-21T10:37:01.784184+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:02.411 [INFO] [orchestrator:a112b0ae] 🔨 开始构建 3 个服务","timestamp":"2026-08-21T10:37:02.411268+08:00"},{"seq":18,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:02.414 [INFO] [orchestrator:a112b0ae] 🔨 构建服务: fanson/fscp-system → 镜像标签 fanson/fscp-system:develop-5df56f8","timestamp":"2026-08-21T10:37:02.414692+08:00"},{"seq":19,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:02.414 [INFO] [orchestrator:a112b0ae] 已自动注入 -pl fscp-modules/fscp-system -am: mvn -pl fscp-modules/fscp-system -am clean package -DskipTests","timestamp":"2026-08-21T10:37:02.414888+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:02.415 [INFO] [docker:a112b0ae] building docker.fanson.cloud/fanson/fscp-system:develop-5df56f8 (with cache)","timestamp":"2026-08-21T10:37:02.415377+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:02.936 [INFO] [docker:a112b0ae] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-21T10:37:02.936733+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:02.936 [INFO] [docker:a112b0ae] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-21T10:37:02.936874+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:02.936 [INFO] [docker:a112b0ae] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-21T10:37:02.936980+08:00"},{"seq":24,"level":"ERROR","component":"docker","message":"[docker] 2026-08-21 10:37:02.938 [ERROR] [docker:a112b0ae] 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-21T10:37:02.938674+08:00"},{"seq":25,"level":"WARNING","component":"docker","message":"[docker] 2026-08-21 10:37:02.939 [WARNING] [docker:a112b0ae] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-21T10:37:02.939027+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:02.939 [INFO] [docker:a112b0ae] building docker.fanson.cloud/fanson/fscp-system:develop-5df56f8 (native docker build)","timestamp":"2026-08-21T10:37:02.939122+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:04.080 [INFO] [docker:a112b0ae] #1 DONE 0.6s","timestamp":"2026-08-21T10:37:04.080705+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:04.543 [INFO] [docker:a112b0ae] #3 DONE 0.4s","timestamp":"2026-08-21T10:37:04.543958+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:04.717 [INFO] [docker:a112b0ae] #2 DONE 0.4s","timestamp":"2026-08-21T10:37:04.717327+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:05.096 [INFO] [docker:a112b0ae] #4 DONE 0.5s","timestamp":"2026-08-21T10:37:05.096722+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:05.316 [INFO] [docker:a112b0ae] #5 DONE 0.0s","timestamp":"2026-08-21T10:37:05.316218+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:05.316 [INFO] [docker:a112b0ae] #6 DONE 0.0s","timestamp":"2026-08-21T10:37:05.316343+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:06.014 [INFO] [docker:a112b0ae] #7 DONE 0.8s","timestamp":"2026-08-21T10:37:06.014383+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:06.212 [INFO] [docker:a112b0ae] #8 CACHED","timestamp":"2026-08-21T10:37:06.212622+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:06.212 [INFO] [docker:a112b0ae] #9 CACHED","timestamp":"2026-08-21T10:37:06.212772+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:06.212 [INFO] [docker:a112b0ae] #10 CACHED","timestamp":"2026-08-21T10:37:06.212896+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:06.212 [INFO] [docker:a112b0ae] #11 CACHED","timestamp":"2026-08-21T10:37:06.213003+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:08.309 [INFO] [docker:a112b0ae] #12 DONE 2.2s","timestamp":"2026-08-21T10:37:08.309204+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:23.606 [INFO] [docker:a112b0ae] #13 DONE 15.2s","timestamp":"2026-08-21T10:37:23.606371+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:24.093 [INFO] [docker:a112b0ae] #14 CACHED","timestamp":"2026-08-21T10:37:24.093772+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:26.326 [INFO] [docker:a112b0ae] #15 DONE 2.2s","timestamp":"2026-08-21T10:37:26.326497+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:27.454 [INFO] [docker:a112b0ae] #16 DONE 1.0s","timestamp":"2026-08-21T10:37:27.454368+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.132 [INFO] [docker:a112b0ae] build success: docker.fanson.cloud/fanson/fscp-system:develop-5df56f8","timestamp":"2026-08-21T10:37:28.132195+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.132 [INFO] [docker:a112b0ae] pushing docker.fanson.cloud/fanson/fscp-system:develop-5df56f8","timestamp":"2026-08-21T10:37:28.132319+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.169 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-21T10:37:28.169208+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] dd35c84c6cdb: Preparing","timestamp":"2026-08-21T10:37:28.204143+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 5f70bf18a086: Preparing","timestamp":"2026-08-21T10:37:28.204277+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 71a2618c0925: Preparing","timestamp":"2026-08-21T10:37:28.204369+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Preparing","timestamp":"2026-08-21T10:37:28.204456+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] cd4b3dc03178: Preparing","timestamp":"2026-08-21T10:37:28.204541+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] b4cfcb8385a8: Preparing","timestamp":"2026-08-21T10:37:28.204623+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 2b730cf18c09: Preparing","timestamp":"2026-08-21T10:37:28.204703+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] edeaba958753: Preparing","timestamp":"2026-08-21T10:37:28.204797+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 8bf42db0de72: Preparing","timestamp":"2026-08-21T10:37:28.204877+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.204 [INFO] [docker:a112b0ae] 31892cc314cb: Preparing","timestamp":"2026-08-21T10:37:28.204956+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] 11936051f93b: Preparing","timestamp":"2026-08-21T10:37:28.205036+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] b4cfcb8385a8: Waiting","timestamp":"2026-08-21T10:37:28.205117+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] 2b730cf18c09: Waiting","timestamp":"2026-08-21T10:37:28.205195+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] edeaba958753: Waiting","timestamp":"2026-08-21T10:37:28.205274+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] 31892cc314cb: Waiting","timestamp":"2026-08-21T10:37:28.205352+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] 8bf42db0de72: Waiting","timestamp":"2026-08-21T10:37:28.205430+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.205 [INFO] [docker:a112b0ae] 11936051f93b: Waiting","timestamp":"2026-08-21T10:37:28.205507+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.546 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-21T10:37:28.546323+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.593 [INFO] [docker:a112b0ae] cd4b3dc03178: Layer already exists","timestamp":"2026-08-21T10:37:28.593210+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.593 [INFO] [docker:a112b0ae] 5f70bf18a086: Layer already exists","timestamp":"2026-08-21T10:37:28.593712+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.594 [INFO] [docker:a112b0ae] 71a2618c0925: Layer already exists","timestamp":"2026-08-21T10:37:28.594129+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.623 [INFO] [docker:a112b0ae] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-21T10:37:28.623983+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.714 [INFO] [docker:a112b0ae] edeaba958753: Layer already exists","timestamp":"2026-08-21T10:37:28.714977+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.733 [INFO] [docker:a112b0ae] 31892cc314cb: Layer already exists","timestamp":"2026-08-21T10:37:28.733115+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.733 [INFO] [docker:a112b0ae] 8bf42db0de72: Layer already exists","timestamp":"2026-08-21T10:37:28.733276+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.733 [INFO] [docker:a112b0ae] 2b730cf18c09: Layer already exists","timestamp":"2026-08-21T10:37:28.733372+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:28.820 [INFO] [docker:a112b0ae] 11936051f93b: Layer already exists","timestamp":"2026-08-21T10:37:28.820715+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:42.311 [INFO] [docker:a112b0ae] dd35c84c6cdb: Pushed","timestamp":"2026-08-21T10:37:42.311254+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.081 [INFO] [docker:a112b0ae] develop-5df56f8: digest: sha256:f31cf405973eb3067719870d75742787ed78bfa1e164cb8b0a1f2ef31b94f77b size: 2629","timestamp":"2026-08-21T10:37:43.081808+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.162 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-21T10:37:43.162764+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.198 [INFO] [docker:a112b0ae] tag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-21T10:37:43.198899+08:00"},{"seq":77,"level":"ERROR","component":"docker","message":"[docker] 2026-08-21 10:37:43.199 [ERROR] [docker:a112b0ae] 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-21T10:37:43.199710+08:00"},{"seq":78,"level":"WARNING","component":"docker","message":"[docker] 2026-08-21 10:37:43.200 [WARNING] [docker:a112b0ae] 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-21T10:37:43.200025+08:00"},{"seq":79,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:43.200 [INFO] [orchestrator:a112b0ae] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-system:develop-5df56f8","timestamp":"2026-08-21T10:37:43.200143+08:00"},{"seq":80,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:43.203 [INFO] [orchestrator:a112b0ae] 🔨 构建服务: fanson/fscp-billing → 镜像标签 fanson/fscp-billing:develop-5df56f8","timestamp":"2026-08-21T10:37:43.203306+08:00"},{"seq":81,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:37:43.203 [INFO] [orchestrator:a112b0ae] 已自动注入 -pl fscp-modules/fscp-billing -am: mvn -pl fscp-modules/fscp-billing -am clean package -DskipTests","timestamp":"2026-08-21T10:37:43.203414+08:00"},{"seq":82,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.203 [INFO] [docker:a112b0ae] building docker.fanson.cloud/fanson/fscp-billing:develop-5df56f8 (skipping buildx — already known to fail)","timestamp":"2026-08-21T10:37:43.203792+08:00"},{"seq":83,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.597 [INFO] [docker:a112b0ae] #1 DONE 0.2s","timestamp":"2026-08-21T10:37:43.597895+08:00"},{"seq":84,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.819 [INFO] [docker:a112b0ae] #3 DONE 0.2s","timestamp":"2026-08-21T10:37:43.819097+08:00"},{"seq":85,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:43.984 [INFO] [docker:a112b0ae] #2 DONE 0.4s","timestamp":"2026-08-21T10:37:43.984907+08:00"},{"seq":86,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.161 [INFO] [docker:a112b0ae] #4 DONE 0.2s","timestamp":"2026-08-21T10:37:44.161763+08:00"},{"seq":87,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.261 [INFO] [docker:a112b0ae] #5 DONE 0.0s","timestamp":"2026-08-21T10:37:44.261827+08:00"},{"seq":88,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.261 [INFO] [docker:a112b0ae] #6 DONE 0.0s","timestamp":"2026-08-21T10:37:44.261954+08:00"},{"seq":89,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.460 [INFO] [docker:a112b0ae] #7 DONE 0.3s","timestamp":"2026-08-21T10:37:44.460333+08:00"},{"seq":90,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.653 [INFO] [docker:a112b0ae] #8 CACHED","timestamp":"2026-08-21T10:37:44.653054+08:00"},{"seq":91,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.653 [INFO] [docker:a112b0ae] #9 CACHED","timestamp":"2026-08-21T10:37:44.653194+08:00"},{"seq":92,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.653 [INFO] [docker:a112b0ae] #10 CACHED","timestamp":"2026-08-21T10:37:44.653305+08:00"},{"seq":93,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:44.653 [INFO] [docker:a112b0ae] #11 CACHED","timestamp":"2026-08-21T10:37:44.653413+08:00"},{"seq":94,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:37:46.307 [INFO] [docker:a112b0ae] #12 DONE 1.8s","timestamp":"2026-08-21T10:37:46.307011+08:00"},{"seq":95,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:01.709 [INFO] [docker:a112b0ae] #13 DONE 15.4s","timestamp":"2026-08-21T10:38:01.709674+08:00"},{"seq":96,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:02.107 [INFO] [docker:a112b0ae] #14 CACHED","timestamp":"2026-08-21T10:38:02.107278+08:00"},{"seq":97,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:04.352 [INFO] [docker:a112b0ae] #15 DONE 2.2s","timestamp":"2026-08-21T10:38:04.352346+08:00"},{"seq":98,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:05.469 [INFO] [docker:a112b0ae] #16 DONE 1.1s","timestamp":"2026-08-21T10:38:05.469141+08:00"},{"seq":99,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.213 [INFO] [docker:a112b0ae] build success: docker.fanson.cloud/fanson/fscp-billing:develop-5df56f8","timestamp":"2026-08-21T10:38:06.213514+08:00"},{"seq":100,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.213 [INFO] [docker:a112b0ae] pushing docker.fanson.cloud/fanson/fscp-billing:develop-5df56f8","timestamp":"2026-08-21T10:38:06.213629+08:00"},{"seq":101,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.253 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-21T10:38:06.253660+08:00"},{"seq":102,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 7e5699a1f459: Preparing","timestamp":"2026-08-21T10:38:06.285173+08:00"},{"seq":103,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 5f70bf18a086: Preparing","timestamp":"2026-08-21T10:38:06.285289+08:00"},{"seq":104,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 71a2618c0925: Preparing","timestamp":"2026-08-21T10:38:06.285400+08:00"},{"seq":105,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Preparing","timestamp":"2026-08-21T10:38:06.285501+08:00"},{"seq":106,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] cd4b3dc03178: Preparing","timestamp":"2026-08-21T10:38:06.285602+08:00"},{"seq":107,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] b4cfcb8385a8: Preparing","timestamp":"2026-08-21T10:38:06.285700+08:00"},{"seq":108,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 2b730cf18c09: Preparing","timestamp":"2026-08-21T10:38:06.285808+08:00"},{"seq":109,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] edeaba958753: Preparing","timestamp":"2026-08-21T10:38:06.285906+08:00"},{"seq":110,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.285 [INFO] [docker:a112b0ae] 8bf42db0de72: Preparing","timestamp":"2026-08-21T10:38:06.286002+08:00"},{"seq":111,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 31892cc314cb: Preparing","timestamp":"2026-08-21T10:38:06.286098+08:00"},{"seq":112,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 11936051f93b: Preparing","timestamp":"2026-08-21T10:38:06.286194+08:00"},{"seq":113,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 8bf42db0de72: Waiting","timestamp":"2026-08-21T10:38:06.286290+08:00"},{"seq":114,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] b4cfcb8385a8: Waiting","timestamp":"2026-08-21T10:38:06.286385+08:00"},{"seq":115,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 31892cc314cb: Waiting","timestamp":"2026-08-21T10:38:06.286479+08:00"},{"seq":116,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 2b730cf18c09: Waiting","timestamp":"2026-08-21T10:38:06.286575+08:00"},{"seq":117,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] 11936051f93b: Waiting","timestamp":"2026-08-21T10:38:06.286670+08:00"},{"seq":118,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.286 [INFO] [docker:a112b0ae] edeaba958753: Waiting","timestamp":"2026-08-21T10:38:06.286775+08:00"},{"seq":119,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.591 [INFO] [docker:a112b0ae] cd4b3dc03178: Layer already exists","timestamp":"2026-08-21T10:38:06.591637+08:00"},{"seq":120,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.661 [INFO] [docker:a112b0ae] 71a2618c0925: Layer already exists","timestamp":"2026-08-21T10:38:06.661072+08:00"},{"seq":121,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.661 [INFO] [docker:a112b0ae] 5f70bf18a086: Layer already exists","timestamp":"2026-08-21T10:38:06.661221+08:00"},{"seq":122,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.661 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-21T10:38:06.661312+08:00"},{"seq":123,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.702 [INFO] [docker:a112b0ae] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-21T10:38:06.702014+08:00"},{"seq":124,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.715 [INFO] [docker:a112b0ae] edeaba958753: Layer already exists","timestamp":"2026-08-21T10:38:06.715839+08:00"},{"seq":125,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.793 [INFO] [docker:a112b0ae] 2b730cf18c09: Layer already exists","timestamp":"2026-08-21T10:38:06.793651+08:00"},{"seq":126,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.793 [INFO] [docker:a112b0ae] 8bf42db0de72: Layer already exists","timestamp":"2026-08-21T10:38:06.793791+08:00"},{"seq":127,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.834 [INFO] [docker:a112b0ae] 31892cc314cb: Layer already exists","timestamp":"2026-08-21T10:38:06.834753+08:00"},{"seq":128,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:06.834 [INFO] [docker:a112b0ae] 11936051f93b: Layer already exists","timestamp":"2026-08-21T10:38:06.834879+08:00"},{"seq":129,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:21.477 [INFO] [docker:a112b0ae] 7e5699a1f459: Pushed","timestamp":"2026-08-21T10:38:21.477168+08:00"},{"seq":130,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:22.225 [INFO] [docker:a112b0ae] develop-5df56f8: digest: sha256:af12829f95262719d3c6a7abb8631084c3bf84777d4c2bccf96ef3ba6f5434ab size: 2629","timestamp":"2026-08-21T10:38:22.225297+08:00"},{"seq":131,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:22.319 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-21T10:38:22.319560+08:00"},{"seq":132,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:22.359 [INFO] [docker:a112b0ae] tag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-21T10:38:22.359339+08:00"},{"seq":133,"level":"ERROR","component":"docker","message":"[docker] 2026-08-21 10:38:22.360 [ERROR] [docker:a112b0ae] 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-21T10:38:22.360224+08:00"},{"seq":134,"level":"WARNING","component":"docker","message":"[docker] 2026-08-21 10:38:22.360 [WARNING] [docker:a112b0ae] 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-21T10:38:22.360608+08:00"},{"seq":135,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:38:22.360 [INFO] [orchestrator:a112b0ae] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-billing:develop-5df56f8","timestamp":"2026-08-21T10:38:22.360718+08:00"},{"seq":136,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:38:22.364 [INFO] [orchestrator:a112b0ae] 🔨 构建服务: fanson/fscp-tenant → 镜像标签 fanson/fscp-tenant:develop-5df56f8","timestamp":"2026-08-21T10:38:22.364455+08:00"},{"seq":137,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:38:22.364 [INFO] [orchestrator:a112b0ae] 已自动注入 -pl fscp-modules/fscp-tenant -am: mvn -pl fscp-modules/fscp-tenant -am clean package -DskipTests","timestamp":"2026-08-21T10:38:22.364619+08:00"},{"seq":138,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:22.365 [INFO] [docker:a112b0ae] building docker.fanson.cloud/fanson/fscp-tenant:develop-5df56f8 (skipping buildx — already known to fail)","timestamp":"2026-08-21T10:38:22.365023+08:00"},{"seq":139,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:22.817 [INFO] [docker:a112b0ae] #1 DONE 0.2s","timestamp":"2026-08-21T10:38:22.817806+08:00"},{"seq":140,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.238 [INFO] [docker:a112b0ae] #2 DONE 0.4s","timestamp":"2026-08-21T10:38:23.238160+08:00"},{"seq":141,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.370 [INFO] [docker:a112b0ae] #3 DONE 0.5s","timestamp":"2026-08-21T10:38:23.370909+08:00"},{"seq":142,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.514 [INFO] [docker:a112b0ae] #4 DONE 0.2s","timestamp":"2026-08-21T10:38:23.514540+08:00"},{"seq":143,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.636 [INFO] [docker:a112b0ae] #5 DONE 0.0s","timestamp":"2026-08-21T10:38:23.636296+08:00"},{"seq":144,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.636 [INFO] [docker:a112b0ae] #6 DONE 0.0s","timestamp":"2026-08-21T10:38:23.636484+08:00"},{"seq":145,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.779 [INFO] [docker:a112b0ae] #7 DONE 0.2s","timestamp":"2026-08-21T10:38:23.779971+08:00"},{"seq":146,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.975 [INFO] [docker:a112b0ae] #8 CACHED","timestamp":"2026-08-21T10:38:23.975506+08:00"},{"seq":147,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.975 [INFO] [docker:a112b0ae] #9 CACHED","timestamp":"2026-08-21T10:38:23.975620+08:00"},{"seq":148,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.975 [INFO] [docker:a112b0ae] #10 CACHED","timestamp":"2026-08-21T10:38:23.975717+08:00"},{"seq":149,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:23.975 [INFO] [docker:a112b0ae] #11 CACHED","timestamp":"2026-08-21T10:38:23.975821+08:00"},{"seq":150,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:25.505 [INFO] [docker:a112b0ae] #12 DONE 1.7s","timestamp":"2026-08-21T10:38:25.505328+08:00"},{"seq":151,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:39.647 [INFO] [docker:a112b0ae] #13 DONE 14.1s","timestamp":"2026-08-21T10:38:39.647079+08:00"},{"seq":152,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:40.025 [INFO] [docker:a112b0ae] #14 CACHED","timestamp":"2026-08-21T10:38:40.025128+08:00"},{"seq":153,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:41.814 [INFO] [docker:a112b0ae] #15 DONE 1.8s","timestamp":"2026-08-21T10:38:41.814368+08:00"},{"seq":154,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:42.875 [INFO] [docker:a112b0ae] #16 DONE 1.0s","timestamp":"2026-08-21T10:38:42.875835+08:00"},{"seq":155,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.719 [INFO] [docker:a112b0ae] build success: docker.fanson.cloud/fanson/fscp-tenant:develop-5df56f8","timestamp":"2026-08-21T10:38:43.719743+08:00"},{"seq":156,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.719 [INFO] [docker:a112b0ae] pushing docker.fanson.cloud/fanson/fscp-tenant:develop-5df56f8","timestamp":"2026-08-21T10:38:43.719859+08:00"},{"seq":157,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.757 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-21T10:38:43.757275+08:00"},{"seq":158,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 08043a416316: Preparing","timestamp":"2026-08-21T10:38:43.794009+08:00"},{"seq":159,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 5f70bf18a086: Preparing","timestamp":"2026-08-21T10:38:43.794118+08:00"},{"seq":160,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 71a2618c0925: Preparing","timestamp":"2026-08-21T10:38:43.794205+08:00"},{"seq":161,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Preparing","timestamp":"2026-08-21T10:38:43.794288+08:00"},{"seq":162,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] cd4b3dc03178: Preparing","timestamp":"2026-08-21T10:38:43.794368+08:00"},{"seq":163,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] b4cfcb8385a8: Preparing","timestamp":"2026-08-21T10:38:43.794447+08:00"},{"seq":164,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 2b730cf18c09: Preparing","timestamp":"2026-08-21T10:38:43.794524+08:00"},{"seq":165,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] edeaba958753: Preparing","timestamp":"2026-08-21T10:38:43.794602+08:00"},{"seq":166,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 8bf42db0de72: Preparing","timestamp":"2026-08-21T10:38:43.794680+08:00"},{"seq":167,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 31892cc314cb: Preparing","timestamp":"2026-08-21T10:38:43.794770+08:00"},{"seq":168,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] 11936051f93b: Preparing","timestamp":"2026-08-21T10:38:43.794850+08:00"},{"seq":169,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.794 [INFO] [docker:a112b0ae] b4cfcb8385a8: Waiting","timestamp":"2026-08-21T10:38:43.794927+08:00"},{"seq":170,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.795 [INFO] [docker:a112b0ae] 11936051f93b: Waiting","timestamp":"2026-08-21T10:38:43.795005+08:00"},{"seq":171,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.795 [INFO] [docker:a112b0ae] 2b730cf18c09: Waiting","timestamp":"2026-08-21T10:38:43.795081+08:00"},{"seq":172,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.795 [INFO] [docker:a112b0ae] edeaba958753: Waiting","timestamp":"2026-08-21T10:38:43.795157+08:00"},{"seq":173,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.795 [INFO] [docker:a112b0ae] 8bf42db0de72: Waiting","timestamp":"2026-08-21T10:38:43.795233+08:00"},{"seq":174,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:43.795 [INFO] [docker:a112b0ae] 31892cc314cb: Waiting","timestamp":"2026-08-21T10:38:43.795309+08:00"},{"seq":175,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.133 [INFO] [docker:a112b0ae] cd4b3dc03178: Layer already exists","timestamp":"2026-08-21T10:38:44.133335+08:00"},{"seq":176,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.211 [INFO] [docker:a112b0ae] 5f70bf18a086: Layer already exists","timestamp":"2026-08-21T10:38:44.211620+08:00"},{"seq":177,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.211 [INFO] [docker:a112b0ae] 71a2618c0925: Layer already exists","timestamp":"2026-08-21T10:38:44.211748+08:00"},{"seq":178,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.212 [INFO] [docker:a112b0ae] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-21T10:38:44.212234+08:00"},{"seq":179,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.241 [INFO] [docker:a112b0ae] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-21T10:38:44.241266+08:00"},{"seq":180,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.322 [INFO] [docker:a112b0ae] 8bf42db0de72: Layer already exists","timestamp":"2026-08-21T10:38:44.322400+08:00"},{"seq":181,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.381 [INFO] [docker:a112b0ae] 31892cc314cb: Layer already exists","timestamp":"2026-08-21T10:38:44.381675+08:00"},{"seq":182,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.381 [INFO] [docker:a112b0ae] edeaba958753: Layer already exists","timestamp":"2026-08-21T10:38:44.381807+08:00"},{"seq":183,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.382 [INFO] [docker:a112b0ae] 2b730cf18c09: Layer already exists","timestamp":"2026-08-21T10:38:44.382045+08:00"},{"seq":184,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:44.411 [INFO] [docker:a112b0ae] 11936051f93b: Layer already exists","timestamp":"2026-08-21T10:38:44.411560+08:00"},{"seq":185,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:53.720 [INFO] [docker:a112b0ae] 08043a416316: Pushed","timestamp":"2026-08-21T10:38:53.720298+08:00"},{"seq":186,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:54.479 [INFO] [docker:a112b0ae] develop-5df56f8: digest: sha256:7af696a5196dac95becaad865869e96e7ac964064a3160783123ff8ebe5b21d6 size: 2628","timestamp":"2026-08-21T10:38:54.479310+08:00"},{"seq":187,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:54.583 [INFO] [docker:a112b0ae] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-21T10:38:54.583556+08:00"},{"seq":188,"level":"INFO","component":"docker","message":"[docker] 2026-08-21 10:38:54.618 [INFO] [docker:a112b0ae] tag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-21T10:38:54.618470+08:00"},{"seq":189,"level":"ERROR","component":"docker","message":"[docker] 2026-08-21 10:38:54.619 [ERROR] [docker:a112b0ae] 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-21T10:38:54.619365+08:00"},{"seq":190,"level":"WARNING","component":"docker","message":"[docker] 2026-08-21 10:38:54.619 [WARNING] [docker:a112b0ae] 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-21T10:38:54.619707+08:00"},{"seq":191,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-21 10:38:54.619 [INFO] [orchestrator:a112b0ae] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-tenant:develop-5df56f8","timestamp":"2026-08-21T10:38:54.619817+08:00"},{"seq":192,"level":"INFO","component":"agent","message":"[agent] 2026-08-21 10:38:54.656 [INFO] [agent:a112b0ae] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da, docker.fanson.cloud/fanson/fscp-auth:develop-6db0579, docker.fanson.cloud/fanson/fscp-system:develop-5df56f8, docker.fanson.cloud/fanson/fscp-billing:develop-5df56f8, docker.fanson.cloud/fanson/fscp-tenant:develop-5df56f8","timestamp":"2026-08-21T10:38:54.656443+08:00"},{"seq":193,"level":"INFO","component":"agent","message":"[agent] 2026-08-21 10:38:54.683 [INFO] [agent:a112b0ae] workspace cleaned","timestamp":"2026-08-21T10:38:54.683086+08:00"}]}