{"job_id":"86dd824c-6737-47c3-bf40-a52018905a3e","filters":{"level":null,"component":null},"total":75,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 14:43:57.080 [INFO] [agent:86dd824c] 🚀 CI 流水线启动","timestamp":"2026-09-18T14:43:57.080005+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-18 14:43:57.080 [INFO] [git:86dd824c] cloning http://git.fanson.cloud/customer-project/jingneng/jn-isp-api.git -> /app/data/workspace/86dd824c-6737-47c3-bf40-a52018905a3e (branch=new-develop)","timestamp":"2026-09-18T14:43:57.080372+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-18 14:43:57.974 [INFO] [git:86dd824c] Cloning into '/app/data/workspace/86dd824c-6737-47c3-bf40-a52018905a3e'...","timestamp":"2026-09-18T14:43:57.974112+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-18 14:43:57.974 [INFO] [git:86dd824c] git clone success: /app/data/workspace/86dd824c-6737-47c3-bf40-a52018905a3e","timestamp":"2026-09-18T14:43:57.974219+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 14:43:57.974 [INFO] [agent:86dd824c] 📦 代码已克隆到 /app/data/workspace/86dd824c-6737-47c3-bf40-a52018905a3e","timestamp":"2026-09-18T14:43:57.974601+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:57.975 [INFO] [orchestrator:86dd824c] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-18T14:43:57.975588+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:58.492 [INFO] [orchestrator:86dd824c] 📝 检测到变更的目录: fanson-admin, fanson-admin/src, fanson-quartz, fanson-quartz/src, fanson-system, fanson-system/src","timestamp":"2026-09-18T14:43:58.492858+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-09-18 14:43:58.496 [INFO] [git:86dd824c] 目录 fanson-admin 代码指纹: e67359f","timestamp":"2026-09-18T14:43:58.496116+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:59.158 [INFO] [orchestrator:86dd824c] 📝 单服务项目，开始构建（代码指纹 e67359f）","timestamp":"2026-09-18T14:43:59.158730+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:59.158 [INFO] [orchestrator:86dd824c] 🔨 开始构建 1 个服务","timestamp":"2026-09-18T14:43:59.158851+08:00"},{"seq":11,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:59.162 [INFO] [orchestrator:86dd824c] 🔨 构建服务: jingneng/jn-isp-api-fanson-admin-new → 镜像标签 jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f","timestamp":"2026-09-18T14:43:59.162652+08:00"},{"seq":12,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:43:59.162 [INFO] [orchestrator:86dd824c] 已自动注入 -pl fanson-admin -am: mvn -pl fanson-admin -am clean package -DskipTests","timestamp":"2026-09-18T14:43:59.162780+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:43:59.163 [INFO] [docker:86dd824c] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f (with cache)","timestamp":"2026-09-18T14:43:59.163275+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:43:59.546 [INFO] [docker:86dd824c] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-18T14:43:59.546939+08:00"},{"seq":15,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:43:59.547 [INFO] [docker:86dd824c] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-18T14:43:59.547068+08:00"},{"seq":16,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:43:59.547 [INFO] [docker:86dd824c] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-18T14:43:59.547157+08:00"},{"seq":17,"level":"ERROR","component":"docker","message":"[docker] 2026-09-18 14:43:59.549 [ERROR] [docker:86dd824c] 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-18T14:43:59.549115+08:00"},{"seq":18,"level":"WARNING","component":"docker","message":"[docker] 2026-09-18 14:43:59.549 [WARNING] [docker:86dd824c] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-18T14:43:59.549554+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:43:59.549 [INFO] [docker:86dd824c] building docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f (native docker build)","timestamp":"2026-09-18T14:43:59.549664+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:00.324 [INFO] [docker:86dd824c] #1 DONE 0.5s","timestamp":"2026-09-18T14:44:00.324060+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:00.676 [INFO] [docker:86dd824c] #2 DONE 0.0s","timestamp":"2026-09-18T14:44:00.676876+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:01.496 [INFO] [docker:86dd824c] #4 DONE 1.1s","timestamp":"2026-09-18T14:44:01.496453+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:01.938 [INFO] [docker:86dd824c] #3 DONE 1.5s","timestamp":"2026-09-18T14:44:01.938532+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:02.524 [INFO] [docker:86dd824c] #5 DONE 0.6s","timestamp":"2026-09-18T14:44:02.524326+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:02.744 [INFO] [docker:86dd824c] #6 DONE 0.0s","timestamp":"2026-09-18T14:44:02.744432+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:02.744 [INFO] [docker:86dd824c] #7 DONE 0.0s","timestamp":"2026-09-18T14:44:02.744566+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:03.431 [INFO] [docker:86dd824c] #8 DONE 0.8s","timestamp":"2026-09-18T14:44:03.431189+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:03.640 [INFO] [docker:86dd824c] #9 CACHED","timestamp":"2026-09-18T14:44:03.640608+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:03.640 [INFO] [docker:86dd824c] #10 CACHED","timestamp":"2026-09-18T14:44:03.640748+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:03.640 [INFO] [docker:86dd824c] #11 CACHED","timestamp":"2026-09-18T14:44:03.640852+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:03.640 [INFO] [docker:86dd824c] #12 CACHED","timestamp":"2026-09-18T14:44:03.640951+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:05.078 [INFO] [docker:86dd824c] #13 DONE 1.6s","timestamp":"2026-09-18T14:44:05.078740+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:15.207 [INFO] [docker:86dd824c] #14 DONE 10.1s","timestamp":"2026-09-18T14:44:15.207213+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:15.605 [INFO] [docker:86dd824c] #15 CACHED","timestamp":"2026-09-18T14:44:15.605587+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:17.507 [INFO] [docker:86dd824c] #16 DONE 1.9s","timestamp":"2026-09-18T14:44:17.507121+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:19.220 [INFO] [docker:86dd824c] #17 DONE 1.6s","timestamp":"2026-09-18T14:44:19.220917+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.464 [INFO] [docker:86dd824c] build success: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f","timestamp":"2026-09-18T14:44:20.464083+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.464 [INFO] [docker:86dd824c] pushing docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f","timestamp":"2026-09-18T14:44:20.464195+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.544 [INFO] [docker:86dd824c] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-18T14:44:20.544534+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] f74ff0589103: Preparing","timestamp":"2026-09-18T14:44:20.580039+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 5f70bf18a086: Preparing","timestamp":"2026-09-18T14:44:20.580159+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 71a2618c0925: Preparing","timestamp":"2026-09-18T14:44:20.580247+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 6fc52eaf99f6: Preparing","timestamp":"2026-09-18T14:44:20.580332+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] cd4b3dc03178: Preparing","timestamp":"2026-09-18T14:44:20.580414+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] b4cfcb8385a8: Preparing","timestamp":"2026-09-18T14:44:20.580494+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 2b730cf18c09: Preparing","timestamp":"2026-09-18T14:44:20.580574+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] edeaba958753: Preparing","timestamp":"2026-09-18T14:44:20.580654+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 8bf42db0de72: Preparing","timestamp":"2026-09-18T14:44:20.580743+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 31892cc314cb: Preparing","timestamp":"2026-09-18T14:44:20.580824+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 11936051f93b: Preparing","timestamp":"2026-09-18T14:44:20.580902+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.580 [INFO] [docker:86dd824c] 2b730cf18c09: Waiting","timestamp":"2026-09-18T14:44:20.580992+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.581 [INFO] [docker:86dd824c] b4cfcb8385a8: Waiting","timestamp":"2026-09-18T14:44:20.581070+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.581 [INFO] [docker:86dd824c] 31892cc314cb: Waiting","timestamp":"2026-09-18T14:44:20.581149+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.581 [INFO] [docker:86dd824c] 11936051f93b: Waiting","timestamp":"2026-09-18T14:44:20.581226+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.581 [INFO] [docker:86dd824c] 8bf42db0de72: Waiting","timestamp":"2026-09-18T14:44:20.581303+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.581 [INFO] [docker:86dd824c] edeaba958753: Waiting","timestamp":"2026-09-18T14:44:20.581379+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.945 [INFO] [docker:86dd824c] cd4b3dc03178: Layer already exists","timestamp":"2026-09-18T14:44:20.945308+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:20.945 [INFO] [docker:86dd824c] 5f70bf18a086: Layer already exists","timestamp":"2026-09-18T14:44:20.945437+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.001 [INFO] [docker:86dd824c] 71a2618c0925: Layer already exists","timestamp":"2026-09-18T14:44:21.001714+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.002 [INFO] [docker:86dd824c] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-18T14:44:21.002187+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.021 [INFO] [docker:86dd824c] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-18T14:44:21.021917+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.022 [INFO] [docker:86dd824c] 2b730cf18c09: Layer already exists","timestamp":"2026-09-18T14:44:21.022025+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.122 [INFO] [docker:86dd824c] 8bf42db0de72: Layer already exists","timestamp":"2026-09-18T14:44:21.122968+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.156 [INFO] [docker:86dd824c] 11936051f93b: Layer already exists","timestamp":"2026-09-18T14:44:21.156357+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.156 [INFO] [docker:86dd824c] 31892cc314cb: Layer already exists","timestamp":"2026-09-18T14:44:21.156484+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:21.156 [INFO] [docker:86dd824c] edeaba958753: Layer already exists","timestamp":"2026-09-18T14:44:21.156641+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:26.772 [INFO] [docker:86dd824c] f74ff0589103: Pushed","timestamp":"2026-09-18T14:44:26.772369+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:27.531 [INFO] [docker:86dd824c] new-develop-e67359f: digest: sha256:57f0e6c80c9b3325e5c74718ea189dc0865de51da39481656d7590e57cb9ae73 size: 2628","timestamp":"2026-09-18T14:44:27.531927+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:27.618 [INFO] [docker:86dd824c] The push refers to repository [docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new]","timestamp":"2026-09-18T14:44:27.618251+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-09-18 14:44:27.653 [INFO] [docker:86dd824c] tag does not exist: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:cache","timestamp":"2026-09-18T14:44:27.653745+08:00"},{"seq":71,"level":"ERROR","component":"docker","message":"[docker] 2026-09-18 14:44:27.654 [ERROR] [docker:86dd824c] 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-18T14:44:27.654666+08:00"},{"seq":72,"level":"WARNING","component":"docker","message":"[docker] 2026-09-18 14:44:27.654 [WARNING] [docker:86dd824c] 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-18T14:44:27.654920+08:00"},{"seq":73,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-18 14:44:27.655 [INFO] [orchestrator:86dd824c] ✅ 服务构建完成: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f","timestamp":"2026-09-18T14:44:27.655020+08:00"},{"seq":74,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 14:44:27.692 [INFO] [agent:86dd824c] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/jingneng/jn-isp-api-fanson-admin-new:new-develop-e67359f","timestamp":"2026-09-18T14:44:27.692528+08:00"},{"seq":75,"level":"INFO","component":"agent","message":"[agent] 2026-09-18 14:44:27.723 [INFO] [agent:86dd824c] workspace cleaned","timestamp":"2026-09-18T14:44:27.723519+08:00"}]}