{"job_id":"5b21ffe3-2b20-43be-b2ec-015c0e226010","filters":{"level":null,"component":null},"total":141,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 13:49:42.932 [INFO] [agent:5b21ffe3] 🚀 CI 流水线启动","timestamp":"2026-08-14T13:49:42.932340+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:42.932 [INFO] [git:5b21ffe3] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/5b21ffe3-2b20-43be-b2ec-015c0e226010 (branch=develop)","timestamp":"2026-08-14T13:49:42.932772+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:43.993 [INFO] [git:5b21ffe3] Cloning into '/app/data/workspace/5b21ffe3-2b20-43be-b2ec-015c0e226010'...","timestamp":"2026-08-14T13:49:43.993645+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:43.993 [INFO] [git:5b21ffe3] git clone success: /app/data/workspace/5b21ffe3-2b20-43be-b2ec-015c0e226010","timestamp":"2026-08-14T13:49:43.993773+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 13:49:43.994 [INFO] [agent:5b21ffe3] 📦 代码已克隆到 /app/data/workspace/5b21ffe3-2b20-43be-b2ec-015c0e226010","timestamp":"2026-08-14T13:49:43.994013+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:43.996 [INFO] [orchestrator:5b21ffe3] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-14T13:49:43.996568+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:44.467 [INFO] [orchestrator:5b21ffe3] 📝 检测到变更的目录: fscp-api, fscp-api/fscp-api-billing","timestamp":"2026-08-14T13:49:44.467191+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:44.471 [INFO] [git:5b21ffe3] 目录 fscp-gateway 代码指纹: 758e339","timestamp":"2026-08-14T13:49:44.471021+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:44.848 [INFO] [docker:5b21ffe3] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339（跳过构建）","timestamp":"2026-08-14T13:49:44.848400+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:44.848 [INFO] [orchestrator:5b21ffe3] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-758e339 已存在，代码指纹 758e339)","timestamp":"2026-08-14T13:49:44.848522+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:44.852 [INFO] [git:5b21ffe3] 目录 fscp-auth 代码指纹: f3e26ae","timestamp":"2026-08-14T13:49:44.852316+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:45.238 [INFO] [docker:5b21ffe3] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae（跳过构建）","timestamp":"2026-08-14T13:49:45.238424+08:00"},{"seq":13,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:45.238 [INFO] [orchestrator:5b21ffe3] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-f3e26ae 已存在，代码指纹 f3e26ae)","timestamp":"2026-08-14T13:49:45.238547+08:00"},{"seq":14,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:45.242 [INFO] [git:5b21ffe3] 目录 fscp-modules 代码指纹: a2d2475","timestamp":"2026-08-14T13:49:45.242385+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:45.611 [INFO] [docker:5b21ffe3] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-system:develop-a2d2475（跳过构建）","timestamp":"2026-08-14T13:49:45.611269+08:00"},{"seq":16,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:45.611 [INFO] [orchestrator:5b21ffe3] SKIP fanson/fscp-system (镜像 fanson/fscp-system:develop-a2d2475 已存在，代码指纹 a2d2475)","timestamp":"2026-08-14T13:49:45.611420+08:00"},{"seq":17,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:45.615 [INFO] [git:5b21ffe3] 目录 fscp-modules 代码指纹: a2d2475","timestamp":"2026-08-14T13:49:45.615227+08:00"},{"seq":18,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:46.245 [INFO] [orchestrator:5b21ffe3] ⚠️ SKIP 无效 fanson/fscp-billing (代码指纹 a2d2475 无对应镜像，即使本次未变更该目录也需构建)","timestamp":"2026-08-14T13:49:46.245026+08:00"},{"seq":19,"level":"INFO","component":"git","message":"[git] 2026-08-14 13:49:46.249 [INFO] [git:5b21ffe3] 目录 fscp-modules 代码指纹: a2d2475","timestamp":"2026-08-14T13:49:46.249042+08:00"},{"seq":20,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:46.872 [INFO] [orchestrator:5b21ffe3] ⚠️ SKIP 无效 fanson/fscp-tenant (代码指纹 a2d2475 无对应镜像，即使本次未变更该目录也需构建)","timestamp":"2026-08-14T13:49:46.872330+08:00"},{"seq":21,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:46.872 [INFO] [orchestrator:5b21ffe3] 🔨 开始构建 2 个服务","timestamp":"2026-08-14T13:49:46.872470+08:00"},{"seq":22,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:46.876 [INFO] [orchestrator:5b21ffe3] 🔨 构建服务: fanson/fscp-billing → 镜像标签 fanson/fscp-billing:develop-a2d2475","timestamp":"2026-08-14T13:49:46.876608+08:00"},{"seq":23,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:49:46.876 [INFO] [orchestrator:5b21ffe3] 已自动注入 -pl fscp-modules/fscp-billing -am: mvn -pl fscp-modules/fscp-billing -am clean package -DskipTests","timestamp":"2026-08-14T13:49:46.876738+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:46.877 [INFO] [docker:5b21ffe3] building docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475 (with cache)","timestamp":"2026-08-14T13:49:46.877071+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:47.168 [INFO] [docker:5b21ffe3] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-14T13:49:47.168912+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:47.169 [INFO] [docker:5b21ffe3] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-14T13:49:47.169086+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:47.169 [INFO] [docker:5b21ffe3] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-14T13:49:47.169230+08:00"},{"seq":28,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 13:49:47.175 [ERROR] [docker:5b21ffe3] 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-14T13:49:47.175970+08:00"},{"seq":29,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 13:49:47.176 [WARNING] [docker:5b21ffe3] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-14T13:49:47.176314+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:47.176 [INFO] [docker:5b21ffe3] building docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475 (native docker build)","timestamp":"2026-08-14T13:49:47.176475+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:47.946 [INFO] [docker:5b21ffe3] #1 DONE 0.5s","timestamp":"2026-08-14T13:49:47.946553+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:48.300 [INFO] [docker:5b21ffe3] #3 DONE 0.3s","timestamp":"2026-08-14T13:49:48.300412+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:49.118 [INFO] [docker:5b21ffe3] #2 DONE 1.1s","timestamp":"2026-08-14T13:49:49.118809+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:49.715 [INFO] [docker:5b21ffe3] #4 DONE 0.6s","timestamp":"2026-08-14T13:49:49.715691+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:49.913 [INFO] [docker:5b21ffe3] #5 DONE 0.0s","timestamp":"2026-08-14T13:49:49.913676+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:49.913 [INFO] [docker:5b21ffe3] #6 DONE 0.0s","timestamp":"2026-08-14T13:49:49.913802+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:50.478 [INFO] [docker:5b21ffe3] #7 DONE 0.7s","timestamp":"2026-08-14T13:49:50.478693+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:50.666 [INFO] [docker:5b21ffe3] #8 CACHED","timestamp":"2026-08-14T13:49:50.666006+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:50.666 [INFO] [docker:5b21ffe3] #9 CACHED","timestamp":"2026-08-14T13:49:50.666125+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:50.666 [INFO] [docker:5b21ffe3] #10 CACHED","timestamp":"2026-08-14T13:49:50.666222+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:50.666 [INFO] [docker:5b21ffe3] #11 CACHED","timestamp":"2026-08-14T13:49:50.666316+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:49:52.524 [INFO] [docker:5b21ffe3] #12 DONE 2.0s","timestamp":"2026-08-14T13:49:52.524384+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:07.562 [INFO] [docker:5b21ffe3] #13 DONE 15.0s","timestamp":"2026-08-14T13:50:07.562234+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:07.978 [INFO] [docker:5b21ffe3] #14 CACHED","timestamp":"2026-08-14T13:50:07.978295+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:10.348 [INFO] [docker:5b21ffe3] #15 DONE 2.4s","timestamp":"2026-08-14T13:50:10.348723+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:11.498 [INFO] [docker:5b21ffe3] #16 DONE 1.1s","timestamp":"2026-08-14T13:50:11.498550+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.464 [INFO] [docker:5b21ffe3] build success: docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475","timestamp":"2026-08-14T13:50:12.464073+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.464 [INFO] [docker:5b21ffe3] pushing docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475","timestamp":"2026-08-14T13:50:12.464183+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.501 [INFO] [docker:5b21ffe3] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-14T13:50:12.501635+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.538 [INFO] [docker:5b21ffe3] 9912aff15dda: Preparing","timestamp":"2026-08-14T13:50:12.538582+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.538 [INFO] [docker:5b21ffe3] 5f70bf18a086: Preparing","timestamp":"2026-08-14T13:50:12.538713+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.538 [INFO] [docker:5b21ffe3] 71a2618c0925: Preparing","timestamp":"2026-08-14T13:50:12.538827+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.538 [INFO] [docker:5b21ffe3] 6fc52eaf99f6: Preparing","timestamp":"2026-08-14T13:50:12.538920+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] cd4b3dc03178: Preparing","timestamp":"2026-08-14T13:50:12.539017+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Preparing","timestamp":"2026-08-14T13:50:12.539104+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 2b730cf18c09: Preparing","timestamp":"2026-08-14T13:50:12.539193+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] edeaba958753: Preparing","timestamp":"2026-08-14T13:50:12.539288+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 8bf42db0de72: Preparing","timestamp":"2026-08-14T13:50:12.539375+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 31892cc314cb: Preparing","timestamp":"2026-08-14T13:50:12.539461+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Waiting","timestamp":"2026-08-14T13:50:12.539545+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 11936051f93b: Preparing","timestamp":"2026-08-14T13:50:12.539629+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 2b730cf18c09: Waiting","timestamp":"2026-08-14T13:50:12.539712+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] edeaba958753: Waiting","timestamp":"2026-08-14T13:50:12.539804+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 8bf42db0de72: Waiting","timestamp":"2026-08-14T13:50:12.539891+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.539 [INFO] [docker:5b21ffe3] 31892cc314cb: Waiting","timestamp":"2026-08-14T13:50:12.539988+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.540 [INFO] [docker:5b21ffe3] 11936051f93b: Waiting","timestamp":"2026-08-14T13:50:12.540072+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.814 [INFO] [docker:5b21ffe3] 71a2618c0925: Layer already exists","timestamp":"2026-08-14T13:50:12.814719+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.858 [INFO] [docker:5b21ffe3] cd4b3dc03178: Layer already exists","timestamp":"2026-08-14T13:50:12.858084+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.858 [INFO] [docker:5b21ffe3] 5f70bf18a086: Layer already exists","timestamp":"2026-08-14T13:50:12.858236+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.858 [INFO] [docker:5b21ffe3] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-14T13:50:12.858324+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.935 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-14T13:50:12.935702+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.998 [INFO] [docker:5b21ffe3] 2b730cf18c09: Layer already exists","timestamp":"2026-08-14T13:50:12.998582+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.998 [INFO] [docker:5b21ffe3] edeaba958753: Layer already exists","timestamp":"2026-08-14T13:50:12.998825+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:12.998 [INFO] [docker:5b21ffe3] 8bf42db0de72: Layer already exists","timestamp":"2026-08-14T13:50:12.998977+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:13.035 [INFO] [docker:5b21ffe3] 31892cc314cb: Layer already exists","timestamp":"2026-08-14T13:50:13.035484+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:13.101 [INFO] [docker:5b21ffe3] 11936051f93b: Layer already exists","timestamp":"2026-08-14T13:50:13.101429+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:26.645 [INFO] [docker:5b21ffe3] 9912aff15dda: Pushed","timestamp":"2026-08-14T13:50:26.645634+08:00"},{"seq":78,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:27.382 [INFO] [docker:5b21ffe3] develop-a2d2475: digest: sha256:ac908601441ee7a053f83af036cce61f8d2e7ae04d81c17eefafb8af29d15e16 size: 2629","timestamp":"2026-08-14T13:50:27.382756+08:00"},{"seq":79,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:27.471 [INFO] [docker:5b21ffe3] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-14T13:50:27.471822+08:00"},{"seq":80,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:27.504 [INFO] [docker:5b21ffe3] tag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-14T13:50:27.505002+08:00"},{"seq":81,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 13:50:27.505 [ERROR] [docker:5b21ffe3] 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-14T13:50:27.505867+08:00"},{"seq":82,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 13:50:27.506 [WARNING] [docker:5b21ffe3] 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-14T13:50:27.506191+08:00"},{"seq":83,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:50:27.506 [INFO] [orchestrator:5b21ffe3] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475","timestamp":"2026-08-14T13:50:27.506298+08:00"},{"seq":84,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:50:27.509 [INFO] [orchestrator:5b21ffe3] 🔨 构建服务: fanson/fscp-tenant → 镜像标签 fanson/fscp-tenant:develop-a2d2475","timestamp":"2026-08-14T13:50:27.509686+08:00"},{"seq":85,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:50:27.509 [INFO] [orchestrator:5b21ffe3] 已自动注入 -pl fscp-modules/fscp-tenant -am: mvn -pl fscp-modules/fscp-tenant -am clean package -DskipTests","timestamp":"2026-08-14T13:50:27.509839+08:00"},{"seq":86,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:27.510 [INFO] [docker:5b21ffe3] building docker.fanson.cloud/fanson/fscp-tenant:develop-a2d2475 (skipping buildx — already known to fail)","timestamp":"2026-08-14T13:50:27.510108+08:00"},{"seq":87,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:27.940 [INFO] [docker:5b21ffe3] #1 DONE 0.2s","timestamp":"2026-08-14T13:50:27.940575+08:00"},{"seq":88,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:28.239 [INFO] [docker:5b21ffe3] #3 DONE 0.3s","timestamp":"2026-08-14T13:50:28.239271+08:00"},{"seq":89,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:28.405 [INFO] [docker:5b21ffe3] #2 DONE 0.4s","timestamp":"2026-08-14T13:50:28.405006+08:00"},{"seq":90,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:28.637 [INFO] [docker:5b21ffe3] #4 DONE 0.2s","timestamp":"2026-08-14T13:50:28.637229+08:00"},{"seq":91,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:28.747 [INFO] [docker:5b21ffe3] #5 DONE 0.0s","timestamp":"2026-08-14T13:50:28.747900+08:00"},{"seq":92,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:28.748 [INFO] [docker:5b21ffe3] #6 DONE 0.0s","timestamp":"2026-08-14T13:50:28.748032+08:00"},{"seq":93,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:29.013 [INFO] [docker:5b21ffe3] #7 DONE 0.3s","timestamp":"2026-08-14T13:50:29.013211+08:00"},{"seq":94,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:29.209 [INFO] [docker:5b21ffe3] #8 CACHED","timestamp":"2026-08-14T13:50:29.209049+08:00"},{"seq":95,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:29.209 [INFO] [docker:5b21ffe3] #9 CACHED","timestamp":"2026-08-14T13:50:29.209167+08:00"},{"seq":96,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:29.209 [INFO] [docker:5b21ffe3] #10 CACHED","timestamp":"2026-08-14T13:50:29.209266+08:00"},{"seq":97,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:29.209 [INFO] [docker:5b21ffe3] #11 CACHED","timestamp":"2026-08-14T13:50:29.209358+08:00"},{"seq":98,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:31.368 [INFO] [docker:5b21ffe3] #12 DONE 2.3s","timestamp":"2026-08-14T13:50:31.368961+08:00"},{"seq":99,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:46.251 [INFO] [docker:5b21ffe3] #13 DONE 14.7s","timestamp":"2026-08-14T13:50:46.251688+08:00"},{"seq":100,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:46.721 [INFO] [docker:5b21ffe3] #14 CACHED","timestamp":"2026-08-14T13:50:46.721894+08:00"},{"seq":101,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:48.418 [INFO] [docker:5b21ffe3] #15 DONE 1.8s","timestamp":"2026-08-14T13:50:48.418775+08:00"},{"seq":102,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:49.513 [INFO] [docker:5b21ffe3] #16 DONE 1.0s","timestamp":"2026-08-14T13:50:49.513364+08:00"},{"seq":103,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.500 [INFO] [docker:5b21ffe3] build success: docker.fanson.cloud/fanson/fscp-tenant:develop-a2d2475","timestamp":"2026-08-14T13:50:50.500913+08:00"},{"seq":104,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.501 [INFO] [docker:5b21ffe3] pushing docker.fanson.cloud/fanson/fscp-tenant:develop-a2d2475","timestamp":"2026-08-14T13:50:50.501015+08:00"},{"seq":105,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.537 [INFO] [docker:5b21ffe3] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-14T13:50:50.537431+08:00"},{"seq":106,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] b5ab3e3e34b7: Preparing","timestamp":"2026-08-14T13:50:50.572360+08:00"},{"seq":107,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] 5f70bf18a086: Preparing","timestamp":"2026-08-14T13:50:50.572487+08:00"},{"seq":108,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] 71a2618c0925: Preparing","timestamp":"2026-08-14T13:50:50.572591+08:00"},{"seq":109,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] 6fc52eaf99f6: Preparing","timestamp":"2026-08-14T13:50:50.572685+08:00"},{"seq":110,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] cd4b3dc03178: Preparing","timestamp":"2026-08-14T13:50:50.572795+08:00"},{"seq":111,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Preparing","timestamp":"2026-08-14T13:50:50.572886+08:00"},{"seq":112,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.572 [INFO] [docker:5b21ffe3] 2b730cf18c09: Preparing","timestamp":"2026-08-14T13:50:50.572982+08:00"},{"seq":113,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] edeaba958753: Preparing","timestamp":"2026-08-14T13:50:50.573070+08:00"},{"seq":114,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 8bf42db0de72: Preparing","timestamp":"2026-08-14T13:50:50.573156+08:00"},{"seq":115,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 31892cc314cb: Preparing","timestamp":"2026-08-14T13:50:50.573251+08:00"},{"seq":116,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 11936051f93b: Preparing","timestamp":"2026-08-14T13:50:50.573335+08:00"},{"seq":117,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 8bf42db0de72: Waiting","timestamp":"2026-08-14T13:50:50.573420+08:00"},{"seq":118,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Waiting","timestamp":"2026-08-14T13:50:50.573503+08:00"},{"seq":119,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 31892cc314cb: Waiting","timestamp":"2026-08-14T13:50:50.573586+08:00"},{"seq":120,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 2b730cf18c09: Waiting","timestamp":"2026-08-14T13:50:50.573668+08:00"},{"seq":121,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] 11936051f93b: Waiting","timestamp":"2026-08-14T13:50:50.573761+08:00"},{"seq":122,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.573 [INFO] [docker:5b21ffe3] edeaba958753: Waiting","timestamp":"2026-08-14T13:50:50.573845+08:00"},{"seq":123,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.950 [INFO] [docker:5b21ffe3] 5f70bf18a086: Layer already exists","timestamp":"2026-08-14T13:50:50.950548+08:00"},{"seq":124,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.950 [INFO] [docker:5b21ffe3] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-14T13:50:50.950835+08:00"},{"seq":125,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.950 [INFO] [docker:5b21ffe3] cd4b3dc03178: Layer already exists","timestamp":"2026-08-14T13:50:50.950984+08:00"},{"seq":126,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:50.951 [INFO] [docker:5b21ffe3] 71a2618c0925: Layer already exists","timestamp":"2026-08-14T13:50:50.951363+08:00"},{"seq":127,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.060 [INFO] [docker:5b21ffe3] 2b730cf18c09: Layer already exists","timestamp":"2026-08-14T13:50:51.060973+08:00"},{"seq":128,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.126 [INFO] [docker:5b21ffe3] edeaba958753: Layer already exists","timestamp":"2026-08-14T13:50:51.126461+08:00"},{"seq":129,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.126 [INFO] [docker:5b21ffe3] 8bf42db0de72: Layer already exists","timestamp":"2026-08-14T13:50:51.126637+08:00"},{"seq":130,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.126 [INFO] [docker:5b21ffe3] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-14T13:50:51.126734+08:00"},{"seq":131,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.161 [INFO] [docker:5b21ffe3] 31892cc314cb: Layer already exists","timestamp":"2026-08-14T13:50:51.161255+08:00"},{"seq":132,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:51.227 [INFO] [docker:5b21ffe3] 11936051f93b: Layer already exists","timestamp":"2026-08-14T13:50:51.227265+08:00"},{"seq":133,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:57.971 [INFO] [docker:5b21ffe3] b5ab3e3e34b7: Pushed","timestamp":"2026-08-14T13:50:57.971562+08:00"},{"seq":134,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:58.741 [INFO] [docker:5b21ffe3] develop-a2d2475: digest: sha256:15c8de82ee19ef609a6540c4b7b988112f5f51a555148d586abcd0a8e6a5a869 size: 2628","timestamp":"2026-08-14T13:50:58.741522+08:00"},{"seq":135,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:58.829 [INFO] [docker:5b21ffe3] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-14T13:50:58.829677+08:00"},{"seq":136,"level":"INFO","component":"docker","message":"[docker] 2026-08-14 13:50:58.862 [INFO] [docker:5b21ffe3] tag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-14T13:50:58.862503+08:00"},{"seq":137,"level":"ERROR","component":"docker","message":"[docker] 2026-08-14 13:50:58.863 [ERROR] [docker:5b21ffe3] 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-14T13:50:58.863266+08:00"},{"seq":138,"level":"WARNING","component":"docker","message":"[docker] 2026-08-14 13:50:58.863 [WARNING] [docker:5b21ffe3] 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-14T13:50:58.863583+08:00"},{"seq":139,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-14 13:50:58.863 [INFO] [orchestrator:5b21ffe3] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-tenant:develop-a2d2475","timestamp":"2026-08-14T13:50:58.863737+08:00"},{"seq":140,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 13:50:58.900 [INFO] [agent:5b21ffe3] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339, docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae, docker.fanson.cloud/fanson/fscp-system:develop-a2d2475, docker.fanson.cloud/fanson/fscp-billing:develop-a2d2475, docker.fanson.cloud/fanson/fscp-tenant:develop-a2d2475","timestamp":"2026-08-14T13:50:58.900068+08:00"},{"seq":141,"level":"INFO","component":"agent","message":"[agent] 2026-08-14 13:50:58.925 [INFO] [agent:5b21ffe3] workspace cleaned","timestamp":"2026-08-14T13:50:58.925676+08:00"}]}