{"job_id":"b54d3122-1bcf-490c-8135-4e4be7e06371","filters":{"level":null,"component":null},"total":86,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 13:40:21.939 [INFO] [agent:b54d3122] 🚀 CI 流水线启动","timestamp":"2026-08-18T13:40:21.939634+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:21.939 [INFO] [git:b54d3122] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/b54d3122-1bcf-490c-8135-4e4be7e06371 (branch=develop)","timestamp":"2026-08-18T13:40:21.939918+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:23.010 [INFO] [git:b54d3122] Cloning into '/app/data/workspace/b54d3122-1bcf-490c-8135-4e4be7e06371'...","timestamp":"2026-08-18T13:40:23.010884+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:23.010 [INFO] [git:b54d3122] git clone success: /app/data/workspace/b54d3122-1bcf-490c-8135-4e4be7e06371","timestamp":"2026-08-18T13:40:23.010991+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 13:40:23.011 [INFO] [agent:b54d3122] 📦 代码已克隆到 /app/data/workspace/b54d3122-1bcf-490c-8135-4e4be7e06371","timestamp":"2026-08-18T13:40:23.011293+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:23.013 [INFO] [orchestrator:b54d3122] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-18T13:40:23.013743+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:23.474 [INFO] [orchestrator:b54d3122] 📝 检测到变更的目录: fscp-gateway, fscp-gateway/src","timestamp":"2026-08-18T13:40:23.474674+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:23.477 [INFO] [git:b54d3122] 目录 fscp-gateway 代码指纹: df7c7da","timestamp":"2026-08-18T13:40:23.477985+08:00"},{"seq":9,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:24.143 [INFO] [git:b54d3122] 目录 fscp-auth 代码指纹: 6db0579","timestamp":"2026-08-18T13:40:24.143250+08:00"},{"seq":10,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:24.516 [INFO] [docker:b54d3122] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579（跳过构建）","timestamp":"2026-08-18T13:40:24.516039+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:24.516 [INFO] [orchestrator:b54d3122] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-6db0579 已存在，代码指纹 6db0579)","timestamp":"2026-08-18T13:40:24.516169+08:00"},{"seq":12,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:24.519 [INFO] [git:b54d3122] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T13:40:24.519632+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:24.895 [INFO] [docker:b54d3122] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-system:develop-759ba48（跳过构建）","timestamp":"2026-08-18T13:40:24.895348+08:00"},{"seq":14,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:24.895 [INFO] [orchestrator:b54d3122] SKIP fanson/fscp-system (镜像 fanson/fscp-system:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T13:40:24.895473+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:24.899 [INFO] [git:b54d3122] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T13:40:24.899593+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.278 [INFO] [docker:b54d3122] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-billing:develop-759ba48（跳过构建）","timestamp":"2026-08-18T13:40:25.278275+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:25.278 [INFO] [orchestrator:b54d3122] SKIP fanson/fscp-billing (镜像 fanson/fscp-billing:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T13:40:25.278400+08:00"},{"seq":18,"level":"INFO","component":"git","message":"[git] 2026-08-18 13:40:25.281 [INFO] [git:b54d3122] 目录 fscp-modules 代码指纹: 759ba48","timestamp":"2026-08-18T13:40:25.281951+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.662 [INFO] [docker:b54d3122] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-tenant:develop-759ba48（跳过构建）","timestamp":"2026-08-18T13:40:25.662741+08:00"},{"seq":20,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:25.662 [INFO] [orchestrator:b54d3122] SKIP fanson/fscp-tenant (镜像 fanson/fscp-tenant:develop-759ba48 已存在，代码指纹 759ba48)","timestamp":"2026-08-18T13:40:25.662870+08:00"},{"seq":21,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:25.662 [INFO] [orchestrator:b54d3122] 🔨 开始构建 1 个服务","timestamp":"2026-08-18T13:40:25.662966+08:00"},{"seq":22,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:25.666 [INFO] [orchestrator:b54d3122] 🔨 构建服务: fanson/fscp-gateway → 镜像标签 fanson/fscp-gateway:develop-df7c7da","timestamp":"2026-08-18T13:40:25.666265+08:00"},{"seq":23,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:25.666 [INFO] [orchestrator:b54d3122] 已自动注入 -pl fscp-gateway -am: mvn -pl fscp-gateway -am clean package -DskipTests","timestamp":"2026-08-18T13:40:25.666420+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.666 [INFO] [docker:b54d3122] building docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da (with cache)","timestamp":"2026-08-18T13:40:25.666882+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.978 [INFO] [docker:b54d3122] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-18T13:40:25.978145+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.978 [INFO] [docker:b54d3122] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-18T13:40:25.978279+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.978 [INFO] [docker:b54d3122] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-18T13:40:25.978397+08:00"},{"seq":28,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 13:40:25.980 [ERROR] [docker:b54d3122] 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-18T13:40:25.980262+08:00"},{"seq":29,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 13:40:25.980 [WARNING] [docker:b54d3122] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-18T13:40:25.980581+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:25.980 [INFO] [docker:b54d3122] building docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da (native docker build)","timestamp":"2026-08-18T13:40:25.980670+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:26.711 [INFO] [docker:b54d3122] #1 DONE 0.5s","timestamp":"2026-08-18T13:40:26.711260+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:27.052 [INFO] [docker:b54d3122] #2 DONE 0.0s","timestamp":"2026-08-18T13:40:27.052387+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:27.352 [INFO] [docker:b54d3122] #3 DONE 0.6s","timestamp":"2026-08-18T13:40:27.352744+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:28.502 [INFO] [docker:b54d3122] #4 DONE 1.7s","timestamp":"2026-08-18T13:40:28.502696+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:28.967 [INFO] [docker:b54d3122] #5 DONE 0.5s","timestamp":"2026-08-18T13:40:28.967033+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.142 [INFO] [docker:b54d3122] #6 DONE 0.0s","timestamp":"2026-08-18T13:40:29.142676+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.142 [INFO] [docker:b54d3122] #7 DONE 0.0s","timestamp":"2026-08-18T13:40:29.142801+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.142 [INFO] [docker:b54d3122] #8 CACHED","timestamp":"2026-08-18T13:40:29.142900+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.707 [INFO] [docker:b54d3122] #9 DONE 0.7s","timestamp":"2026-08-18T13:40:29.707894+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.906 [INFO] [docker:b54d3122] #10 CACHED","timestamp":"2026-08-18T13:40:29.906390+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.906 [INFO] [docker:b54d3122] #11 CACHED","timestamp":"2026-08-18T13:40:29.906513+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.906 [INFO] [docker:b54d3122] #12 CACHED","timestamp":"2026-08-18T13:40:29.906614+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:29.906 [INFO] [docker:b54d3122] #13 CACHED","timestamp":"2026-08-18T13:40:29.906710+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:31.841 [INFO] [docker:b54d3122] #14 DONE 2.1s","timestamp":"2026-08-18T13:40:31.841945+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:42.589 [INFO] [docker:b54d3122] #15 DONE 10.7s","timestamp":"2026-08-18T13:40:42.589588+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:44.613 [INFO] [docker:b54d3122] #16 DONE 1.7s","timestamp":"2026-08-18T13:40:44.613077+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:45.740 [INFO] [docker:b54d3122] #17 DONE 1.0s","timestamp":"2026-08-18T13:40:45.740944+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.628 [INFO] [docker:b54d3122] build success: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da","timestamp":"2026-08-18T13:40:46.628878+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.628 [INFO] [docker:b54d3122] pushing docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da","timestamp":"2026-08-18T13:40:46.628984+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.664 [INFO] [docker:b54d3122] The push refers to repository [docker.fanson.cloud/fanson/fscp-gateway]","timestamp":"2026-08-18T13:40:46.664046+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] af1e3084ef5f: Preparing","timestamp":"2026-08-18T13:40:46.701298+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] 5f70bf18a086: Preparing","timestamp":"2026-08-18T13:40:46.701419+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] 71a2618c0925: Preparing","timestamp":"2026-08-18T13:40:46.701508+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] 6fc52eaf99f6: Preparing","timestamp":"2026-08-18T13:40:46.701596+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] cd4b3dc03178: Preparing","timestamp":"2026-08-18T13:40:46.701678+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] b4cfcb8385a8: Preparing","timestamp":"2026-08-18T13:40:46.701765+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] 2b730cf18c09: Preparing","timestamp":"2026-08-18T13:40:46.701846+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.701 [INFO] [docker:b54d3122] edeaba958753: Preparing","timestamp":"2026-08-18T13:40:46.701932+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 8bf42db0de72: Preparing","timestamp":"2026-08-18T13:40:46.702008+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 31892cc314cb: Preparing","timestamp":"2026-08-18T13:40:46.702083+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 11936051f93b: Preparing","timestamp":"2026-08-18T13:40:46.702159+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 8bf42db0de72: Waiting","timestamp":"2026-08-18T13:40:46.702235+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 31892cc314cb: Waiting","timestamp":"2026-08-18T13:40:46.702310+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] b4cfcb8385a8: Waiting","timestamp":"2026-08-18T13:40:46.702386+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 2b730cf18c09: Waiting","timestamp":"2026-08-18T13:40:46.702461+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] 11936051f93b: Waiting","timestamp":"2026-08-18T13:40:46.702538+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:46.702 [INFO] [docker:b54d3122] edeaba958753: Waiting","timestamp":"2026-08-18T13:40:46.702613+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.001 [INFO] [docker:b54d3122] cd4b3dc03178: Layer already exists","timestamp":"2026-08-18T13:40:47.001273+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.086 [INFO] [docker:b54d3122] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-18T13:40:47.086469+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.086 [INFO] [docker:b54d3122] 5f70bf18a086: Layer already exists","timestamp":"2026-08-18T13:40:47.086591+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.086 [INFO] [docker:b54d3122] 71a2618c0925: Layer already exists","timestamp":"2026-08-18T13:40:47.086761+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.144 [INFO] [docker:b54d3122] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-18T13:40:47.144717+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.185 [INFO] [docker:b54d3122] 2b730cf18c09: Layer already exists","timestamp":"2026-08-18T13:40:47.185569+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.185 [INFO] [docker:b54d3122] 8bf42db0de72: Layer already exists","timestamp":"2026-08-18T13:40:47.185682+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.186 [INFO] [docker:b54d3122] edeaba958753: Layer already exists","timestamp":"2026-08-18T13:40:47.186045+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.255 [INFO] [docker:b54d3122] 31892cc314cb: Layer already exists","timestamp":"2026-08-18T13:40:47.255775+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:47.315 [INFO] [docker:b54d3122] 11936051f93b: Layer already exists","timestamp":"2026-08-18T13:40:47.315819+08:00"},{"seq":78,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:54.940 [INFO] [docker:b54d3122] af1e3084ef5f: Pushed","timestamp":"2026-08-18T13:40:54.940347+08:00"},{"seq":79,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:55.677 [INFO] [docker:b54d3122] develop-df7c7da: digest: sha256:28605330b40e29307d74822e18099ee1ab47ed589d32aa5c4fda1febf422793b size: 2628","timestamp":"2026-08-18T13:40:55.677439+08:00"},{"seq":80,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:55.769 [INFO] [docker:b54d3122] The push refers to repository [docker.fanson.cloud/fanson/fscp-gateway]","timestamp":"2026-08-18T13:40:55.769716+08:00"},{"seq":81,"level":"INFO","component":"docker","message":"[docker] 2026-08-18 13:40:55.804 [INFO] [docker:b54d3122] tag does not exist: docker.fanson.cloud/fanson/fscp-gateway:cache","timestamp":"2026-08-18T13:40:55.804131+08:00"},{"seq":82,"level":"ERROR","component":"docker","message":"[docker] 2026-08-18 13:40:55.805 [ERROR] [docker:b54d3122] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-gateway]\ntag does not exist: docker.fanson.cloud/fanson/fscp-gateway:cache","timestamp":"2026-08-18T13:40:55.805433+08:00"},{"seq":83,"level":"WARNING","component":"docker","message":"[docker] 2026-08-18 13:40:55.805 [WARNING] [docker:b54d3122] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-gateway]\ntag does not exist: docker.fanson.cloud/fanson/fscp-gateway:cache","timestamp":"2026-08-18T13:40:55.805680+08:00"},{"seq":84,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-18 13:40:55.805 [INFO] [orchestrator:b54d3122] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-gateway:develop-df7c7da","timestamp":"2026-08-18T13:40:55.805806+08:00"},{"seq":85,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 13:40:55.842 [INFO] [agent:b54d3122] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-auth:develop-6db0579, 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-gateway:develop-df7c7da","timestamp":"2026-08-18T13:40:55.842457+08:00"},{"seq":86,"level":"INFO","component":"agent","message":"[agent] 2026-08-18 13:40:55.868 [INFO] [agent:b54d3122] workspace cleaned","timestamp":"2026-08-18T13:40:55.868470+08:00"}]}