{"job_id":"c6bffe46-e4be-46f6-bd13-c6281332a2b0","filters":{"level":null,"component":null},"total":75,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 13:33:57.182 [INFO] [agent:c6bffe46] 🚀 CI 流水线启动","timestamp":"2026-09-16T13:33:57.182386+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-16 13:33:57.182 [INFO] [git:c6bffe46] cloning http://git.fanson.cloud/customer-project/jingneng/jn-isp-api.git -> /app/data/workspace/c6bffe46-e4be-46f6-bd13-c6281332a2b0 (branch=new-develop)","timestamp":"2026-09-16T13:33:57.182754+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-16 13:33:58.024 [INFO] [git:c6bffe46] Cloning into '/app/data/workspace/c6bffe46-e4be-46f6-bd13-c6281332a2b0'...","timestamp":"2026-09-16T13:33:58.024399+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-16 13:33:58.024 [INFO] [git:c6bffe46] git clone success: /app/data/workspace/c6bffe46-e4be-46f6-bd13-c6281332a2b0","timestamp":"2026-09-16T13:33:58.024524+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 13:33:58.024 [INFO] [agent:c6bffe46] 📦 代码已克隆到 /app/data/workspace/c6bffe46-e4be-46f6-bd13-c6281332a2b0","timestamp":"2026-09-16T13:33:58.024898+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:58.025 [INFO] [orchestrator:c6bffe46] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-16T13:33:58.025871+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:58.555 [INFO] [orchestrator:c6bffe46] 📝 检测到变更的目录: fanson-admin, fanson-admin/src, fanson-system, fanson-system/src","timestamp":"2026-09-16T13:33:58.555372+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-09-16 13:33:58.558 [INFO] [git:c6bffe46] 目录 fanson-admin 代码指纹: bfadf8d","timestamp":"2026-09-16T13:33:58.558649+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:59.425 [INFO] [orchestrator:c6bffe46] 📝 单服务项目，开始构建（代码指纹 bfadf8d）","timestamp":"2026-09-16T13:33:59.425421+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:59.425 [INFO] [orchestrator:c6bffe46] 🔨 开始构建 1 个服务","timestamp":"2026-09-16T13:33:59.425542+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:59.429 [INFO] [orchestrator:c6bffe46] 🔨 构建服务: jingneng/jn-isp-api-fanson-admin-new → 镜像标签 jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d","timestamp":"2026-09-16T13:33:59.429756+08:00"},{"seq":12,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:33:59.429 [INFO] [orchestrator:c6bffe46] 已自动注入 -pl fanson-admin -am: mvn -pl fanson-admin -am clean package -DskipTests","timestamp":"2026-09-16T13:33:59.429877+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:33:59.430 [INFO] [docker:c6bffe46] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d (with cache)","timestamp":"2026-09-16T13:33:59.430377+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:33:59.672 [INFO] [docker:c6bffe46] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-16T13:33:59.672061+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:33:59.672 [INFO] [docker:c6bffe46] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-16T13:33:59.672198+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:33:59.672 [INFO] [docker:c6bffe46] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-16T13:33:59.672293+08:00"},{"seq":17,"level":"ERROR","component":"docker","message":"[docker] 2026-09-16 13:33:59.674 [ERROR] [docker:c6bffe46] 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-16T13:33:59.674296+08:00"},{"seq":18,"level":"WARNING","component":"docker","message":"[docker] 2026-09-16 13:33:59.674 [WARNING] [docker:c6bffe46] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-16T13:33:59.674758+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:33:59.674 [INFO] [docker:c6bffe46] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d (native docker build)","timestamp":"2026-09-16T13:33:59.674903+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:00.470 [INFO] [docker:c6bffe46] #1 DONE 0.6s","timestamp":"2026-09-16T13:34:00.470939+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:00.821 [INFO] [docker:c6bffe46] #2 DONE 0.0s","timestamp":"2026-09-16T13:34:00.821854+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:01.223 [INFO] [docker:c6bffe46] #4 DONE 0.7s","timestamp":"2026-09-16T13:34:01.223023+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:02.173 [INFO] [docker:c6bffe46] #3 DONE 1.6s","timestamp":"2026-09-16T13:34:02.173946+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:02.682 [INFO] [docker:c6bffe46] #5 DONE 0.5s","timestamp":"2026-09-16T13:34:02.682425+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:02.891 [INFO] [docker:c6bffe46] #6 DONE 0.0s","timestamp":"2026-09-16T13:34:02.891246+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:02.891 [INFO] [docker:c6bffe46] #7 DONE 0.0s","timestamp":"2026-09-16T13:34:02.891401+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:03.367 [INFO] [docker:c6bffe46] #8 DONE 0.6s","timestamp":"2026-09-16T13:34:03.367987+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:03.544 [INFO] [docker:c6bffe46] #9 CACHED","timestamp":"2026-09-16T13:34:03.544208+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:03.544 [INFO] [docker:c6bffe46] #10 CACHED","timestamp":"2026-09-16T13:34:03.544335+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:03.544 [INFO] [docker:c6bffe46] #11 CACHED","timestamp":"2026-09-16T13:34:03.544467+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:03.544 [INFO] [docker:c6bffe46] #12 CACHED","timestamp":"2026-09-16T13:34:03.544578+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:05.048 [INFO] [docker:c6bffe46] #13 DONE 1.7s","timestamp":"2026-09-16T13:34:05.048763+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:14.447 [INFO] [docker:c6bffe46] #14 DONE 9.3s","timestamp":"2026-09-16T13:34:14.447451+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:14.892 [INFO] [docker:c6bffe46] #15 CACHED","timestamp":"2026-09-16T13:34:14.892750+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:16.747 [INFO] [docker:c6bffe46] #16 DONE 1.9s","timestamp":"2026-09-16T13:34:16.747351+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:18.649 [INFO] [docker:c6bffe46] #17 DONE 1.7s","timestamp":"2026-09-16T13:34:18.649168+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.880 [INFO] [docker:c6bffe46] build success: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d","timestamp":"2026-09-16T13:34:19.880347+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.880 [INFO] [docker:c6bffe46] pushing docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d","timestamp":"2026-09-16T13:34:19.880462+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.939 [INFO] [docker:c6bffe46] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-16T13:34:19.939518+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] d806fdaf18ad: Preparing","timestamp":"2026-09-16T13:34:19.974037+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 5f70bf18a086: Preparing","timestamp":"2026-09-16T13:34:19.974156+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 71a2618c0925: Preparing","timestamp":"2026-09-16T13:34:19.974246+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 6fc52eaf99f6: Preparing","timestamp":"2026-09-16T13:34:19.974331+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] cd4b3dc03178: Preparing","timestamp":"2026-09-16T13:34:19.974414+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] b4cfcb8385a8: Preparing","timestamp":"2026-09-16T13:34:19.974500+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 2b730cf18c09: Preparing","timestamp":"2026-09-16T13:34:19.974585+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] edeaba958753: Preparing","timestamp":"2026-09-16T13:34:19.974668+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 8bf42db0de72: Preparing","timestamp":"2026-09-16T13:34:19.974762+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 31892cc314cb: Preparing","timestamp":"2026-09-16T13:34:19.974843+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] 11936051f93b: Preparing","timestamp":"2026-09-16T13:34:19.974923+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.974 [INFO] [docker:c6bffe46] b4cfcb8385a8: Waiting","timestamp":"2026-09-16T13:34:19.975002+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.975 [INFO] [docker:c6bffe46] 2b730cf18c09: Waiting","timestamp":"2026-09-16T13:34:19.975081+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.975 [INFO] [docker:c6bffe46] edeaba958753: Waiting","timestamp":"2026-09-16T13:34:19.975161+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.975 [INFO] [docker:c6bffe46] 8bf42db0de72: Waiting","timestamp":"2026-09-16T13:34:19.975240+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.975 [INFO] [docker:c6bffe46] 31892cc314cb: Waiting","timestamp":"2026-09-16T13:34:19.975318+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:19.975 [INFO] [docker:c6bffe46] 11936051f93b: Waiting","timestamp":"2026-09-16T13:34:19.975396+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.286 [INFO] [docker:c6bffe46] cd4b3dc03178: Layer already exists","timestamp":"2026-09-16T13:34:20.286438+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.374 [INFO] [docker:c6bffe46] 71a2618c0925: Layer already exists","timestamp":"2026-09-16T13:34:20.374806+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.376 [INFO] [docker:c6bffe46] 5f70bf18a086: Layer already exists","timestamp":"2026-09-16T13:34:20.376072+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.376 [INFO] [docker:c6bffe46] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-16T13:34:20.376440+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.401 [INFO] [docker:c6bffe46] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-16T13:34:20.401777+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.490 [INFO] [docker:c6bffe46] 8bf42db0de72: Layer already exists","timestamp":"2026-09-16T13:34:20.490113+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.507 [INFO] [docker:c6bffe46] 31892cc314cb: Layer already exists","timestamp":"2026-09-16T13:34:20.507692+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.507 [INFO] [docker:c6bffe46] 2b730cf18c09: Layer already exists","timestamp":"2026-09-16T13:34:20.507822+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.508 [INFO] [docker:c6bffe46] edeaba958753: Layer already exists","timestamp":"2026-09-16T13:34:20.508486+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:20.639 [INFO] [docker:c6bffe46] 11936051f93b: Layer already exists","timestamp":"2026-09-16T13:34:20.639688+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:27.429 [INFO] [docker:c6bffe46] d806fdaf18ad: Pushed","timestamp":"2026-09-16T13:34:27.429023+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:28.233 [INFO] [docker:c6bffe46] new-develop-bfadf8d: digest: sha256:54391e1c07b2be3059cf9e183165df4092d26f156385df74652fc55cb93d1f92 size: 2628","timestamp":"2026-09-16T13:34:28.233412+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:28.324 [INFO] [docker:c6bffe46] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-16T13:34:28.324575+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-09-16 13:34:28.358 [INFO] [docker:c6bffe46] tag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-16T13:34:28.358688+08:00"},{"seq":71,"level":"ERROR","component":"docker","message":"[docker] 2026-09-16 13:34:28.359 [ERROR] [docker:c6bffe46] 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-16T13:34:28.359561+08:00"},{"seq":72,"level":"WARNING","component":"docker","message":"[docker] 2026-09-16 13:34:28.359 [WARNING] [docker:c6bffe46] 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-16T13:34:28.359997+08:00"},{"seq":73,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-16 13:34:28.360 [INFO] [orchestrator:c6bffe46] ✅ 服务构建完成: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d","timestamp":"2026-09-16T13:34:28.360177+08:00"},{"seq":74,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 13:34:28.396 [INFO] [agent:c6bffe46] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-bfadf8d","timestamp":"2026-09-16T13:34:28.396735+08:00"},{"seq":75,"level":"INFO","component":"agent","message":"[agent] 2026-09-16 13:34:28.427 [INFO] [agent:c6bffe46] workspace cleaned","timestamp":"2026-09-16T13:34:28.427438+08:00"}]}