{"job_id":"ffd72df3-6b70-4640-a558-28f510786871","filters":{"level":null,"component":null},"total":75,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-15 12:51:20.130 [INFO] [agent:ffd72df3] 🚀 CI 流水线启动","timestamp":"2026-09-15T12:51:20.130381+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-15 12:51:20.130 [INFO] [git:ffd72df3] cloning http://git.fanson.cloud/customer-project/jingneng/jn-isp-api.git -> /app/data/workspace/ffd72df3-6b70-4640-a558-28f510786871 (branch=new-develop)","timestamp":"2026-09-15T12:51:20.130682+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-15 12:51:20.941 [INFO] [git:ffd72df3] Cloning into '/app/data/workspace/ffd72df3-6b70-4640-a558-28f510786871'...","timestamp":"2026-09-15T12:51:20.941389+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-15 12:51:20.941 [INFO] [git:ffd72df3] git clone success: /app/data/workspace/ffd72df3-6b70-4640-a558-28f510786871","timestamp":"2026-09-15T12:51:20.941510+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-15 12:51:20.941 [INFO] [agent:ffd72df3] 📦 代码已克隆到 /app/data/workspace/ffd72df3-6b70-4640-a558-28f510786871","timestamp":"2026-09-15T12:51:20.941809+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:20.942 [INFO] [orchestrator:ffd72df3] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-15T12:51:20.942748+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:21.414 [INFO] [orchestrator:ffd72df3] 📝 检测到变更的目录: fanson-admin, fanson-admin/src","timestamp":"2026-09-15T12:51:21.414484+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-09-15 12:51:21.417 [INFO] [git:ffd72df3] 目录 fanson-admin 代码指纹: 8a3c2ca","timestamp":"2026-09-15T12:51:21.417342+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:22.041 [INFO] [orchestrator:ffd72df3] 📝 单服务项目，开始构建（代码指纹 8a3c2ca）","timestamp":"2026-09-15T12:51:22.041399+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:22.041 [INFO] [orchestrator:ffd72df3] 🔨 开始构建 1 个服务","timestamp":"2026-09-15T12:51:22.041520+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:22.045 [INFO] [orchestrator:ffd72df3] 🔨 构建服务: jingneng/jn-isp-api-fanson-admin-new → 镜像标签 jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca","timestamp":"2026-09-15T12:51:22.045277+08:00"},{"seq":12,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:22.045 [INFO] [orchestrator:ffd72df3] 已自动注入 -pl fanson-admin -am: mvn -pl fanson-admin -am clean package -DskipTests","timestamp":"2026-09-15T12:51:22.045407+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:22.045 [INFO] [docker:ffd72df3] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca (with cache)","timestamp":"2026-09-15T12:51:22.045941+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:22.382 [INFO] [docker:ffd72df3] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-15T12:51:22.382889+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:22.383 [INFO] [docker:ffd72df3] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-15T12:51:22.383022+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:22.383 [INFO] [docker:ffd72df3] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-15T12:51:22.383116+08:00"},{"seq":17,"level":"ERROR","component":"docker","message":"[docker] 2026-09-15 12:51:22.385 [ERROR] [docker:ffd72df3] 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-15T12:51:22.385031+08:00"},{"seq":18,"level":"WARNING","component":"docker","message":"[docker] 2026-09-15 12:51:22.385 [WARNING] [docker:ffd72df3] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-15T12:51:22.385432+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:22.385 [INFO] [docker:ffd72df3] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca (native docker build)","timestamp":"2026-09-15T12:51:22.385588+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:23.160 [INFO] [docker:ffd72df3] #1 DONE 0.5s","timestamp":"2026-09-15T12:51:23.160559+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:23.472 [INFO] [docker:ffd72df3] #2 DONE 0.0s","timestamp":"2026-09-15T12:51:23.472924+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:23.879 [INFO] [docker:ffd72df3] #4 DONE 0.7s","timestamp":"2026-09-15T12:51:23.879414+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:25.239 [INFO] [docker:ffd72df3] #3 DONE 2.0s","timestamp":"2026-09-15T12:51:25.239406+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:25.821 [INFO] [docker:ffd72df3] #5 DONE 0.6s","timestamp":"2026-09-15T12:51:25.821343+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.012 [INFO] [docker:ffd72df3] #6 DONE 0.0s","timestamp":"2026-09-15T12:51:26.012332+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.012 [INFO] [docker:ffd72df3] #7 DONE 0.0s","timestamp":"2026-09-15T12:51:26.012479+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.632 [INFO] [docker:ffd72df3] #8 DONE 0.8s","timestamp":"2026-09-15T12:51:26.632515+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.830 [INFO] [docker:ffd72df3] #9 CACHED","timestamp":"2026-09-15T12:51:26.830688+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.830 [INFO] [docker:ffd72df3] #10 CACHED","timestamp":"2026-09-15T12:51:26.830837+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.830 [INFO] [docker:ffd72df3] #11 CACHED","timestamp":"2026-09-15T12:51:26.830951+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:26.831 [INFO] [docker:ffd72df3] #12 CACHED","timestamp":"2026-09-15T12:51:26.831060+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:28.313 [INFO] [docker:ffd72df3] #13 DONE 1.6s","timestamp":"2026-09-15T12:51:28.313312+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:37.722 [INFO] [docker:ffd72df3] #14 DONE 9.3s","timestamp":"2026-09-15T12:51:37.722912+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:38.124 [INFO] [docker:ffd72df3] #15 CACHED","timestamp":"2026-09-15T12:51:38.124377+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:39.956 [INFO] [docker:ffd72df3] #16 DONE 1.8s","timestamp":"2026-09-15T12:51:39.956550+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:41.504 [INFO] [docker:ffd72df3] #17 DONE 1.5s","timestamp":"2026-09-15T12:51:41.504465+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.426 [INFO] [docker:ffd72df3] build success: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca","timestamp":"2026-09-15T12:51:42.426152+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.426 [INFO] [docker:ffd72df3] pushing docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca","timestamp":"2026-09-15T12:51:42.426260+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.496 [INFO] [docker:ffd72df3] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-15T12:51:42.496379+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.531 [INFO] [docker:ffd72df3] 5f93f065c7fe: Preparing","timestamp":"2026-09-15T12:51:42.531799+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.531 [INFO] [docker:ffd72df3] 5f70bf18a086: Preparing","timestamp":"2026-09-15T12:51:42.531926+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 71a2618c0925: Preparing","timestamp":"2026-09-15T12:51:42.532019+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 6fc52eaf99f6: Preparing","timestamp":"2026-09-15T12:51:42.532106+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] cd4b3dc03178: Preparing","timestamp":"2026-09-15T12:51:42.532190+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] b4cfcb8385a8: Preparing","timestamp":"2026-09-15T12:51:42.532273+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 2b730cf18c09: Preparing","timestamp":"2026-09-15T12:51:42.532353+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] edeaba958753: Preparing","timestamp":"2026-09-15T12:51:42.532432+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 8bf42db0de72: Preparing","timestamp":"2026-09-15T12:51:42.532512+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 31892cc314cb: Preparing","timestamp":"2026-09-15T12:51:42.532591+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 11936051f93b: Preparing","timestamp":"2026-09-15T12:51:42.532670+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 8bf42db0de72: Waiting","timestamp":"2026-09-15T12:51:42.532762+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 31892cc314cb: Waiting","timestamp":"2026-09-15T12:51:42.532842+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.532 [INFO] [docker:ffd72df3] 11936051f93b: Waiting","timestamp":"2026-09-15T12:51:42.532924+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.533 [INFO] [docker:ffd72df3] 2b730cf18c09: Waiting","timestamp":"2026-09-15T12:51:42.533008+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.533 [INFO] [docker:ffd72df3] edeaba958753: Waiting","timestamp":"2026-09-15T12:51:42.533089+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.533 [INFO] [docker:ffd72df3] b4cfcb8385a8: Waiting","timestamp":"2026-09-15T12:51:42.533168+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.867 [INFO] [docker:ffd72df3] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-15T12:51:42.867451+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.911 [INFO] [docker:ffd72df3] 71a2618c0925: Layer already exists","timestamp":"2026-09-15T12:51:42.911847+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.912 [INFO] [docker:ffd72df3] cd4b3dc03178: Layer already exists","timestamp":"2026-09-15T12:51:42.912010+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.912 [INFO] [docker:ffd72df3] 5f70bf18a086: Layer already exists","timestamp":"2026-09-15T12:51:42.912378+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:42.921 [INFO] [docker:ffd72df3] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-15T12:51:42.921883+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:43.032 [INFO] [docker:ffd72df3] 31892cc314cb: Layer already exists","timestamp":"2026-09-15T12:51:43.032703+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:43.044 [INFO] [docker:ffd72df3] 8bf42db0de72: Layer already exists","timestamp":"2026-09-15T12:51:43.044325+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:43.044 [INFO] [docker:ffd72df3] 2b730cf18c09: Layer already exists","timestamp":"2026-09-15T12:51:43.044480+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:43.045 [INFO] [docker:ffd72df3] edeaba958753: Layer already exists","timestamp":"2026-09-15T12:51:43.045487+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:43.131 [INFO] [docker:ffd72df3] 11936051f93b: Layer already exists","timestamp":"2026-09-15T12:51:43.131952+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:49.799 [INFO] [docker:ffd72df3] 5f93f065c7fe: Pushed","timestamp":"2026-09-15T12:51:49.799080+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:50.547 [INFO] [docker:ffd72df3] new-develop-8a3c2ca: digest: sha256:5362cd37b787ecdd33e541517175a7dc556776b4fc97ec777e72d3609ab7b009 size: 2628","timestamp":"2026-09-15T12:51:50.547618+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:50.633 [INFO] [docker:ffd72df3] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-15T12:51:50.633257+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-09-15 12:51:50.668 [INFO] [docker:ffd72df3] tag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-15T12:51:50.668343+08:00"},{"seq":71,"level":"ERROR","component":"docker","message":"[docker] 2026-09-15 12:51:50.669 [ERROR] [docker:ffd72df3] 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-15T12:51:50.669166+08:00"},{"seq":72,"level":"WARNING","component":"docker","message":"[docker] 2026-09-15 12:51:50.669 [WARNING] [docker:ffd72df3] 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-15T12:51:50.669575+08:00"},{"seq":73,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-15 12:51:50.669 [INFO] [orchestrator:ffd72df3] ✅ 服务构建完成: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca","timestamp":"2026-09-15T12:51:50.669720+08:00"},{"seq":74,"level":"INFO","component":"agent","message":"[agent] 2026-09-15 12:51:50.706 [INFO] [agent:ffd72df3] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-8a3c2ca","timestamp":"2026-09-15T12:51:50.706182+08:00"},{"seq":75,"level":"INFO","component":"agent","message":"[agent] 2026-09-15 12:51:50.730 [INFO] [agent:ffd72df3] workspace cleaned","timestamp":"2026-09-15T12:51:50.730053+08:00"}]}