{"job_id":"20f00637-5a9b-4bc5-b000-9fa09b53de67","filters":{"level":null,"component":null},"total":74,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 15:46:59.403 [INFO] [agent:20f00637] 🚀 CI 流水线启动","timestamp":"2026-09-16T15:46:59.403246+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-16 15:46:59.403 [INFO] [git:20f00637] cloning http://git.fanson.cloud/customer-project/jingneng/jn-isp-api.git -> /app/data/workspace/20f00637-5a9b-4bc5-b000-9fa09b53de67 (branch=new-develop)","timestamp":"2026-09-16T15:46:59.403547+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-16 15:47:00.238 [INFO] [git:20f00637] Cloning into '/app/data/workspace/20f00637-5a9b-4bc5-b000-9fa09b53de67'...","timestamp":"2026-09-16T15:47:00.238761+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-16 15:47:00.238 [INFO] [git:20f00637] git clone success: /app/data/workspace/20f00637-5a9b-4bc5-b000-9fa09b53de67","timestamp":"2026-09-16T15:47:00.238870+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 15:47:00.239 [INFO] [agent:20f00637] 📦 代码已克隆到 /app/data/workspace/20f00637-5a9b-4bc5-b000-9fa09b53de67","timestamp":"2026-09-16T15:47:00.239167+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:00.240 [INFO] [orchestrator:20f00637] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-16T15:47:00.240100+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:00.739 [INFO] [orchestrator:20f00637] 📝 检测到变更的目录: fanson-admin, fanson-admin/src, fanson-system, fanson-system/src","timestamp":"2026-09-16T15:47:00.739126+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-09-16 15:47:00.742 [INFO] [git:20f00637] 目录 fanson-admin 代码指纹: 4af898c","timestamp":"2026-09-16T15:47:00.742528+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:01.408 [INFO] [orchestrator:20f00637] 📝 单服务项目，开始构建（代码指纹 4af898c）","timestamp":"2026-09-16T15:47:01.408537+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:01.408 [INFO] [orchestrator:20f00637] 🔨 开始构建 1 个服务","timestamp":"2026-09-16T15:47:01.408681+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:01.412 [INFO] [orchestrator:20f00637] 🔨 构建服务: jingneng/jn-isp-api-fanson-admin-new → 镜像标签 jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c","timestamp":"2026-09-16T15:47:01.412111+08:00"},{"seq":12,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:01.412 [INFO] [orchestrator:20f00637] 已自动注入 -pl fanson-admin -am: mvn -pl fanson-admin -am clean package -DskipTests","timestamp":"2026-09-16T15:47:01.412250+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:01.412 [INFO] [docker:20f00637] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c (with cache)","timestamp":"2026-09-16T15:47:01.412760+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:01.728 [INFO] [docker:20f00637] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-16T15:47:01.728230+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:01.728 [INFO] [docker:20f00637] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-16T15:47:01.728356+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:01.728 [INFO] [docker:20f00637] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-16T15:47:01.728452+08:00"},{"seq":17,"level":"ERROR","component":"docker","message":"[docker] 2026-09-16 15:47:01.730 [ERROR] [docker:20f00637] 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-16T15:47:01.730440+08:00"},{"seq":18,"level":"WARNING","component":"docker","message":"[docker] 2026-09-16 15:47:01.730 [WARNING] [docker:20f00637] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-16T15:47:01.730769+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:01.730 [INFO] [docker:20f00637] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c (native docker build)","timestamp":"2026-09-16T15:47:01.730870+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:02.594 [INFO] [docker:20f00637] #1 DONE 0.6s","timestamp":"2026-09-16T15:47:02.594269+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:02.927 [INFO] [docker:20f00637] #2 DONE 0.0s","timestamp":"2026-09-16T15:47:02.927143+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:03.390 [INFO] [docker:20f00637] #4 DONE 0.7s","timestamp":"2026-09-16T15:47:03.390648+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:04.319 [INFO] [docker:20f00637] #3 DONE 1.7s","timestamp":"2026-09-16T15:47:04.319375+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:04.883 [INFO] [docker:20f00637] #5 DONE 0.6s","timestamp":"2026-09-16T15:47:04.883093+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.092 [INFO] [docker:20f00637] #6 DONE 0.0s","timestamp":"2026-09-16T15:47:05.092909+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.093 [INFO] [docker:20f00637] #7 DONE 0.0s","timestamp":"2026-09-16T15:47:05.093033+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.679 [INFO] [docker:20f00637] #8 DONE 0.7s","timestamp":"2026-09-16T15:47:05.679263+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.877 [INFO] [docker:20f00637] #9 CACHED","timestamp":"2026-09-16T15:47:05.877503+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.877 [INFO] [docker:20f00637] #10 CACHED","timestamp":"2026-09-16T15:47:05.877642+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.877 [INFO] [docker:20f00637] #11 CACHED","timestamp":"2026-09-16T15:47:05.877779+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:05.877 [INFO] [docker:20f00637] #12 CACHED","timestamp":"2026-09-16T15:47:05.877890+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:07.326 [INFO] [docker:20f00637] #13 DONE 1.6s","timestamp":"2026-09-16T15:47:07.326939+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:16.283 [INFO] [docker:20f00637] #14 DONE 8.9s","timestamp":"2026-09-16T15:47:16.283261+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:16.659 [INFO] [docker:20f00637] #15 CACHED","timestamp":"2026-09-16T15:47:16.659407+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:18.505 [INFO] [docker:20f00637] #16 DONE 1.8s","timestamp":"2026-09-16T15:47:18.505749+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:20.109 [INFO] [docker:20f00637] #17 DONE 1.5s","timestamp":"2026-09-16T15:47:20.109197+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.384 [INFO] [docker:20f00637] build success: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c","timestamp":"2026-09-16T15:47:21.384474+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.384 [INFO] [docker:20f00637] pushing docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c","timestamp":"2026-09-16T15:47:21.384586+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.464 [INFO] [docker:20f00637] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-16T15:47:21.464673+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.543 [INFO] [docker:20f00637] 4e1efc445ba4: Preparing","timestamp":"2026-09-16T15:47:21.543632+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.543 [INFO] [docker:20f00637] 5f70bf18a086: Preparing","timestamp":"2026-09-16T15:47:21.543776+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.543 [INFO] [docker:20f00637] 71a2618c0925: Preparing","timestamp":"2026-09-16T15:47:21.543870+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.543 [INFO] [docker:20f00637] 6fc52eaf99f6: Preparing","timestamp":"2026-09-16T15:47:21.543958+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] cd4b3dc03178: Preparing","timestamp":"2026-09-16T15:47:21.544041+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] b4cfcb8385a8: Preparing","timestamp":"2026-09-16T15:47:21.544122+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 2b730cf18c09: Preparing","timestamp":"2026-09-16T15:47:21.544204+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] edeaba958753: Preparing","timestamp":"2026-09-16T15:47:21.544285+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 8bf42db0de72: Preparing","timestamp":"2026-09-16T15:47:21.544364+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 31892cc314cb: Preparing","timestamp":"2026-09-16T15:47:21.544443+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 11936051f93b: Preparing","timestamp":"2026-09-16T15:47:21.544526+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] edeaba958753: Waiting","timestamp":"2026-09-16T15:47:21.544606+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 8bf42db0de72: Waiting","timestamp":"2026-09-16T15:47:21.544684+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 11936051f93b: Waiting","timestamp":"2026-09-16T15:47:21.544775+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] 31892cc314cb: Waiting","timestamp":"2026-09-16T15:47:21.544863+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.544 [INFO] [docker:20f00637] b4cfcb8385a8: Waiting","timestamp":"2026-09-16T15:47:21.544943+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.881 [INFO] [docker:20f00637] 71a2618c0925: Layer already exists","timestamp":"2026-09-16T15:47:21.881981+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.882 [INFO] [docker:20f00637] cd4b3dc03178: Layer already exists","timestamp":"2026-09-16T15:47:21.882203+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.918 [INFO] [docker:20f00637] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-16T15:47:21.918962+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:21.919 [INFO] [docker:20f00637] 5f70bf18a086: Layer already exists","timestamp":"2026-09-16T15:47:21.919256+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.051 [INFO] [docker:20f00637] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-16T15:47:22.051756+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.072 [INFO] [docker:20f00637] 8bf42db0de72: Layer already exists","timestamp":"2026-09-16T15:47:22.072988+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.073 [INFO] [docker:20f00637] edeaba958753: Layer already exists","timestamp":"2026-09-16T15:47:22.073115+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.073 [INFO] [docker:20f00637] 2b730cf18c09: Layer already exists","timestamp":"2026-09-16T15:47:22.073588+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.176 [INFO] [docker:20f00637] 11936051f93b: Layer already exists","timestamp":"2026-09-16T15:47:22.176060+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:22.176 [INFO] [docker:20f00637] 31892cc314cb: Layer already exists","timestamp":"2026-09-16T15:47:22.176204+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:29.178 [INFO] [docker:20f00637] 4e1efc445ba4: Pushed","timestamp":"2026-09-16T15:47:29.178655+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:29.927 [INFO] [docker:20f00637] new-develop-4af898c: digest: sha256:95b83367fe655ee8530750c19cda85f7eba77ea0e0eba50a184ef560ba7b3925 size: 2628","timestamp":"2026-09-16T15:47:29.927352+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:30.024 [INFO] [docker:20f00637] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-16T15:47:30.024031+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 15:47:30.059 [INFO] [docker:20f00637] tag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-16T15:47:30.059102+08:00"},{"seq":70,"level":"ERROR","component":"docker","message":"[docker] 2026-09-16 15:47:30.059 [ERROR] [docker:20f00637] 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-16T15:47:30.059955+08:00"},{"seq":71,"level":"WARNING","component":"docker","message":"[docker] 2026-09-16 15:47:30.060 [WARNING] [docker:20f00637] 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-16T15:47:30.060299+08:00"},{"seq":72,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 15:47:30.060 [INFO] [orchestrator:20f00637] ✅ 服务构建完成: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c","timestamp":"2026-09-16T15:47:30.060420+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 15:47:30.098 [INFO] [agent:20f00637] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-4af898c","timestamp":"2026-09-16T15:47:30.098112+08:00"},{"seq":74,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 15:47:30.129 [INFO] [agent:20f00637] workspace cleaned","timestamp":"2026-09-16T15:47:30.129647+08:00"}]}