{"job_id":"61a793e2-daff-48e1-b663-be60098dfe3f","filters":{"level":null,"component":null},"total":194,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 09:35:18.824 [INFO] [agent:61a793e2] 🚀 CI 流水线启动","timestamp":"2026-08-14T09:35:18.824356+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:18.824 [INFO] [git:61a793e2] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/61a793e2-daff-48e1-b663-be60098dfe3f (branch=develop)","timestamp":"2026-08-14T09:35:18.824694+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:20.071 [INFO] [git:61a793e2] Cloning into '/app/data/workspace/61a793e2-daff-48e1-b663-be60098dfe3f'...","timestamp":"2026-08-14T09:35:20.071290+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:20.071 [INFO] [git:61a793e2] git clone success: /app/data/workspace/61a793e2-daff-48e1-b663-be60098dfe3f","timestamp":"2026-08-14T09:35:20.071419+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 09:35:20.071 [INFO] [agent:61a793e2] 📦 代码已克隆到 /app/data/workspace/61a793e2-daff-48e1-b663-be60098dfe3f","timestamp":"2026-08-14T09:35:20.071792+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:20.074 [INFO] [orchestrator:61a793e2] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-14T09:35:20.074315+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:20.563 [INFO] [orchestrator:61a793e2] 📝 检测到变更的目录: \"sql, \"sql/, fscp-modules, fscp-modules/fscp-billing","timestamp":"2026-08-14T09:35:20.563742+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:20.567 [INFO] [git:61a793e2] 目录 fscp-gateway 代码指纹: 758e339","timestamp":"2026-08-14T09:35:20.567510+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:20.954 [INFO] [docker:61a793e2] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339（跳过构建）","timestamp":"2026-08-14T09:35:20.954935+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:20.955 [INFO] [orchestrator:61a793e2] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-758e339 已存在，代码指纹 758e339)","timestamp":"2026-08-14T09:35:20.955085+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:20.958 [INFO] [git:61a793e2] 目录 fscp-auth 代码指纹: f3e26ae","timestamp":"2026-08-14T09:35:20.958723+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:21.336 [INFO] [docker:61a793e2] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae（跳过构建）","timestamp":"2026-08-14T09:35:21.336122+08:00"},{"seq":13,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:21.336 [INFO] [orchestrator:61a793e2] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-f3e26ae 已存在，代码指纹 f3e26ae)","timestamp":"2026-08-14T09:35:21.336260+08:00"},{"seq":14,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:21.340 [INFO] [git:61a793e2] 目录 fscp-modules 代码指纹: f76c3f6","timestamp":"2026-08-14T09:35:21.340275+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:21.967 [INFO] [git:61a793e2] 目录 fscp-modules 代码指纹: f76c3f6","timestamp":"2026-08-14T09:35:21.967066+08:00"},{"seq":16,"level":"INFO","component":"git","message":"[git] 2026-08-14 09:35:22.596 [INFO] [git:61a793e2] 目录 fscp-modules 代码指纹: f76c3f6","timestamp":"2026-08-14T09:35:22.596598+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:23.216 [INFO] [orchestrator:61a793e2] 🔨 开始构建 3 个服务","timestamp":"2026-08-14T09:35:23.216642+08:00"},{"seq":18,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:23.220 [INFO] [orchestrator:61a793e2] 🔨 构建服务: fanson/fscp-system → 镜像标签 fanson/fscp-system:develop-f76c3f6","timestamp":"2026-08-14T09:35:23.220380+08:00"},{"seq":19,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:35:23.220 [INFO] [orchestrator:61a793e2] 已自动注入 -pl fscp-modules/fscp-system -am: mvn -pl fscp-modules/fscp-system -am clean package -DskipTests","timestamp":"2026-08-14T09:35:23.220510+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:23.220 [INFO] [docker:61a793e2] building docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6 (with cache)","timestamp":"2026-08-14T09:35:23.220853+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:23.550 [INFO] [docker:61a793e2] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-14T09:35:23.550303+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:23.550 [INFO] [docker:61a793e2] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-14T09:35:23.550431+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:23.550 [INFO] [docker:61a793e2] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-14T09:35:23.550533+08:00"},{"seq":24,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 09:35:23.552 [ERROR] [docker:61a793e2] 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-14T09:35:23.552493+08:00"},{"seq":25,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 09:35:23.552 [WARNING] [docker:61a793e2] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-14T09:35:23.552755+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:23.552 [INFO] [docker:61a793e2] building docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6 (native docker build)","timestamp":"2026-08-14T09:35:23.552845+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:24.360 [INFO] [docker:61a793e2] #1 DONE 0.5s","timestamp":"2026-08-14T09:35:24.360270+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:24.659 [INFO] [docker:61a793e2] #2 DONE 0.0s","timestamp":"2026-08-14T09:35:24.659085+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:25.012 [INFO] [docker:61a793e2] #4 DONE 0.6s","timestamp":"2026-08-14T09:35:25.012902+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:26.018 [INFO] [docker:61a793e2] #3 DONE 1.6s","timestamp":"2026-08-14T09:35:26.018972+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:26.527 [INFO] [docker:61a793e2] #5 DONE 0.5s","timestamp":"2026-08-14T09:35:26.527358+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:26.725 [INFO] [docker:61a793e2] #6 DONE 0.0s","timestamp":"2026-08-14T09:35:26.725370+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:26.725 [INFO] [docker:61a793e2] #7 DONE 0.0s","timestamp":"2026-08-14T09:35:26.725496+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:27.268 [INFO] [docker:61a793e2] #8 DONE 0.7s","timestamp":"2026-08-14T09:35:27.268347+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:27.455 [INFO] [docker:61a793e2] #9 CACHED","timestamp":"2026-08-14T09:35:27.455512+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:27.455 [INFO] [docker:61a793e2] #10 CACHED","timestamp":"2026-08-14T09:35:27.455648+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:27.455 [INFO] [docker:61a793e2] #11 CACHED","timestamp":"2026-08-14T09:35:27.455781+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:27.455 [INFO] [docker:61a793e2] #12 CACHED","timestamp":"2026-08-14T09:35:27.455887+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:29.103 [INFO] [docker:61a793e2] #13 DONE 1.8s","timestamp":"2026-08-14T09:35:29.103854+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:43.080 [INFO] [docker:61a793e2] #14 DONE 13.9s","timestamp":"2026-08-14T09:35:43.080231+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:43.494 [INFO] [docker:61a793e2] #15 CACHED","timestamp":"2026-08-14T09:35:43.494625+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:45.612 [INFO] [docker:61a793e2] #16 DONE 2.1s","timestamp":"2026-08-14T09:35:45.612354+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:46.928 [INFO] [docker:61a793e2] #17 DONE 1.2s","timestamp":"2026-08-14T09:35:46.928182+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.081 [INFO] [docker:61a793e2] build success: docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6","timestamp":"2026-08-14T09:35:48.081656+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.081 [INFO] [docker:61a793e2] pushing docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6","timestamp":"2026-08-14T09:35:48.081780+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.116 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-14T09:35:48.116201+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.149 [INFO] [docker:61a793e2] 2b8de1ec304e: Preparing","timestamp":"2026-08-14T09:35:48.149846+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.149 [INFO] [docker:61a793e2] 5f70bf18a086: Preparing","timestamp":"2026-08-14T09:35:48.149964+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 71a2618c0925: Preparing","timestamp":"2026-08-14T09:35:48.150051+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 6fc52eaf99f6: Preparing","timestamp":"2026-08-14T09:35:48.150134+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] cd4b3dc03178: Preparing","timestamp":"2026-08-14T09:35:48.150216+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] b4cfcb8385a8: Preparing","timestamp":"2026-08-14T09:35:48.150305+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 2b730cf18c09: Preparing","timestamp":"2026-08-14T09:35:48.150385+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] edeaba958753: Preparing","timestamp":"2026-08-14T09:35:48.150465+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 8bf42db0de72: Preparing","timestamp":"2026-08-14T09:35:48.150543+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 31892cc314cb: Preparing","timestamp":"2026-08-14T09:35:48.150621+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 11936051f93b: Preparing","timestamp":"2026-08-14T09:35:48.150699+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] b4cfcb8385a8: Waiting","timestamp":"2026-08-14T09:35:48.150792+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] 2b730cf18c09: Waiting","timestamp":"2026-08-14T09:35:48.150870+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.150 [INFO] [docker:61a793e2] edeaba958753: Waiting","timestamp":"2026-08-14T09:35:48.150947+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.151 [INFO] [docker:61a793e2] 8bf42db0de72: Waiting","timestamp":"2026-08-14T09:35:48.151025+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.151 [INFO] [docker:61a793e2] 31892cc314cb: Waiting","timestamp":"2026-08-14T09:35:48.151102+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.151 [INFO] [docker:61a793e2] 11936051f93b: Waiting","timestamp":"2026-08-14T09:35:48.151178+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.476 [INFO] [docker:61a793e2] 5f70bf18a086: Layer already exists","timestamp":"2026-08-14T09:35:48.476453+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.476 [INFO] [docker:61a793e2] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-14T09:35:48.476654+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.476 [INFO] [docker:61a793e2] 71a2618c0925: Layer already exists","timestamp":"2026-08-14T09:35:48.476781+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.477 [INFO] [docker:61a793e2] cd4b3dc03178: Layer already exists","timestamp":"2026-08-14T09:35:48.477271+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.571 [INFO] [docker:61a793e2] edeaba958753: Layer already exists","timestamp":"2026-08-14T09:35:48.571654+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.651 [INFO] [docker:61a793e2] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-14T09:35:48.651566+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.651 [INFO] [docker:61a793e2] 2b730cf18c09: Layer already exists","timestamp":"2026-08-14T09:35:48.651691+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.651 [INFO] [docker:61a793e2] 8bf42db0de72: Layer already exists","timestamp":"2026-08-14T09:35:48.651821+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.682 [INFO] [docker:61a793e2] 31892cc314cb: Layer already exists","timestamp":"2026-08-14T09:35:48.682758+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:35:48.736 [INFO] [docker:61a793e2] 11936051f93b: Layer already exists","timestamp":"2026-08-14T09:35:48.736222+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:01.983 [INFO] [docker:61a793e2] 2b8de1ec304e: Pushed","timestamp":"2026-08-14T09:36:01.983591+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:02.719 [INFO] [docker:61a793e2] develop-f76c3f6: digest: sha256:5026fb4e413e97e247ab01123a028c4f62a06528578742f090c34d9f4b97b720 size: 2629","timestamp":"2026-08-14T09:36:02.719709+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:02.811 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-14T09:36:02.811653+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:02.845 [INFO] [docker:61a793e2] tag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-14T09:36:02.845902+08:00"},{"seq":78,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 09:36:02.846 [ERROR] [docker:61a793e2] 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-14T09:36:02.846686+08:00"},{"seq":79,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 09:36:02.847 [WARNING] [docker:61a793e2] 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-14T09:36:02.847105+08:00"},{"seq":80,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:02.847 [INFO] [orchestrator:61a793e2] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6","timestamp":"2026-08-14T09:36:02.847238+08:00"},{"seq":81,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:02.850 [INFO] [orchestrator:61a793e2] 🔨 构建服务: fanson/fscp-billing → 镜像标签 fanson/fscp-billing:develop-f76c3f6","timestamp":"2026-08-14T09:36:02.850546+08:00"},{"seq":82,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:02.850 [INFO] [orchestrator:61a793e2] 已自动注入 -pl fscp-modules/fscp-billing -am: mvn -pl fscp-modules/fscp-billing -am clean package -DskipTests","timestamp":"2026-08-14T09:36:02.850663+08:00"},{"seq":83,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:02.850 [INFO] [docker:61a793e2] building docker.fanson.cloud/fanson/fscp-billing:develop-f76c3f6 (skipping buildx — already known to fail)","timestamp":"2026-08-14T09:36:02.850936+08:00"},{"seq":84,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:03.292 [INFO] [docker:61a793e2] #1 DONE 0.1s","timestamp":"2026-08-14T09:36:03.292796+08:00"},{"seq":85,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:03.757 [INFO] [docker:61a793e2] #3 DONE 0.4s","timestamp":"2026-08-14T09:36:03.757298+08:00"},{"seq":86,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:03.945 [INFO] [docker:61a793e2] #2 DONE 0.6s","timestamp":"2026-08-14T09:36:03.945308+08:00"},{"seq":87,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.133 [INFO] [docker:61a793e2] #4 DONE 0.2s","timestamp":"2026-08-14T09:36:04.133243+08:00"},{"seq":88,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.246 [INFO] [docker:61a793e2] #5 DONE 0.0s","timestamp":"2026-08-14T09:36:04.246298+08:00"},{"seq":89,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.246 [INFO] [docker:61a793e2] #6 DONE 0.0s","timestamp":"2026-08-14T09:36:04.246428+08:00"},{"seq":90,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.398 [INFO] [docker:61a793e2] #7 DONE 0.2s","timestamp":"2026-08-14T09:36:04.398504+08:00"},{"seq":91,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.583 [INFO] [docker:61a793e2] #8 CACHED","timestamp":"2026-08-14T09:36:04.583049+08:00"},{"seq":92,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.583 [INFO] [docker:61a793e2] #9 CACHED","timestamp":"2026-08-14T09:36:04.583161+08:00"},{"seq":93,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.583 [INFO] [docker:61a793e2] #10 CACHED","timestamp":"2026-08-14T09:36:04.583256+08:00"},{"seq":94,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:04.583 [INFO] [docker:61a793e2] #11 CACHED","timestamp":"2026-08-14T09:36:04.583347+08:00"},{"seq":95,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:06.145 [INFO] [docker:61a793e2] #12 DONE 1.7s","timestamp":"2026-08-14T09:36:06.145739+08:00"},{"seq":96,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:21.305 [INFO] [docker:61a793e2] #13 DONE 15.1s","timestamp":"2026-08-14T09:36:21.305119+08:00"},{"seq":97,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:21.807 [INFO] [docker:61a793e2] #14 CACHED","timestamp":"2026-08-14T09:36:21.807670+08:00"},{"seq":98,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:23.947 [INFO] [docker:61a793e2] #15 DONE 2.1s","timestamp":"2026-08-14T09:36:23.947825+08:00"},{"seq":99,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:26.159 [INFO] [docker:61a793e2] #16 DONE 2.1s","timestamp":"2026-08-14T09:36:26.159222+08:00"},{"seq":100,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.345 [INFO] [docker:61a793e2] build success: docker.fanson.cloud/fanson/fscp-billing:develop-f76c3f6","timestamp":"2026-08-14T09:36:27.345986+08:00"},{"seq":101,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.346 [INFO] [docker:61a793e2] pushing docker.fanson.cloud/fanson/fscp-billing:develop-f76c3f6","timestamp":"2026-08-14T09:36:27.346112+08:00"},{"seq":102,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.382 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-14T09:36:27.382384+08:00"},{"seq":103,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 4aec86af0e7b: Preparing","timestamp":"2026-08-14T09:36:27.417190+08:00"},{"seq":104,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 5f70bf18a086: Preparing","timestamp":"2026-08-14T09:36:27.417350+08:00"},{"seq":105,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 71a2618c0925: Preparing","timestamp":"2026-08-14T09:36:27.417443+08:00"},{"seq":106,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 6fc52eaf99f6: Preparing","timestamp":"2026-08-14T09:36:27.417527+08:00"},{"seq":107,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] cd4b3dc03178: Preparing","timestamp":"2026-08-14T09:36:27.417607+08:00"},{"seq":108,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] b4cfcb8385a8: Preparing","timestamp":"2026-08-14T09:36:27.417687+08:00"},{"seq":109,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 2b730cf18c09: Preparing","timestamp":"2026-08-14T09:36:27.417775+08:00"},{"seq":110,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] edeaba958753: Preparing","timestamp":"2026-08-14T09:36:27.417854+08:00"},{"seq":111,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.417 [INFO] [docker:61a793e2] 8bf42db0de72: Preparing","timestamp":"2026-08-14T09:36:27.417937+08:00"},{"seq":112,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 31892cc314cb: Preparing","timestamp":"2026-08-14T09:36:27.418015+08:00"},{"seq":113,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 11936051f93b: Preparing","timestamp":"2026-08-14T09:36:27.418092+08:00"},{"seq":114,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 8bf42db0de72: Waiting","timestamp":"2026-08-14T09:36:27.418169+08:00"},{"seq":115,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 2b730cf18c09: Waiting","timestamp":"2026-08-14T09:36:27.418245+08:00"},{"seq":116,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] edeaba958753: Waiting","timestamp":"2026-08-14T09:36:27.418321+08:00"},{"seq":117,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 31892cc314cb: Waiting","timestamp":"2026-08-14T09:36:27.418397+08:00"},{"seq":118,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] b4cfcb8385a8: Waiting","timestamp":"2026-08-14T09:36:27.418472+08:00"},{"seq":119,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.418 [INFO] [docker:61a793e2] 11936051f93b: Waiting","timestamp":"2026-08-14T09:36:27.418547+08:00"},{"seq":120,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.724 [INFO] [docker:61a793e2] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-14T09:36:27.724964+08:00"},{"seq":121,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.816 [INFO] [docker:61a793e2] cd4b3dc03178: Layer already exists","timestamp":"2026-08-14T09:36:27.816457+08:00"},{"seq":122,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.816 [INFO] [docker:61a793e2] 71a2618c0925: Layer already exists","timestamp":"2026-08-14T09:36:27.816665+08:00"},{"seq":123,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.817 [INFO] [docker:61a793e2] 5f70bf18a086: Layer already exists","timestamp":"2026-08-14T09:36:27.817241+08:00"},{"seq":124,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.847 [INFO] [docker:61a793e2] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-14T09:36:27.847880+08:00"},{"seq":125,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:27.979 [INFO] [docker:61a793e2] 8bf42db0de72: Layer already exists","timestamp":"2026-08-14T09:36:27.979187+08:00"},{"seq":126,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:28.037 [INFO] [docker:61a793e2] 31892cc314cb: Layer already exists","timestamp":"2026-08-14T09:36:28.037101+08:00"},{"seq":127,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:28.037 [INFO] [docker:61a793e2] edeaba958753: Layer already exists","timestamp":"2026-08-14T09:36:28.037214+08:00"},{"seq":128,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:28.037 [INFO] [docker:61a793e2] 2b730cf18c09: Layer already exists","timestamp":"2026-08-14T09:36:28.037530+08:00"},{"seq":129,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:28.068 [INFO] [docker:61a793e2] 11936051f93b: Layer already exists","timestamp":"2026-08-14T09:36:28.068262+08:00"},{"seq":130,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:41.479 [INFO] [docker:61a793e2] 4aec86af0e7b: Pushed","timestamp":"2026-08-14T09:36:41.479704+08:00"},{"seq":131,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:42.216 [INFO] [docker:61a793e2] develop-f76c3f6: digest: sha256:8d47a96fc2532ade5f70ca3cf6124e003f49dd388d021fc804d72c624885d77b size: 2629","timestamp":"2026-08-14T09:36:42.216821+08:00"},{"seq":132,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:42.297 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-14T09:36:42.297983+08:00"},{"seq":133,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:42.332 [INFO] [docker:61a793e2] tag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-14T09:36:42.332692+08:00"},{"seq":134,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 09:36:42.333 [ERROR] [docker:61a793e2] 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-14T09:36:42.333531+08:00"},{"seq":135,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 09:36:42.333 [WARNING] [docker:61a793e2] 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-14T09:36:42.333849+08:00"},{"seq":136,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:42.333 [INFO] [orchestrator:61a793e2] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-billing:develop-f76c3f6","timestamp":"2026-08-14T09:36:42.333957+08:00"},{"seq":137,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:42.337 [INFO] [orchestrator:61a793e2] 🔨 构建服务: fanson/fscp-tenant → 镜像标签 fanson/fscp-tenant:develop-f76c3f6","timestamp":"2026-08-14T09:36:42.337190+08:00"},{"seq":138,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:36:42.337 [INFO] [orchestrator:61a793e2] 已自动注入 -pl fscp-modules/fscp-tenant -am: mvn -pl fscp-modules/fscp-tenant -am clean package -DskipTests","timestamp":"2026-08-14T09:36:42.337300+08:00"},{"seq":139,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:42.337 [INFO] [docker:61a793e2] building docker.fanson.cloud/fanson/fscp-tenant:develop-f76c3f6 (skipping buildx — already known to fail)","timestamp":"2026-08-14T09:36:42.337558+08:00"},{"seq":140,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:42.844 [INFO] [docker:61a793e2] #1 DONE 0.2s","timestamp":"2026-08-14T09:36:42.844601+08:00"},{"seq":141,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:43.143 [INFO] [docker:61a793e2] #3 DONE 0.2s","timestamp":"2026-08-14T09:36:43.143183+08:00"},{"seq":142,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.049 [INFO] [docker:61a793e2] #2 DONE 1.1s","timestamp":"2026-08-14T09:36:44.049859+08:00"},{"seq":143,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.259 [INFO] [docker:61a793e2] #4 DONE 0.2s","timestamp":"2026-08-14T09:36:44.259860+08:00"},{"seq":144,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.370 [INFO] [docker:61a793e2] #5 DONE 0.0s","timestamp":"2026-08-14T09:36:44.370523+08:00"},{"seq":145,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.370 [INFO] [docker:61a793e2] #6 DONE 0.0s","timestamp":"2026-08-14T09:36:44.370684+08:00"},{"seq":146,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.569 [INFO] [docker:61a793e2] #7 DONE 0.3s","timestamp":"2026-08-14T09:36:44.569580+08:00"},{"seq":147,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.787 [INFO] [docker:61a793e2] #8 CACHED","timestamp":"2026-08-14T09:36:44.787559+08:00"},{"seq":148,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.787 [INFO] [docker:61a793e2] #9 CACHED","timestamp":"2026-08-14T09:36:44.787677+08:00"},{"seq":149,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.787 [INFO] [docker:61a793e2] #10 CACHED","timestamp":"2026-08-14T09:36:44.787788+08:00"},{"seq":150,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:44.787 [INFO] [docker:61a793e2] #11 CACHED","timestamp":"2026-08-14T09:36:44.787881+08:00"},{"seq":151,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:36:46.394 [INFO] [docker:61a793e2] #12 DONE 1.8s","timestamp":"2026-08-14T09:36:46.394078+08:00"},{"seq":152,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:00.691 [INFO] [docker:61a793e2] #13 DONE 14.3s","timestamp":"2026-08-14T09:37:00.691028+08:00"},{"seq":153,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:00.997 [INFO] [docker:61a793e2] #14 CACHED","timestamp":"2026-08-14T09:37:00.997085+08:00"},{"seq":154,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:03.024 [INFO] [docker:61a793e2] #15 DONE 2.0s","timestamp":"2026-08-14T09:37:03.024140+08:00"},{"seq":155,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:04.240 [INFO] [docker:61a793e2] #16 DONE 1.1s","timestamp":"2026-08-14T09:37:04.240333+08:00"},{"seq":156,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.295 [INFO] [docker:61a793e2] build success: docker.fanson.cloud/fanson/fscp-tenant:develop-f76c3f6","timestamp":"2026-08-14T09:37:05.295040+08:00"},{"seq":157,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.295 [INFO] [docker:61a793e2] pushing docker.fanson.cloud/fanson/fscp-tenant:develop-f76c3f6","timestamp":"2026-08-14T09:37:05.295147+08:00"},{"seq":158,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.331 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-14T09:37:05.331448+08:00"},{"seq":159,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] d4f96377a915: Preparing","timestamp":"2026-08-14T09:37:05.367169+08:00"},{"seq":160,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 5f70bf18a086: Preparing","timestamp":"2026-08-14T09:37:05.367284+08:00"},{"seq":161,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 71a2618c0925: Preparing","timestamp":"2026-08-14T09:37:05.367368+08:00"},{"seq":162,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 6fc52eaf99f6: Preparing","timestamp":"2026-08-14T09:37:05.367450+08:00"},{"seq":163,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] cd4b3dc03178: Preparing","timestamp":"2026-08-14T09:37:05.367529+08:00"},{"seq":164,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] b4cfcb8385a8: Preparing","timestamp":"2026-08-14T09:37:05.367608+08:00"},{"seq":165,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 2b730cf18c09: Preparing","timestamp":"2026-08-14T09:37:05.367685+08:00"},{"seq":166,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] edeaba958753: Preparing","timestamp":"2026-08-14T09:37:05.367771+08:00"},{"seq":167,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 8bf42db0de72: Preparing","timestamp":"2026-08-14T09:37:05.367850+08:00"},{"seq":168,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 31892cc314cb: Preparing","timestamp":"2026-08-14T09:37:05.367927+08:00"},{"seq":169,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.367 [INFO] [docker:61a793e2] 11936051f93b: Preparing","timestamp":"2026-08-14T09:37:05.368003+08:00"},{"seq":170,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] b4cfcb8385a8: Waiting","timestamp":"2026-08-14T09:37:05.368079+08:00"},{"seq":171,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] 31892cc314cb: Waiting","timestamp":"2026-08-14T09:37:05.368162+08:00"},{"seq":172,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] 8bf42db0de72: Waiting","timestamp":"2026-08-14T09:37:05.368238+08:00"},{"seq":173,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] 11936051f93b: Waiting","timestamp":"2026-08-14T09:37:05.368313+08:00"},{"seq":174,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] 2b730cf18c09: Waiting","timestamp":"2026-08-14T09:37:05.368388+08:00"},{"seq":175,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.368 [INFO] [docker:61a793e2] edeaba958753: Waiting","timestamp":"2026-08-14T09:37:05.368462+08:00"},{"seq":176,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.654 [INFO] [docker:61a793e2] cd4b3dc03178: Layer already exists","timestamp":"2026-08-14T09:37:05.654701+08:00"},{"seq":177,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.696 [INFO] [docker:61a793e2] 71a2618c0925: Layer already exists","timestamp":"2026-08-14T09:37:05.696443+08:00"},{"seq":178,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.696 [INFO] [docker:61a793e2] 5f70bf18a086: Layer already exists","timestamp":"2026-08-14T09:37:05.696587+08:00"},{"seq":179,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.696 [INFO] [docker:61a793e2] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-14T09:37:05.696688+08:00"},{"seq":180,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.753 [INFO] [docker:61a793e2] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-14T09:37:05.753866+08:00"},{"seq":181,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.784 [INFO] [docker:61a793e2] 2b730cf18c09: Layer already exists","timestamp":"2026-08-14T09:37:05.784784+08:00"},{"seq":182,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.784 [INFO] [docker:61a793e2] 8bf42db0de72: Layer already exists","timestamp":"2026-08-14T09:37:05.784922+08:00"},{"seq":183,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.785 [INFO] [docker:61a793e2] edeaba958753: Layer already exists","timestamp":"2026-08-14T09:37:05.785599+08:00"},{"seq":184,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.873 [INFO] [docker:61a793e2] 31892cc314cb: Layer already exists","timestamp":"2026-08-14T09:37:05.873655+08:00"},{"seq":185,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:05.884 [INFO] [docker:61a793e2] 11936051f93b: Layer already exists","timestamp":"2026-08-14T09:37:05.884389+08:00"},{"seq":186,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:14.320 [INFO] [docker:61a793e2] d4f96377a915: Pushed","timestamp":"2026-08-14T09:37:14.320655+08:00"},{"seq":187,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:15.079 [INFO] [docker:61a793e2] develop-f76c3f6: digest: sha256:50eeb3d5b694f12994b345960ccb75c6dc4d333ee5906a3f666025e79515dde3 size: 2628","timestamp":"2026-08-14T09:37:15.079460+08:00"},{"seq":188,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:15.167 [INFO] [docker:61a793e2] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-14T09:37:15.167498+08:00"},{"seq":189,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 09:37:15.201 [INFO] [docker:61a793e2] tag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-14T09:37:15.201627+08:00"},{"seq":190,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 09:37:15.202 [ERROR] [docker:61a793e2] 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-14T09:37:15.202345+08:00"},{"seq":191,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 09:37:15.202 [WARNING] [docker:61a793e2] 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-14T09:37:15.202694+08:00"},{"seq":192,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 09:37:15.202 [INFO] [orchestrator:61a793e2] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-tenant:develop-f76c3f6","timestamp":"2026-08-14T09:37:15.202852+08:00"},{"seq":193,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 09:37:15.239 [INFO] [agent:61a793e2] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339, docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae, docker.fanson.cloud/fanson/fscp-system:develop-f76c3f6, docker.fanson.cloud/fanson/fscp-billing:develop-f76c3f6, docker.fanson.cloud/fanson/fscp-tenant:develop-f76c3f6","timestamp":"2026-08-14T09:37:15.239234+08:00"},{"seq":194,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 09:37:15.264 [INFO] [agent:61a793e2] workspace cleaned","timestamp":"2026-08-14T09:37:15.264097+08:00"}]}