{"job_id":"97a26761-a984-487b-a538-b711d2cc0060","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-12 19:46:07.795 [INFO] [agent:97a26761] 🚀 CI 流水线启动","timestamp":"2026-10-12T19:46:07.795788+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-12 19:46:07.796 [INFO] [git:97a26761] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/97a26761-a984-487b-a538-b711d2cc0060 (branch=main)","timestamp":"2026-10-12T19:46:07.796218+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-12 19:46:08.399 [INFO] [git:97a26761] Cloning into '/app/data/workspace/97a26761-a984-487b-a538-b711d2cc0060'...","timestamp":"2026-10-12T19:46:08.399169+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-12 19:46:08.399 [INFO] [git:97a26761] git clone success: /app/data/workspace/97a26761-a984-487b-a538-b711d2cc0060","timestamp":"2026-10-12T19:46:08.399275+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-12 19:46:08.399 [INFO] [agent:97a26761] 📦 代码已克隆到 /app/data/workspace/97a26761-a984-487b-a538-b711d2cc0060","timestamp":"2026-10-12T19:46:08.399742+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:08.400 [INFO] [orchestrator:97a26761] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-12T19:46:08.400646+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:08.894 [INFO] [orchestrator:97a26761] 📝 检测到变更的目录: src, src/main","timestamp":"2026-10-12T19:46:08.894224+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:09.535 [INFO] [orchestrator:97a26761] 📝 单服务项目，开始构建（代码指纹 409d9b06）","timestamp":"2026-10-12T19:46:09.535181+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:09.535 [INFO] [orchestrator:97a26761] 🔨 开始构建 1 个服务","timestamp":"2026-10-12T19:46:09.535310+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:09.539 [INFO] [orchestrator:97a26761] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-409d9b06","timestamp":"2026-10-12T19:46:09.539782+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:09.540 [INFO] [docker:97a26761] building docker.fanson.cloud/fanson/meet-pilot:main-409d9b06 (with cache)","timestamp":"2026-10-12T19:46:09.540280+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:09.822 [INFO] [docker:97a26761] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-12T19:46:09.822354+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:09.822 [INFO] [docker:97a26761] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-12T19:46:09.822502+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:09.822 [INFO] [docker:97a26761] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-12T19:46:09.822610+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-12 19:46:09.824 [ERROR] [docker:97a26761] 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-12T19:46:09.824567+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-12 19:46:09.825 [WARNING] [docker:97a26761] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-12T19:46:09.825070+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:09.825 [INFO] [docker:97a26761] building docker.fanson.cloud/fanson/meet-pilot:main-409d9b06 (native docker build)","timestamp":"2026-10-12T19:46:09.825207+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:10.555 [INFO] [docker:97a26761] #1 DONE 0.5s","timestamp":"2026-10-12T19:46:10.555210+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:10.884 [INFO] [docker:97a26761] #2 DONE 0.0s","timestamp":"2026-10-12T19:46:10.884395+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:11.163 [INFO] [docker:97a26761] #4 DONE 0.6s","timestamp":"2026-10-12T19:46:11.163652+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:15.122 [INFO] [docker:97a26761] #3 DONE 4.5s","timestamp":"2026-10-12T19:46:15.122021+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:15.619 [INFO] [docker:97a26761] #5 DONE 0.5s","timestamp":"2026-10-12T19:46:15.619499+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:15.806 [INFO] [docker:97a26761] #6 DONE 0.0s","timestamp":"2026-10-12T19:46:15.806160+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:15.806 [INFO] [docker:97a26761] #7 DONE 0.0s","timestamp":"2026-10-12T19:46:15.806303+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:16.647 [INFO] [docker:97a26761] #8 DONE 1.0s","timestamp":"2026-10-12T19:46:16.647883+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:16.854 [INFO] [docker:97a26761] #9 CACHED","timestamp":"2026-10-12T19:46:16.854936+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:16.855 [INFO] [docker:97a26761] #10 CACHED","timestamp":"2026-10-12T19:46:16.855075+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:16.855 [INFO] [docker:97a26761] #11 CACHED","timestamp":"2026-10-12T19:46:16.855213+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:16.855 [INFO] [docker:97a26761] #12 CACHED","timestamp":"2026-10-12T19:46:16.855327+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:17.720 [INFO] [docker:97a26761] #13 DONE 1.0s","timestamp":"2026-10-12T19:46:17.720406+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:25.847 [INFO] [docker:97a26761] #14 DONE 8.1s","timestamp":"2026-10-12T19:46:25.847388+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:26.186 [INFO] [docker:97a26761] #15 CACHED","timestamp":"2026-10-12T19:46:26.186437+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:27.749 [INFO] [docker:97a26761] #16 DONE 1.6s","timestamp":"2026-10-12T19:46:27.749314+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:29.651 [INFO] [docker:97a26761] #17 DONE 1.8s","timestamp":"2026-10-12T19:46:29.651179+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.595 [INFO] [docker:97a26761] build success: docker.fanson.cloud/fanson/meet-pilot:main-409d9b06","timestamp":"2026-10-12T19:46:30.595113+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.595 [INFO] [docker:97a26761] pushing docker.fanson.cloud/fanson/meet-pilot:main-409d9b06","timestamp":"2026-10-12T19:46:30.595220+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.634 [INFO] [docker:97a26761] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-12T19:46:30.634572+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] d16e40366038: Preparing","timestamp":"2026-10-12T19:46:30.668239+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] 5f70bf18a086: Preparing","timestamp":"2026-10-12T19:46:30.668364+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] 71a2618c0925: Preparing","timestamp":"2026-10-12T19:46:30.668451+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] 6fc52eaf99f6: Preparing","timestamp":"2026-10-12T19:46:30.668536+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] cd4b3dc03178: Preparing","timestamp":"2026-10-12T19:46:30.668618+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] b4cfcb8385a8: Preparing","timestamp":"2026-10-12T19:46:30.668714+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] 2b730cf18c09: Preparing","timestamp":"2026-10-12T19:46:30.668803+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] edeaba958753: Preparing","timestamp":"2026-10-12T19:46:30.668883+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.668 [INFO] [docker:97a26761] 8bf42db0de72: Preparing","timestamp":"2026-10-12T19:46:30.668963+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 31892cc314cb: Preparing","timestamp":"2026-10-12T19:46:30.669042+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 11936051f93b: Preparing","timestamp":"2026-10-12T19:46:30.669119+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] edeaba958753: Waiting","timestamp":"2026-10-12T19:46:30.669201+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 8bf42db0de72: Waiting","timestamp":"2026-10-12T19:46:30.669279+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 31892cc314cb: Waiting","timestamp":"2026-10-12T19:46:30.669356+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] b4cfcb8385a8: Waiting","timestamp":"2026-10-12T19:46:30.669433+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 2b730cf18c09: Waiting","timestamp":"2026-10-12T19:46:30.669512+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.669 [INFO] [docker:97a26761] 11936051f93b: Waiting","timestamp":"2026-10-12T19:46:30.669590+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:30.985 [INFO] [docker:97a26761] 5f70bf18a086: Layer already exists","timestamp":"2026-10-12T19:46:30.985458+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.046 [INFO] [docker:97a26761] 71a2618c0925: Layer already exists","timestamp":"2026-10-12T19:46:31.046482+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.046 [INFO] [docker:97a26761] cd4b3dc03178: Layer already exists","timestamp":"2026-10-12T19:46:31.046867+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.047 [INFO] [docker:97a26761] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-12T19:46:31.047481+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.061 [INFO] [docker:97a26761] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-12T19:46:31.061639+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.161 [INFO] [docker:97a26761] 2b730cf18c09: Layer already exists","timestamp":"2026-10-12T19:46:31.161016+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.195 [INFO] [docker:97a26761] 31892cc314cb: Layer already exists","timestamp":"2026-10-12T19:46:31.195061+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.195 [INFO] [docker:97a26761] edeaba958753: Layer already exists","timestamp":"2026-10-12T19:46:31.195523+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.195 [INFO] [docker:97a26761] 8bf42db0de72: Layer already exists","timestamp":"2026-10-12T19:46:31.195648+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:31.310 [INFO] [docker:97a26761] 11936051f93b: Layer already exists","timestamp":"2026-10-12T19:46:31.310645+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:35.064 [INFO] [docker:97a26761] d16e40366038: Pushed","timestamp":"2026-10-12T19:46:35.064428+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:35.857 [INFO] [docker:97a26761] main-409d9b06: digest: sha256:11b35afe6bb382e5429e8fc38bc8e593df45d03ed2fdd5606f8d15769ceee9d6 size: 2628","timestamp":"2026-10-12T19:46:35.857596+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:35.948 [INFO] [docker:97a26761] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-12T19:46:35.948847+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-12 19:46:35.982 [INFO] [docker:97a26761] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-12T19:46:35.982010+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-12 19:46:35.982 [ERROR] [docker:97a26761] 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-12T19:46:35.982859+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-12 19:46:35.983 [WARNING] [docker:97a26761] 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-12T19:46:35.983199+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-12 19:46:35.983 [INFO] [orchestrator:97a26761] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-409d9b06","timestamp":"2026-10-12T19:46:35.983315+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-12 19:46:36.040 [INFO] [agent:97a26761] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-409d9b06","timestamp":"2026-10-12T19:46:36.040983+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-12 19:46:36.048 [INFO] [agent:97a26761] workspace cleaned","timestamp":"2026-10-12T19:46:36.048915+08:00"}]}