{"job_id":"638f993e-46ab-405c-b085-4240e133ae9f","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-23 17:04:43.739 [INFO] [agent:638f993e] 🚀 CI 流水线启动","timestamp":"2026-09-23T17:04:43.739890+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-23 17:04:43.740 [INFO] [git:638f993e] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/638f993e-46ab-405c-b085-4240e133ae9f (branch=main)","timestamp":"2026-09-23T17:04:43.740213+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-23 17:04:44.365 [INFO] [git:638f993e] Cloning into '/app/data/workspace/638f993e-46ab-405c-b085-4240e133ae9f'...","timestamp":"2026-09-23T17:04:44.365660+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-23 17:04:44.365 [INFO] [git:638f993e] git clone success: /app/data/workspace/638f993e-46ab-405c-b085-4240e133ae9f","timestamp":"2026-09-23T17:04:44.365770+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-23 17:04:44.366 [INFO] [agent:638f993e] 📦 代码已克隆到 /app/data/workspace/638f993e-46ab-405c-b085-4240e133ae9f","timestamp":"2026-09-23T17:04:44.366043+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:04:44.366 [INFO] [orchestrator:638f993e] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-23T17:04:44.366975+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:04:45.160 [INFO] [orchestrator:638f993e] 📝 检测到变更的目录: pilot.log, src, src/main, src/test","timestamp":"2026-09-23T17:04:45.160926+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:04:45.784 [INFO] [orchestrator:638f993e] 📝 单服务项目，开始构建（代码指纹 382b6abd）","timestamp":"2026-09-23T17:04:45.784926+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:04:45.785 [INFO] [orchestrator:638f993e] 🔨 开始构建 1 个服务","timestamp":"2026-09-23T17:04:45.785051+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:04:45.788 [INFO] [orchestrator:638f993e] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-382b6abd","timestamp":"2026-09-23T17:04:45.788678+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:45.789 [INFO] [docker:638f993e] building docker.fanson.cloud/fanson/meet-pilot:main-382b6abd (with cache)","timestamp":"2026-09-23T17:04:45.789176+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:46.066 [INFO] [docker:638f993e] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-23T17:04:46.066711+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:46.066 [INFO] [docker:638f993e] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-23T17:04:46.066844+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:46.066 [INFO] [docker:638f993e] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-23T17:04:46.066941+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-09-23 17:04:46.069 [ERROR] [docker:638f993e] 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-23T17:04:46.069398+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-09-23 17:04:46.069 [WARNING] [docker:638f993e] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-23T17:04:46.069887+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:46.069 [INFO] [docker:638f993e] building docker.fanson.cloud/fanson/meet-pilot:main-382b6abd (native docker build)","timestamp":"2026-09-23T17:04:46.069994+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:46.942 [INFO] [docker:638f993e] #1 DONE 0.6s","timestamp":"2026-09-23T17:04:46.942703+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:47.284 [INFO] [docker:638f993e] #2 DONE 0.0s","timestamp":"2026-09-23T17:04:47.284644+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:47.617 [INFO] [docker:638f993e] #4 DONE 0.6s","timestamp":"2026-09-23T17:04:47.617388+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:48.756 [INFO] [docker:638f993e] #3 DONE 1.7s","timestamp":"2026-09-23T17:04:48.756324+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:49.342 [INFO] [docker:638f993e] #5 DONE 0.6s","timestamp":"2026-09-23T17:04:49.342116+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:49.540 [INFO] [docker:638f993e] #6 DONE 0.0s","timestamp":"2026-09-23T17:04:49.540736+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:49.540 [INFO] [docker:638f993e] #7 DONE 0.0s","timestamp":"2026-09-23T17:04:49.540861+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:49.950 [INFO] [docker:638f993e] #8 DONE 0.6s","timestamp":"2026-09-23T17:04:49.950270+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:50.157 [INFO] [docker:638f993e] #9 CACHED","timestamp":"2026-09-23T17:04:50.157295+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:50.157 [INFO] [docker:638f993e] #10 CACHED","timestamp":"2026-09-23T17:04:50.157420+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:50.157 [INFO] [docker:638f993e] #11 CACHED","timestamp":"2026-09-23T17:04:50.157529+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:50.157 [INFO] [docker:638f993e] #12 CACHED","timestamp":"2026-09-23T17:04:50.157627+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:51.232 [INFO] [docker:638f993e] #13 DONE 1.2s","timestamp":"2026-09-23T17:04:51.232970+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:58.862 [INFO] [docker:638f993e] #14 DONE 7.6s","timestamp":"2026-09-23T17:04:58.862567+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:04:59.123 [INFO] [docker:638f993e] #15 CACHED","timestamp":"2026-09-23T17:04:59.123440+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:00.687 [INFO] [docker:638f993e] #16 DONE 1.6s","timestamp":"2026-09-23T17:05:00.687009+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:02.179 [INFO] [docker:638f993e] #17 DONE 1.4s","timestamp":"2026-09-23T17:05:02.179730+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.134 [INFO] [docker:638f993e] build success: docker.fanson.cloud/fanson/meet-pilot:main-382b6abd","timestamp":"2026-09-23T17:05:03.134317+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.134 [INFO] [docker:638f993e] pushing docker.fanson.cloud/fanson/meet-pilot:main-382b6abd","timestamp":"2026-09-23T17:05:03.134445+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.172 [INFO] [docker:638f993e] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-23T17:05:03.172274+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.208 [INFO] [docker:638f993e] cd1286decf63: Preparing","timestamp":"2026-09-23T17:05:03.208623+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.208 [INFO] [docker:638f993e] 5f70bf18a086: Preparing","timestamp":"2026-09-23T17:05:03.208779+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.208 [INFO] [docker:638f993e] 71a2618c0925: Preparing","timestamp":"2026-09-23T17:05:03.208882+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.208 [INFO] [docker:638f993e] 6fc52eaf99f6: Preparing","timestamp":"2026-09-23T17:05:03.208985+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] cd4b3dc03178: Preparing","timestamp":"2026-09-23T17:05:03.209087+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] b4cfcb8385a8: Preparing","timestamp":"2026-09-23T17:05:03.209188+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] 2b730cf18c09: Preparing","timestamp":"2026-09-23T17:05:03.209283+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] edeaba958753: Preparing","timestamp":"2026-09-23T17:05:03.209380+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] 8bf42db0de72: Preparing","timestamp":"2026-09-23T17:05:03.209478+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] 31892cc314cb: Preparing","timestamp":"2026-09-23T17:05:03.209573+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] 11936051f93b: Preparing","timestamp":"2026-09-23T17:05:03.209666+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] b4cfcb8385a8: Waiting","timestamp":"2026-09-23T17:05:03.209769+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] 31892cc314cb: Waiting","timestamp":"2026-09-23T17:05:03.209861+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.209 [INFO] [docker:638f993e] edeaba958753: Waiting","timestamp":"2026-09-23T17:05:03.209956+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.210 [INFO] [docker:638f993e] 8bf42db0de72: Waiting","timestamp":"2026-09-23T17:05:03.210048+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.210 [INFO] [docker:638f993e] 11936051f93b: Waiting","timestamp":"2026-09-23T17:05:03.210146+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.210 [INFO] [docker:638f993e] 2b730cf18c09: Waiting","timestamp":"2026-09-23T17:05:03.210239+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.479 [INFO] [docker:638f993e] cd4b3dc03178: Layer already exists","timestamp":"2026-09-23T17:05:03.479450+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.567 [INFO] [docker:638f993e] 5f70bf18a086: Layer already exists","timestamp":"2026-09-23T17:05:03.567125+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.567 [INFO] [docker:638f993e] 71a2618c0925: Layer already exists","timestamp":"2026-09-23T17:05:03.567920+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.568 [INFO] [docker:638f993e] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-23T17:05:03.568428+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.602 [INFO] [docker:638f993e] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-23T17:05:03.602153+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.700 [INFO] [docker:638f993e] 2b730cf18c09: Layer already exists","timestamp":"2026-09-23T17:05:03.700557+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.757 [INFO] [docker:638f993e] edeaba958753: Layer already exists","timestamp":"2026-09-23T17:05:03.757788+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.757 [INFO] [docker:638f993e] 31892cc314cb: Layer already exists","timestamp":"2026-09-23T17:05:03.757921+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.758 [INFO] [docker:638f993e] 8bf42db0de72: Layer already exists","timestamp":"2026-09-23T17:05:03.758199+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:03.776 [INFO] [docker:638f993e] 11936051f93b: Layer already exists","timestamp":"2026-09-23T17:05:03.776097+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:07.369 [INFO] [docker:638f993e] cd1286decf63: Pushed","timestamp":"2026-09-23T17:05:07.369499+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:08.051 [INFO] [docker:638f993e] main-382b6abd: digest: sha256:8eaa76a7179e90c62415f8b3b553f17471e30701c076c5a0dbc9259688354a40 size: 2628","timestamp":"2026-09-23T17:05:08.051915+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:08.128 [INFO] [docker:638f993e] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-23T17:05:08.128036+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-23 17:05:08.162 [INFO] [docker:638f993e] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-09-23T17:05:08.162448+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-09-23 17:05:08.163 [ERROR] [docker:638f993e] 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-09-23T17:05:08.163295+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-09-23 17:05:08.163 [WARNING] [docker:638f993e] 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-09-23T17:05:08.163618+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-23 17:05:08.163 [INFO] [orchestrator:638f993e] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-382b6abd","timestamp":"2026-09-23T17:05:08.163744+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-09-23 17:05:08.201 [INFO] [agent:638f993e] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-382b6abd","timestamp":"2026-09-23T17:05:08.201172+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-09-23 17:05:08.205 [INFO] [agent:638f993e] workspace cleaned","timestamp":"2026-09-23T17:05:08.205921+08:00"}]}