{"job_id":"bd160c0e-1f5d-4b14-8e5b-506f03694400","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 17:39:53.994 [INFO] [agent:bd160c0e] 🚀 CI 流水线启动","timestamp":"2026-10-08T17:39:53.994648+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-08 17:39:53.994 [INFO] [git:bd160c0e] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/bd160c0e-1f5d-4b14-8e5b-506f03694400 (branch=main)","timestamp":"2026-10-08T17:39:53.994986+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-08 17:39:54.818 [INFO] [git:bd160c0e] Cloning into '/app/data/workspace/bd160c0e-1f5d-4b14-8e5b-506f03694400'...","timestamp":"2026-10-08T17:39:54.818909+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-08 17:39:54.819 [INFO] [git:bd160c0e] git clone success: /app/data/workspace/bd160c0e-1f5d-4b14-8e5b-506f03694400","timestamp":"2026-10-08T17:39:54.819012+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 17:39:54.819 [INFO] [agent:bd160c0e] 📦 代码已克隆到 /app/data/workspace/bd160c0e-1f5d-4b14-8e5b-506f03694400","timestamp":"2026-10-08T17:39:54.819290+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:39:54.820 [INFO] [orchestrator:bd160c0e] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-08T17:39:54.820219+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:39:55.537 [INFO] [orchestrator:bd160c0e] 📝 检测到变更的目录: src, src/main, src/test","timestamp":"2026-10-08T17:39:55.537786+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:39:56.209 [INFO] [orchestrator:bd160c0e] 📝 单服务项目，开始构建（代码指纹 28839b88）","timestamp":"2026-10-08T17:39:56.209137+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:39:56.209 [INFO] [orchestrator:bd160c0e] 🔨 开始构建 1 个服务","timestamp":"2026-10-08T17:39:56.209266+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:39:56.213 [INFO] [orchestrator:bd160c0e] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-28839b88","timestamp":"2026-10-08T17:39:56.213415+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:56.213 [INFO] [docker:bd160c0e] building docker.fanson.cloud/fanson/meet-pilot:main-28839b88 (with cache)","timestamp":"2026-10-08T17:39:56.213917+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:56.494 [INFO] [docker:bd160c0e] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-08T17:39:56.494077+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:56.494 [INFO] [docker:bd160c0e] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-08T17:39:56.494227+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:56.494 [INFO] [docker:bd160c0e] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-08T17:39:56.494330+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-08 17:39:56.496 [ERROR] [docker:bd160c0e] 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-10-08T17:39:56.496459+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-08 17:39:56.496 [WARNING] [docker:bd160c0e] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-08T17:39:56.496908+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:56.497 [INFO] [docker:bd160c0e] building docker.fanson.cloud/fanson/meet-pilot:main-28839b88 (native docker build)","timestamp":"2026-10-08T17:39:56.497022+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:57.502 [INFO] [docker:bd160c0e] #1 DONE 0.7s","timestamp":"2026-10-08T17:39:57.502693+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:57.825 [INFO] [docker:bd160c0e] #2 DONE 0.0s","timestamp":"2026-10-08T17:39:57.825398+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:58.409 [INFO] [docker:bd160c0e] #4 DONE 0.9s","timestamp":"2026-10-08T17:39:58.409566+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:58.637 [INFO] [docker:bd160c0e] #3 DONE 0.9s","timestamp":"2026-10-08T17:39:58.637961+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:58.940 [INFO] [docker:bd160c0e] #5 DONE 0.5s","timestamp":"2026-10-08T17:39:58.940183+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.115 [INFO] [docker:bd160c0e] #6 DONE 0.0s","timestamp":"2026-10-08T17:39:59.115538+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.115 [INFO] [docker:bd160c0e] #7 DONE 0.0s","timestamp":"2026-10-08T17:39:59.115655+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.581 [INFO] [docker:bd160c0e] #8 DONE 0.6s","timestamp":"2026-10-08T17:39:59.581523+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.714 [INFO] [docker:bd160c0e] #9 CACHED","timestamp":"2026-10-08T17:39:59.714837+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.714 [INFO] [docker:bd160c0e] #10 CACHED","timestamp":"2026-10-08T17:39:59.714952+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.715 [INFO] [docker:bd160c0e] #11 CACHED","timestamp":"2026-10-08T17:39:59.715061+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:39:59.715 [INFO] [docker:bd160c0e] #12 CACHED","timestamp":"2026-10-08T17:39:59.715166+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:01.007 [INFO] [docker:bd160c0e] #13 DONE 1.3s","timestamp":"2026-10-08T17:40:01.007968+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:08.803 [INFO] [docker:bd160c0e] #14 DONE 7.8s","timestamp":"2026-10-08T17:40:08.803333+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:09.200 [INFO] [docker:bd160c0e] #15 CACHED","timestamp":"2026-10-08T17:40:09.200812+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:10.992 [INFO] [docker:bd160c0e] #16 DONE 1.8s","timestamp":"2026-10-08T17:40:10.992685+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:12.684 [INFO] [docker:bd160c0e] #17 DONE 1.6s","timestamp":"2026-10-08T17:40:12.684410+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.672 [INFO] [docker:bd160c0e] build success: docker.fanson.cloud/fanson/meet-pilot:main-28839b88","timestamp":"2026-10-08T17:40:13.672371+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.672 [INFO] [docker:bd160c0e] pushing docker.fanson.cloud/fanson/meet-pilot:main-28839b88","timestamp":"2026-10-08T17:40:13.672481+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.710 [INFO] [docker:bd160c0e] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-08T17:40:13.710158+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.744 [INFO] [docker:bd160c0e] 2f04cdc9d26c: Preparing","timestamp":"2026-10-08T17:40:13.744548+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.744 [INFO] [docker:bd160c0e] 5f70bf18a086: Preparing","timestamp":"2026-10-08T17:40:13.744689+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.744 [INFO] [docker:bd160c0e] 71a2618c0925: Preparing","timestamp":"2026-10-08T17:40:13.744794+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.744 [INFO] [docker:bd160c0e] 6fc52eaf99f6: Preparing","timestamp":"2026-10-08T17:40:13.744885+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.744 [INFO] [docker:bd160c0e] cd4b3dc03178: Preparing","timestamp":"2026-10-08T17:40:13.744972+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] b4cfcb8385a8: Preparing","timestamp":"2026-10-08T17:40:13.745057+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 2b730cf18c09: Preparing","timestamp":"2026-10-08T17:40:13.745139+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] edeaba958753: Preparing","timestamp":"2026-10-08T17:40:13.745220+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 8bf42db0de72: Preparing","timestamp":"2026-10-08T17:40:13.745306+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 31892cc314cb: Preparing","timestamp":"2026-10-08T17:40:13.745390+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] b4cfcb8385a8: Waiting","timestamp":"2026-10-08T17:40:13.745471+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 11936051f93b: Preparing","timestamp":"2026-10-08T17:40:13.745552+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 2b730cf18c09: Waiting","timestamp":"2026-10-08T17:40:13.745637+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 31892cc314cb: Waiting","timestamp":"2026-10-08T17:40:13.745725+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 8bf42db0de72: Waiting","timestamp":"2026-10-08T17:40:13.745808+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] 11936051f93b: Waiting","timestamp":"2026-10-08T17:40:13.745889+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:13.745 [INFO] [docker:bd160c0e] edeaba958753: Waiting","timestamp":"2026-10-08T17:40:13.745977+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.067 [INFO] [docker:bd160c0e] cd4b3dc03178: Layer already exists","timestamp":"2026-10-08T17:40:14.067275+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.119 [INFO] [docker:bd160c0e] 5f70bf18a086: Layer already exists","timestamp":"2026-10-08T17:40:14.119288+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.120 [INFO] [docker:bd160c0e] 71a2618c0925: Layer already exists","timestamp":"2026-10-08T17:40:14.120297+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.120 [INFO] [docker:bd160c0e] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-08T17:40:14.120418+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.140 [INFO] [docker:bd160c0e] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-08T17:40:14.140845+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.220 [INFO] [docker:bd160c0e] 31892cc314cb: Layer already exists","timestamp":"2026-10-08T17:40:14.220345+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.238 [INFO] [docker:bd160c0e] 2b730cf18c09: Layer already exists","timestamp":"2026-10-08T17:40:14.238694+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.239 [INFO] [docker:bd160c0e] 8bf42db0de72: Layer already exists","timestamp":"2026-10-08T17:40:14.239018+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.239 [INFO] [docker:bd160c0e] edeaba958753: Layer already exists","timestamp":"2026-10-08T17:40:14.239411+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:14.328 [INFO] [docker:bd160c0e] 11936051f93b: Layer already exists","timestamp":"2026-10-08T17:40:14.328703+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:17.945 [INFO] [docker:bd160c0e] 2f04cdc9d26c: Pushed","timestamp":"2026-10-08T17:40:17.945780+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:18.704 [INFO] [docker:bd160c0e] main-28839b88: digest: sha256:300198443eb389c7f1f479066d1918c26768ae03cbee480565e94f6b47a8ccd0 size: 2628","timestamp":"2026-10-08T17:40:18.704367+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:18.795 [INFO] [docker:bd160c0e] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-08T17:40:18.795314+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 17:40:18.830 [INFO] [docker:bd160c0e] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-08T17:40:18.830131+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-08 17:40:18.830 [ERROR] [docker:bd160c0e] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]\ntag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-08T17:40:18.830956+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-08 17:40:18.831 [WARNING] [docker:bd160c0e] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]\ntag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-08T17:40:18.831267+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 17:40:18.831 [INFO] [orchestrator:bd160c0e] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-28839b88","timestamp":"2026-10-08T17:40:18.831395+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 17:40:18.887 [INFO] [agent:bd160c0e] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-28839b88","timestamp":"2026-10-08T17:40:18.887939+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 17:40:18.894 [INFO] [agent:bd160c0e] workspace cleaned","timestamp":"2026-10-08T17:40:18.894484+08:00"}]}