{"job_id":"fc726c0a-3004-4d8c-aeba-7dc0d014b8ae","filters":{"level":null,"component":null},"total":75,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 15:21:13.221 [INFO] [agent:fc726c0a] 🚀 CI 流水线启动","timestamp":"2026-09-18T15:21:13.221648+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-18 15:21:13.221 [INFO] [git:fc726c0a] cloning http://git.fanson.cloud/customer-project/jingneng/jn-isp-api.git -> /app/data/workspace/fc726c0a-3004-4d8c-aeba-7dc0d014b8ae (branch=new-develop)","timestamp":"2026-09-18T15:21:13.221935+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-18 15:21:14.077 [INFO] [git:fc726c0a] Cloning into '/app/data/workspace/fc726c0a-3004-4d8c-aeba-7dc0d014b8ae'...","timestamp":"2026-09-18T15:21:14.077980+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-18 15:21:14.078 [INFO] [git:fc726c0a] git clone success: /app/data/workspace/fc726c0a-3004-4d8c-aeba-7dc0d014b8ae","timestamp":"2026-09-18T15:21:14.078105+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 15:21:14.078 [INFO] [agent:fc726c0a] 📦 代码已克隆到 /app/data/workspace/fc726c0a-3004-4d8c-aeba-7dc0d014b8ae","timestamp":"2026-09-18T15:21:14.078390+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:14.079 [INFO] [orchestrator:fc726c0a] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-18T15:21:14.079322+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:14.575 [INFO] [orchestrator:fc726c0a] 📝 检测到变更的目录: fanson-admin, fanson-admin/src, fanson-system, fanson-system/src","timestamp":"2026-09-18T15:21:14.575127+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-09-18 15:21:14.578 [INFO] [git:fc726c0a] 目录 fanson-admin 代码指纹: 7cb7fd9","timestamp":"2026-09-18T15:21:14.578504+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:15.214 [INFO] [orchestrator:fc726c0a] 📝 单服务项目，开始构建（代码指纹 7cb7fd9）","timestamp":"2026-09-18T15:21:15.214529+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:15.214 [INFO] [orchestrator:fc726c0a] 🔨 开始构建 1 个服务","timestamp":"2026-09-18T15:21:15.214657+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:15.218 [INFO] [orchestrator:fc726c0a] 🔨 构建服务: jingneng/jn-isp-api-fanson-admin-new → 镜像标签 jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9","timestamp":"2026-09-18T15:21:15.218384+08:00"},{"seq":12,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:15.218 [INFO] [orchestrator:fc726c0a] 已自动注入 -pl fanson-admin -am: mvn -pl fanson-admin -am clean package -DskipTests","timestamp":"2026-09-18T15:21:15.218519+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:15.219 [INFO] [docker:fc726c0a] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9 (with cache)","timestamp":"2026-09-18T15:21:15.219051+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:15.498 [INFO] [docker:fc726c0a] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-18T15:21:15.498764+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:15.498 [INFO] [docker:fc726c0a] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-18T15:21:15.498896+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:15.498 [INFO] [docker:fc726c0a] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-18T15:21:15.498992+08:00"},{"seq":17,"level":"ERROR","component":"docker","message":"[docker] 2026-09-18 15:21:15.500 [ERROR] [docker:fc726c0a] 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-09-18T15:21:15.500980+08:00"},{"seq":18,"level":"WARNING","component":"docker","message":"[docker] 2026-09-18 15:21:15.501 [WARNING] [docker:fc726c0a] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-18T15:21:15.501413+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:15.501 [INFO] [docker:fc726c0a] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9 (native docker build)","timestamp":"2026-09-18T15:21:15.501544+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:16.309 [INFO] [docker:fc726c0a] #1 DONE 0.6s","timestamp":"2026-09-18T15:21:16.309340+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:16.684 [INFO] [docker:fc726c0a] #2 DONE 0.0s","timestamp":"2026-09-18T15:21:16.684444+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:17.238 [INFO] [docker:fc726c0a] #4 DONE 0.9s","timestamp":"2026-09-18T15:21:17.238450+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:17.404 [INFO] [docker:fc726c0a] #3 DONE 1.0s","timestamp":"2026-09-18T15:21:17.404074+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:17.956 [INFO] [docker:fc726c0a] #5 DONE 0.6s","timestamp":"2026-09-18T15:21:17.956839+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.154 [INFO] [docker:fc726c0a] #6 DONE 0.0s","timestamp":"2026-09-18T15:21:18.154576+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.154 [INFO] [docker:fc726c0a] #7 DONE 0.0s","timestamp":"2026-09-18T15:21:18.154711+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.697 [INFO] [docker:fc726c0a] #8 DONE 0.7s","timestamp":"2026-09-18T15:21:18.697729+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.895 [INFO] [docker:fc726c0a] #9 CACHED","timestamp":"2026-09-18T15:21:18.895889+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.896 [INFO] [docker:fc726c0a] #10 CACHED","timestamp":"2026-09-18T15:21:18.896020+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.896 [INFO] [docker:fc726c0a] #11 CACHED","timestamp":"2026-09-18T15:21:18.896126+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:18.896 [INFO] [docker:fc726c0a] #12 CACHED","timestamp":"2026-09-18T15:21:18.896225+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:20.234 [INFO] [docker:fc726c0a] #13 DONE 1.5s","timestamp":"2026-09-18T15:21:20.234791+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:29.688 [INFO] [docker:fc726c0a] #14 DONE 9.4s","timestamp":"2026-09-18T15:21:29.688621+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:30.040 [INFO] [docker:fc726c0a] #15 CACHED","timestamp":"2026-09-18T15:21:30.040673+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:31.789 [INFO] [docker:fc726c0a] #16 DONE 1.7s","timestamp":"2026-09-18T15:21:31.789605+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:33.658 [INFO] [docker:fc726c0a] #17 DONE 1.8s","timestamp":"2026-09-18T15:21:33.658204+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.657 [INFO] [docker:fc726c0a] build success: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9","timestamp":"2026-09-18T15:21:34.657078+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.657 [INFO] [docker:fc726c0a] pushing docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9","timestamp":"2026-09-18T15:21:34.657190+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.736 [INFO] [docker:fc726c0a] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-18T15:21:34.736787+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.771 [INFO] [docker:fc726c0a] 41da8c94aa3d: Preparing","timestamp":"2026-09-18T15:21:34.771494+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.771 [INFO] [docker:fc726c0a] 5f70bf18a086: Preparing","timestamp":"2026-09-18T15:21:34.771610+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.771 [INFO] [docker:fc726c0a] 71a2618c0925: Preparing","timestamp":"2026-09-18T15:21:34.771719+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.771 [INFO] [docker:fc726c0a] 6fc52eaf99f6: Preparing","timestamp":"2026-09-18T15:21:34.771826+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.771 [INFO] [docker:fc726c0a] cd4b3dc03178: Preparing","timestamp":"2026-09-18T15:21:34.771921+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] b4cfcb8385a8: Preparing","timestamp":"2026-09-18T15:21:34.772012+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 2b730cf18c09: Preparing","timestamp":"2026-09-18T15:21:34.772103+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] edeaba958753: Preparing","timestamp":"2026-09-18T15:21:34.772192+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 8bf42db0de72: Preparing","timestamp":"2026-09-18T15:21:34.772281+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 31892cc314cb: Preparing","timestamp":"2026-09-18T15:21:34.772370+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 11936051f93b: Preparing","timestamp":"2026-09-18T15:21:34.772458+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 8bf42db0de72: Waiting","timestamp":"2026-09-18T15:21:34.772547+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 11936051f93b: Waiting","timestamp":"2026-09-18T15:21:34.772636+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] b4cfcb8385a8: Waiting","timestamp":"2026-09-18T15:21:34.772734+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 31892cc314cb: Waiting","timestamp":"2026-09-18T15:21:34.772827+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.772 [INFO] [docker:fc726c0a] 2b730cf18c09: Waiting","timestamp":"2026-09-18T15:21:34.772916+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:34.773 [INFO] [docker:fc726c0a] edeaba958753: Waiting","timestamp":"2026-09-18T15:21:34.773005+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.097 [INFO] [docker:fc726c0a] 71a2618c0925: Layer already exists","timestamp":"2026-09-18T15:21:35.097081+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.206 [INFO] [docker:fc726c0a] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-18T15:21:35.206990+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.208 [INFO] [docker:fc726c0a] cd4b3dc03178: Layer already exists","timestamp":"2026-09-18T15:21:35.208246+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.208 [INFO] [docker:fc726c0a] 5f70bf18a086: Layer already exists","timestamp":"2026-09-18T15:21:35.208616+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.243 [INFO] [docker:fc726c0a] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-18T15:21:35.243538+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.366 [INFO] [docker:fc726c0a] 2b730cf18c09: Layer already exists","timestamp":"2026-09-18T15:21:35.366723+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.385 [INFO] [docker:fc726c0a] 31892cc314cb: Layer already exists","timestamp":"2026-09-18T15:21:35.385299+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.385 [INFO] [docker:fc726c0a] 8bf42db0de72: Layer already exists","timestamp":"2026-09-18T15:21:35.385748+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.386 [INFO] [docker:fc726c0a] edeaba958753: Layer already exists","timestamp":"2026-09-18T15:21:35.386172+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:35.473 [INFO] [docker:fc726c0a] 11936051f93b: Layer already exists","timestamp":"2026-09-18T15:21:35.473181+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:42.218 [INFO] [docker:fc726c0a] 41da8c94aa3d: Pushed","timestamp":"2026-09-18T15:21:42.218077+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:42.977 [INFO] [docker:fc726c0a] new-develop-7cb7fd9: digest: sha256:3020b0a381fb71c8202e14245309e41e875425a421f57d158b8fc7ea67e1c7b8 size: 2628","timestamp":"2026-09-18T15:21:42.977103+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:43.070 [INFO] [docker:fc726c0a] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-18T15:21:43.070533+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 15:21:43.104 [INFO] [docker:fc726c0a] tag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-18T15:21:43.104036+08:00"},{"seq":71,"level":"ERROR","component":"docker","message":"[docker] 2026-09-18 15:21:43.104 [ERROR] [docker:fc726c0a] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]\ntag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-18T15:21:43.104875+08:00"},{"seq":72,"level":"WARNING","component":"docker","message":"[docker] 2026-09-18 15:21:43.105 [WARNING] [docker:fc726c0a] cache push skipped: The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]\ntag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-18T15:21:43.105201+08:00"},{"seq":73,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 15:21:43.105 [INFO] [orchestrator:fc726c0a] ✅ 服务构建完成: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9","timestamp":"2026-09-18T15:21:43.105318+08:00"},{"seq":74,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 15:21:43.143 [INFO] [agent:fc726c0a] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-7cb7fd9","timestamp":"2026-09-18T15:21:43.143147+08:00"},{"seq":75,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 15:21:43.167 [INFO] [agent:fc726c0a] workspace cleaned","timestamp":"2026-09-18T15:21:43.167407+08:00"}]}