{"job_id":"129269bd-73d0-4190-9531-2cf373a95477","filters":{"level":null,"component":null},"total":86,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 11:13:45.256 [INFO] [agent:129269bd] 🚀 CI 流水线启动","timestamp":"2026-08-18T11:13:45.256305+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:45.256 [INFO] [git:129269bd] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/129269bd-73d0-4190-9531-2cf373a95477 (branch=develop)","timestamp":"2026-08-18T11:13:45.256609+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:46.396 [INFO] [git:129269bd] Cloning into '/app/data/workspace/129269bd-73d0-4190-9531-2cf373a95477'...","timestamp":"2026-08-18T11:13:46.396285+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:46.396 [INFO] [git:129269bd] git clone success: /app/data/workspace/129269bd-73d0-4190-9531-2cf373a95477","timestamp":"2026-08-18T11:13:46.396389+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 11:13:46.396 [INFO] [agent:129269bd] 📦 代码已克隆到 /app/data/workspace/129269bd-73d0-4190-9531-2cf373a95477","timestamp":"2026-08-18T11:13:46.396679+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:46.399 [INFO] [orchestrator:129269bd] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-18T11:13:46.399129+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:46.879 [INFO] [orchestrator:129269bd] 📝 检测到变更的目录: fscp-auth, fscp-auth/src","timestamp":"2026-08-18T11:13:46.879541+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:46.882 [INFO] [git:129269bd] 目录 fscp-gateway 代码指纹: 758e339","timestamp":"2026-08-18T11:13:46.882924+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:47.259 [INFO] [docker:129269bd] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339（跳过构建）","timestamp":"2026-08-18T11:13:47.259591+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:47.259 [INFO] [orchestrator:129269bd] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-758e339 已存在，代码指纹 758e339)","timestamp":"2026-08-18T11:13:47.259719+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:47.263 [INFO] [git:129269bd] 目录 fscp-auth 代码指纹: 6db0579","timestamp":"2026-08-18T11:13:47.263089+08:00"},{"seq":12,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:47.891 [INFO] [git:129269bd] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T11:13:47.891766+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:48.261 [INFO] [docker:129269bd] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-system:develop-759ba48（跳过构建）","timestamp":"2026-08-18T11:13:48.261875+08:00"},{"seq":14,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:48.261 [INFO] [orchestrator:129269bd] SKIP fanson/fscp-system (镜像 fanson/fscp-system:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T11:13:48.262001+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:48.265 [INFO] [git:129269bd] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T11:13:48.265386+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:48.642 [INFO] [docker:129269bd] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-billing:develop-759ba48（跳过构建）","timestamp":"2026-08-18T11:13:48.642664+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:48.642 [INFO] [orchestrator:129269bd] SKIP fanson/fscp-billing (镜像 fanson/fscp-billing:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T11:13:48.642802+08:00"},{"seq":18,"level":"INFO","component":"git","message":"[git] 2026-08-18 11:13:48.646 [INFO] [git:129269bd] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T11:13:48.646185+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.029 [INFO] [docker:129269bd] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-tenant:develop-759ba48（跳过构建）","timestamp":"2026-08-18T11:13:49.029773+08:00"},{"seq":20,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:49.029 [INFO] [orchestrator:129269bd] SKIP fanson/fscp-tenant (镜像 fanson/fscp-tenant:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T11:13:49.029919+08:00"},{"seq":21,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:49.030 [INFO] [orchestrator:129269bd] 🔨 开始构建 1 个服务","timestamp":"2026-08-18T11:13:49.030027+08:00"},{"seq":22,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:49.033 [INFO] [orchestrator:129269bd] 🔨 构建服务: fanson/fscp-auth → 镜像标签 fanson/fscp-auth:develop-6db0579","timestamp":"2026-08-18T11:13:49.033482+08:00"},{"seq":23,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:13:49.033 [INFO] [orchestrator:129269bd] 已自动注入 -pl fscp-auth -am: mvn -pl fscp-auth -am clean package -DskipTests","timestamp":"2026-08-18T11:13:49.033650+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.034 [INFO] [docker:129269bd] building docker.fanson.cloud/fanson/fscp-auth:develop-6db0579 (with cache)","timestamp":"2026-08-18T11:13:49.034111+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.332 [INFO] [docker:129269bd] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-18T11:13:49.332665+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.332 [INFO] [docker:129269bd] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-18T11:13:49.332832+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.332 [INFO] [docker:129269bd] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-18T11:13:49.332950+08:00"},{"seq":28,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 11:13:49.334 [ERROR] [docker:129269bd] 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-18T11:13:49.334969+08:00"},{"seq":29,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 11:13:49.335 [WARNING] [docker:129269bd] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-18T11:13:49.335428+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:49.335 [INFO] [docker:129269bd] building docker.fanson.cloud/fanson/fscp-auth:develop-6db0579 (native docker build)","timestamp":"2026-08-18T11:13:49.335585+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:50.009 [INFO] [docker:129269bd] #1 DONE 0.4s","timestamp":"2026-08-18T11:13:50.009192+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:50.364 [INFO] [docker:129269bd] #3 DONE 0.0s","timestamp":"2026-08-18T11:13:50.364938+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:50.750 [INFO] [docker:129269bd] #2 DONE 0.7s","timestamp":"2026-08-18T11:13:50.750016+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:50.893 [INFO] [docker:129269bd] #4 DONE 0.8s","timestamp":"2026-08-18T11:13:50.893659+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:51.335 [INFO] [docker:129269bd] #5 DONE 0.4s","timestamp":"2026-08-18T11:13:51.335938+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:51.534 [INFO] [docker:129269bd] #6 DONE 0.0s","timestamp":"2026-08-18T11:13:51.534116+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:51.534 [INFO] [docker:129269bd] #7 DONE 0.0s","timestamp":"2026-08-18T11:13:51.534245+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:51.534 [INFO] [docker:129269bd] #8 CACHED","timestamp":"2026-08-18T11:13:51.534355+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:52.121 [INFO] [docker:129269bd] #9 DONE 0.7s","timestamp":"2026-08-18T11:13:52.121040+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:52.297 [INFO] [docker:129269bd] #10 CACHED","timestamp":"2026-08-18T11:13:52.297286+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:52.297 [INFO] [docker:129269bd] #11 CACHED","timestamp":"2026-08-18T11:13:52.297415+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:52.297 [INFO] [docker:129269bd] #12 CACHED","timestamp":"2026-08-18T11:13:52.297535+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:52.297 [INFO] [docker:129269bd] #13 CACHED","timestamp":"2026-08-18T11:13:52.297639+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:13:54.056 [INFO] [docker:129269bd] #14 DONE 1.9s","timestamp":"2026-08-18T11:13:54.056028+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:05.655 [INFO] [docker:129269bd] #15 DONE 11.6s","timestamp":"2026-08-18T11:14:05.655117+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:07.778 [INFO] [docker:129269bd] #16 DONE 1.7s","timestamp":"2026-08-18T11:14:07.778069+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:08.883 [INFO] [docker:129269bd] #17 DONE 1.0s","timestamp":"2026-08-18T11:14:08.883799+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.915 [INFO] [docker:129269bd] build success: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579","timestamp":"2026-08-18T11:14:09.915567+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.915 [INFO] [docker:129269bd] pushing docker.fanson.cloud/fanson/fscp-auth:develop-6db0579","timestamp":"2026-08-18T11:14:09.915677+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.952 [INFO] [docker:129269bd] The push refers to repository [docker.fanson.cloud/fanson/fscp-auth]","timestamp":"2026-08-18T11:14:09.952660+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.984 [INFO] [docker:129269bd] 0972d7f77e80: Preparing","timestamp":"2026-08-18T11:14:09.984749+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.984 [INFO] [docker:129269bd] 5f70bf18a086: Preparing","timestamp":"2026-08-18T11:14:09.984876+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.984 [INFO] [docker:129269bd] 71a2618c0925: Preparing","timestamp":"2026-08-18T11:14:09.984972+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 6fc52eaf99f6: Preparing","timestamp":"2026-08-18T11:14:09.985058+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] cd4b3dc03178: Preparing","timestamp":"2026-08-18T11:14:09.985139+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] b4cfcb8385a8: Preparing","timestamp":"2026-08-18T11:14:09.985219+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 2b730cf18c09: Preparing","timestamp":"2026-08-18T11:14:09.985296+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] edeaba958753: Preparing","timestamp":"2026-08-18T11:14:09.985373+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 8bf42db0de72: Preparing","timestamp":"2026-08-18T11:14:09.985448+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 31892cc314cb: Preparing","timestamp":"2026-08-18T11:14:09.985524+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 11936051f93b: Preparing","timestamp":"2026-08-18T11:14:09.985598+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] edeaba958753: Waiting","timestamp":"2026-08-18T11:14:09.985673+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] b4cfcb8385a8: Waiting","timestamp":"2026-08-18T11:14:09.985755+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 11936051f93b: Waiting","timestamp":"2026-08-18T11:14:09.985832+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 2b730cf18c09: Waiting","timestamp":"2026-08-18T11:14:09.985906+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.985 [INFO] [docker:129269bd] 31892cc314cb: Waiting","timestamp":"2026-08-18T11:14:09.985981+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:09.986 [INFO] [docker:129269bd] 8bf42db0de72: Waiting","timestamp":"2026-08-18T11:14:09.986055+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.286 [INFO] [docker:129269bd] cd4b3dc03178: Layer already exists","timestamp":"2026-08-18T11:14:10.286604+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.369 [INFO] [docker:129269bd] 71a2618c0925: Layer already exists","timestamp":"2026-08-18T11:14:10.369648+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.369 [INFO] [docker:129269bd] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-18T11:14:10.369816+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.369 [INFO] [docker:129269bd] 5f70bf18a086: Layer already exists","timestamp":"2026-08-18T11:14:10.369902+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.418 [INFO] [docker:129269bd] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-18T11:14:10.418853+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.479 [INFO] [docker:129269bd] 2b730cf18c09: Layer already exists","timestamp":"2026-08-18T11:14:10.479379+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.479 [INFO] [docker:129269bd] 8bf42db0de72: Layer already exists","timestamp":"2026-08-18T11:14:10.479876+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.479 [INFO] [docker:129269bd] edeaba958753: Layer already exists","timestamp":"2026-08-18T11:14:10.479994+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.528 [INFO] [docker:129269bd] 31892cc314cb: Layer already exists","timestamp":"2026-08-18T11:14:10.528649+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:10.601 [INFO] [docker:129269bd] 11936051f93b: Layer already exists","timestamp":"2026-08-18T11:14:10.601088+08:00"},{"seq":78,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:16.765 [INFO] [docker:129269bd] 0972d7f77e80: Pushed","timestamp":"2026-08-18T11:14:16.765215+08:00"},{"seq":79,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:17.469 [INFO] [docker:129269bd] develop-6db0579: digest: sha256:99c11ed5cd190eba552337bd4bfcc31fa126dfe440c3cc2b1d877ab2d6191a75 size: 2628","timestamp":"2026-08-18T11:14:17.469299+08:00"},{"seq":80,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:17.568 [INFO] [docker:129269bd] The push refers to repository [docker.fanson.cloud/fanson/fscp-auth]","timestamp":"2026-08-18T11:14:17.568020+08:00"},{"seq":81,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 11:14:17.602 [INFO] [docker:129269bd] tag does not exist: docker.fanson.cloud/fanson/fscp-auth:cache","timestamp":"2026-08-18T11:14:17.602252+08:00"},{"seq":82,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 11:14:17.603 [ERROR] [docker:129269bd] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-auth]\ntag does not exist: docker.fanson.cloud/fanson/fscp-auth:cache","timestamp":"2026-08-18T11:14:17.603006+08:00"},{"seq":83,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 11:14:17.603 [WARNING] [docker:129269bd] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-auth]\ntag does not exist: docker.fanson.cloud/fanson/fscp-auth:cache","timestamp":"2026-08-18T11:14:17.603392+08:00"},{"seq":84,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 11:14:17.603 [INFO] [orchestrator:129269bd] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579","timestamp":"2026-08-18T11:14:17.603510+08:00"},{"seq":85,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 11:14:17.640 [INFO] [agent:129269bd] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339, docker.fanson.cloud/fanson/fscp-system:develop-759ba48, docker.fanson.cloud/fanson/fscp-billing:develop-759ba48, docker.fanson.cloud/fanson/fscp-tenant:develop-759ba48, docker.fanson.cloud/fanson/fscp-auth:develop-6db0579","timestamp":"2026-08-18T11:14:17.640828+08:00"},{"seq":86,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 11:14:17.666 [INFO] [agent:129269bd] workspace cleaned","timestamp":"2026-08-18T11:14:17.666902+08:00"}]}