{"job_id":"195d3712-1fad-4779-86ee-90fcd92cb1cf","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 20:12:02.341 [INFO] [agent:195d3712] 🚀 CI 流水线启动","timestamp":"2026-10-09T20:12:02.341422+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-09 20:12:02.341 [INFO] [git:195d3712] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/195d3712-1fad-4779-86ee-90fcd92cb1cf (branch=main)","timestamp":"2026-10-09T20:12:02.341835+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-09 20:12:03.179 [INFO] [git:195d3712] Cloning into '/app/data/workspace/195d3712-1fad-4779-86ee-90fcd92cb1cf'...","timestamp":"2026-10-09T20:12:03.179219+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-09 20:12:03.179 [INFO] [git:195d3712] git clone success: /app/data/workspace/195d3712-1fad-4779-86ee-90fcd92cb1cf","timestamp":"2026-10-09T20:12:03.179339+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 20:12:03.179 [INFO] [agent:195d3712] 📦 代码已克隆到 /app/data/workspace/195d3712-1fad-4779-86ee-90fcd92cb1cf","timestamp":"2026-10-09T20:12:03.179695+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:03.180 [INFO] [orchestrator:195d3712] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-09T20:12:03.180654+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:03.865 [INFO] [orchestrator:195d3712] 📝 检测到变更的目录: \"docs, \"docs/meet-pilot-, src, src/main, src/test","timestamp":"2026-10-09T20:12:03.865306+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:04.542 [INFO] [orchestrator:195d3712] 📝 单服务项目，开始构建（代码指纹 c204437d）","timestamp":"2026-10-09T20:12:04.542421+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:04.542 [INFO] [orchestrator:195d3712] 🔨 开始构建 1 个服务","timestamp":"2026-10-09T20:12:04.542547+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:04.546 [INFO] [orchestrator:195d3712] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-c204437d","timestamp":"2026-10-09T20:12:04.546871+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:04.547 [INFO] [docker:195d3712] building docker.fanson.cloud/fanson/meet-pilot:main-c204437d (with cache)","timestamp":"2026-10-09T20:12:04.547335+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:04.814 [INFO] [docker:195d3712] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-09T20:12:04.814603+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:04.814 [INFO] [docker:195d3712] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-09T20:12:04.814756+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:04.814 [INFO] [docker:195d3712] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-09T20:12:04.814851+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-09 20:12:04.816 [ERROR] [docker:195d3712] 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-09T20:12:04.816906+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-09 20:12:04.817 [WARNING] [docker:195d3712] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-09T20:12:04.817366+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:04.817 [INFO] [docker:195d3712] building docker.fanson.cloud/fanson/meet-pilot:main-c204437d (native docker build)","timestamp":"2026-10-09T20:12:04.817473+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:05.569 [INFO] [docker:195d3712] #1 DONE 0.5s","timestamp":"2026-10-09T20:12:05.569537+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:05.882 [INFO] [docker:195d3712] #2 DONE 0.0s","timestamp":"2026-10-09T20:12:05.882291+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:06.178 [INFO] [docker:195d3712] #4 DONE 0.5s","timestamp":"2026-10-09T20:12:06.178063+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:06.962 [INFO] [docker:195d3712] #3 DONE 1.3s","timestamp":"2026-10-09T20:12:06.962972+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:07.615 [INFO] [docker:195d3712] #5 DONE 0.7s","timestamp":"2026-10-09T20:12:07.615185+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:07.802 [INFO] [docker:195d3712] #6 DONE 0.0s","timestamp":"2026-10-09T20:12:07.802320+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:07.802 [INFO] [docker:195d3712] #7 DONE 0.0s","timestamp":"2026-10-09T20:12:07.802455+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:08.234 [INFO] [docker:195d3712] #8 DONE 0.6s","timestamp":"2026-10-09T20:12:08.234369+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:08.419 [INFO] [docker:195d3712] #9 CACHED","timestamp":"2026-10-09T20:12:08.419468+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:08.419 [INFO] [docker:195d3712] #10 CACHED","timestamp":"2026-10-09T20:12:08.419601+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:08.419 [INFO] [docker:195d3712] #11 CACHED","timestamp":"2026-10-09T20:12:08.419718+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:08.419 [INFO] [docker:195d3712] #12 CACHED","timestamp":"2026-10-09T20:12:08.419822+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:09.539 [INFO] [docker:195d3712] #13 DONE 1.3s","timestamp":"2026-10-09T20:12:09.539110+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:17.544 [INFO] [docker:195d3712] #14 DONE 8.0s","timestamp":"2026-10-09T20:12:17.544683+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:17.824 [INFO] [docker:195d3712] #15 CACHED","timestamp":"2026-10-09T20:12:17.824273+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:19.479 [INFO] [docker:195d3712] #16 DONE 1.7s","timestamp":"2026-10-09T20:12:19.479637+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:21.171 [INFO] [docker:195d3712] #17 DONE 1.6s","timestamp":"2026-10-09T20:12:21.171480+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.192 [INFO] [docker:195d3712] build success: docker.fanson.cloud/fanson/meet-pilot:main-c204437d","timestamp":"2026-10-09T20:12:22.192781+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.192 [INFO] [docker:195d3712] pushing docker.fanson.cloud/fanson/meet-pilot:main-c204437d","timestamp":"2026-10-09T20:12:22.192890+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.228 [INFO] [docker:195d3712] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-09T20:12:22.228961+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.262 [INFO] [docker:195d3712] 76d88ba1ba49: Preparing","timestamp":"2026-10-09T20:12:22.262848+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.262 [INFO] [docker:195d3712] 5f70bf18a086: Preparing","timestamp":"2026-10-09T20:12:22.262969+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 71a2618c0925: Preparing","timestamp":"2026-10-09T20:12:22.263059+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 6fc52eaf99f6: Preparing","timestamp":"2026-10-09T20:12:22.263149+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] cd4b3dc03178: Preparing","timestamp":"2026-10-09T20:12:22.263233+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] b4cfcb8385a8: Preparing","timestamp":"2026-10-09T20:12:22.263314+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 2b730cf18c09: Preparing","timestamp":"2026-10-09T20:12:22.263393+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] edeaba958753: Preparing","timestamp":"2026-10-09T20:12:22.263472+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 8bf42db0de72: Preparing","timestamp":"2026-10-09T20:12:22.263551+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 31892cc314cb: Preparing","timestamp":"2026-10-09T20:12:22.263629+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 11936051f93b: Preparing","timestamp":"2026-10-09T20:12:22.263715+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 8bf42db0de72: Waiting","timestamp":"2026-10-09T20:12:22.263796+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] b4cfcb8385a8: Waiting","timestamp":"2026-10-09T20:12:22.263875+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.263 [INFO] [docker:195d3712] 11936051f93b: Waiting","timestamp":"2026-10-09T20:12:22.263954+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.264 [INFO] [docker:195d3712] 31892cc314cb: Waiting","timestamp":"2026-10-09T20:12:22.264032+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.264 [INFO] [docker:195d3712] 2b730cf18c09: Waiting","timestamp":"2026-10-09T20:12:22.264110+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.264 [INFO] [docker:195d3712] edeaba958753: Waiting","timestamp":"2026-10-09T20:12:22.264190+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.581 [INFO] [docker:195d3712] 71a2618c0925: Layer already exists","timestamp":"2026-10-09T20:12:22.581902+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.629 [INFO] [docker:195d3712] cd4b3dc03178: Layer already exists","timestamp":"2026-10-09T20:12:22.629208+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.630 [INFO] [docker:195d3712] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-09T20:12:22.630055+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.630 [INFO] [docker:195d3712] 5f70bf18a086: Layer already exists","timestamp":"2026-10-09T20:12:22.630563+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.639 [INFO] [docker:195d3712] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-09T20:12:22.639619+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.768 [INFO] [docker:195d3712] 31892cc314cb: Layer already exists","timestamp":"2026-10-09T20:12:22.768045+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.795 [INFO] [docker:195d3712] 8bf42db0de72: Layer already exists","timestamp":"2026-10-09T20:12:22.795479+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.795 [INFO] [docker:195d3712] 2b730cf18c09: Layer already exists","timestamp":"2026-10-09T20:12:22.795601+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.797 [INFO] [docker:195d3712] edeaba958753: Layer already exists","timestamp":"2026-10-09T20:12:22.797292+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:22.920 [INFO] [docker:195d3712] 11936051f93b: Layer already exists","timestamp":"2026-10-09T20:12:22.920277+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:26.919 [INFO] [docker:195d3712] 76d88ba1ba49: Pushed","timestamp":"2026-10-09T20:12:26.919510+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:27.700 [INFO] [docker:195d3712] main-c204437d: digest: sha256:ca4e15a7da595c9bdddf793b78194b9f447b2a745c6043c596ca707a86b0bf89 size: 2628","timestamp":"2026-10-09T20:12:27.700320+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:27.791 [INFO] [docker:195d3712] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-09T20:12:27.791164+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 20:12:27.826 [INFO] [docker:195d3712] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-09T20:12:27.826517+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-09 20:12:27.827 [ERROR] [docker:195d3712] 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-09T20:12:27.827413+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-09 20:12:27.827 [WARNING] [docker:195d3712] 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-09T20:12:27.827716+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 20:12:27.827 [INFO] [orchestrator:195d3712] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-c204437d","timestamp":"2026-10-09T20:12:27.827817+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 20:12:27.885 [INFO] [agent:195d3712] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-c204437d","timestamp":"2026-10-09T20:12:27.885432+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 20:12:27.892 [INFO] [agent:195d3712] workspace cleaned","timestamp":"2026-10-09T20:12:27.892184+08:00"}]}