{"job_id":"10a795a3-2de2-4473-befd-556645c48a89","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 18:58:52.440 [INFO] [agent:10a795a3] 🚀 CI 流水线启动","timestamp":"2026-10-09T18:58:52.440234+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-09 18:58:52.440 [INFO] [git:10a795a3] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/10a795a3-2de2-4473-befd-556645c48a89 (branch=main)","timestamp":"2026-10-09T18:58:52.440497+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-09 18:58:53.099 [INFO] [git:10a795a3] Cloning into '/app/data/workspace/10a795a3-2de2-4473-befd-556645c48a89'...","timestamp":"2026-10-09T18:58:53.100000+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-09 18:58:53.100 [INFO] [git:10a795a3] git clone success: /app/data/workspace/10a795a3-2de2-4473-befd-556645c48a89","timestamp":"2026-10-09T18:58:53.100108+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 18:58:53.100 [INFO] [agent:10a795a3] 📦 代码已克隆到 /app/data/workspace/10a795a3-2de2-4473-befd-556645c48a89","timestamp":"2026-10-09T18:58:53.100374+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:58:53.101 [INFO] [orchestrator:10a795a3] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-09T18:58:53.101314+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:58:53.629 [INFO] [orchestrator:10a795a3] 📝 检测到变更的目录: \"docs, \"docs/meet-pilot-, src, src/main, src/test","timestamp":"2026-10-09T18:58:53.629037+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:58:54.300 [INFO] [orchestrator:10a795a3] 📝 单服务项目，开始构建（代码指纹 5ec01f1a）","timestamp":"2026-10-09T18:58:54.300523+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:58:54.300 [INFO] [orchestrator:10a795a3] 🔨 开始构建 1 个服务","timestamp":"2026-10-09T18:58:54.300646+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:58:54.304 [INFO] [orchestrator:10a795a3] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-5ec01f1a","timestamp":"2026-10-09T18:58:54.304601+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:54.305 [INFO] [docker:10a795a3] building docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a (with cache)","timestamp":"2026-10-09T18:58:54.305073+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:54.588 [INFO] [docker:10a795a3] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-09T18:58:54.588925+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:54.589 [INFO] [docker:10a795a3] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-09T18:58:54.589060+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:54.589 [INFO] [docker:10a795a3] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-09T18:58:54.589151+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-09 18:58:54.591 [ERROR] [docker:10a795a3] 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-09T18:58:54.591215+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-09 18:58:54.591 [WARNING] [docker:10a795a3] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-09T18:58:54.591686+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:54.591 [INFO] [docker:10a795a3] building docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a (native docker build)","timestamp":"2026-10-09T18:58:54.591865+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:55.299 [INFO] [docker:10a795a3] #1 DONE 0.5s","timestamp":"2026-10-09T18:58:55.299818+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:55.576 [INFO] [docker:10a795a3] #2 DONE 0.0s","timestamp":"2026-10-09T18:58:55.576872+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:55.919 [INFO] [docker:10a795a3] #4 DONE 0.6s","timestamp":"2026-10-09T18:58:55.919349+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:56.814 [INFO] [docker:10a795a3] #3 DONE 1.5s","timestamp":"2026-10-09T18:58:56.814823+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.212 [INFO] [docker:10a795a3] #5 DONE 0.4s","timestamp":"2026-10-09T18:58:57.212797+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.399 [INFO] [docker:10a795a3] #6 DONE 0.0s","timestamp":"2026-10-09T18:58:57.399649+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.399 [INFO] [docker:10a795a3] #7 DONE 0.0s","timestamp":"2026-10-09T18:58:57.399777+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.743 [INFO] [docker:10a795a3] #8 DONE 0.5s","timestamp":"2026-10-09T18:58:57.743536+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.928 [INFO] [docker:10a795a3] #9 CACHED","timestamp":"2026-10-09T18:58:57.928658+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.928 [INFO] [docker:10a795a3] #10 CACHED","timestamp":"2026-10-09T18:58:57.928802+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.928 [INFO] [docker:10a795a3] #11 CACHED","timestamp":"2026-10-09T18:58:57.928922+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:57.929 [INFO] [docker:10a795a3] #12 CACHED","timestamp":"2026-10-09T18:58:57.929029+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:58:58.893 [INFO] [docker:10a795a3] #13 DONE 1.1s","timestamp":"2026-10-09T18:58:58.893552+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:07.252 [INFO] [docker:10a795a3] #14 DONE 8.3s","timestamp":"2026-10-09T18:59:07.252854+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:07.550 [INFO] [docker:10a795a3] #15 CACHED","timestamp":"2026-10-09T18:59:07.550983+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:09.132 [INFO] [docker:10a795a3] #16 DONE 1.6s","timestamp":"2026-10-09T18:59:09.132413+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:10.735 [INFO] [docker:10a795a3] #17 DONE 1.5s","timestamp":"2026-10-09T18:59:10.735769+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.658 [INFO] [docker:10a795a3] build success: docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a","timestamp":"2026-10-09T18:59:11.658069+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.658 [INFO] [docker:10a795a3] pushing docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a","timestamp":"2026-10-09T18:59:11.658181+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.695 [INFO] [docker:10a795a3] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-09T18:59:11.695737+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.729 [INFO] [docker:10a795a3] a7c7c8f616fa: Preparing","timestamp":"2026-10-09T18:59:11.729650+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.729 [INFO] [docker:10a795a3] 5f70bf18a086: Preparing","timestamp":"2026-10-09T18:59:11.729794+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.729 [INFO] [docker:10a795a3] 71a2618c0925: Preparing","timestamp":"2026-10-09T18:59:11.729901+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.729 [INFO] [docker:10a795a3] 6fc52eaf99f6: Preparing","timestamp":"2026-10-09T18:59:11.730004+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] cd4b3dc03178: Preparing","timestamp":"2026-10-09T18:59:11.730103+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] b4cfcb8385a8: Preparing","timestamp":"2026-10-09T18:59:11.730200+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] 2b730cf18c09: Preparing","timestamp":"2026-10-09T18:59:11.730295+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] edeaba958753: Preparing","timestamp":"2026-10-09T18:59:11.730392+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] 8bf42db0de72: Preparing","timestamp":"2026-10-09T18:59:11.730485+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] 31892cc314cb: Preparing","timestamp":"2026-10-09T18:59:11.730581+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] 11936051f93b: Preparing","timestamp":"2026-10-09T18:59:11.730674+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] b4cfcb8385a8: Waiting","timestamp":"2026-10-09T18:59:11.730780+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] 2b730cf18c09: Waiting","timestamp":"2026-10-09T18:59:11.730873+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.730 [INFO] [docker:10a795a3] edeaba958753: Waiting","timestamp":"2026-10-09T18:59:11.730967+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.731 [INFO] [docker:10a795a3] 8bf42db0de72: Waiting","timestamp":"2026-10-09T18:59:11.731061+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.731 [INFO] [docker:10a795a3] 31892cc314cb: Waiting","timestamp":"2026-10-09T18:59:11.731158+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:11.731 [INFO] [docker:10a795a3] 11936051f93b: Waiting","timestamp":"2026-10-09T18:59:11.731255+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.046 [INFO] [docker:10a795a3] 71a2618c0925: Layer already exists","timestamp":"2026-10-09T18:59:12.046588+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.128 [INFO] [docker:10a795a3] 5f70bf18a086: Layer already exists","timestamp":"2026-10-09T18:59:12.128932+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.130 [INFO] [docker:10a795a3] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-09T18:59:12.130806+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.131 [INFO] [docker:10a795a3] cd4b3dc03178: Layer already exists","timestamp":"2026-10-09T18:59:12.131104+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.156 [INFO] [docker:10a795a3] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-09T18:59:12.156926+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.267 [INFO] [docker:10a795a3] edeaba958753: Layer already exists","timestamp":"2026-10-09T18:59:12.267445+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.306 [INFO] [docker:10a795a3] 31892cc314cb: Layer already exists","timestamp":"2026-10-09T18:59:12.306140+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.306 [INFO] [docker:10a795a3] 2b730cf18c09: Layer already exists","timestamp":"2026-10-09T18:59:12.306515+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.307 [INFO] [docker:10a795a3] 8bf42db0de72: Layer already exists","timestamp":"2026-10-09T18:59:12.307086+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:12.393 [INFO] [docker:10a795a3] 11936051f93b: Layer already exists","timestamp":"2026-10-09T18:59:12.393941+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:16.076 [INFO] [docker:10a795a3] a7c7c8f616fa: Pushed","timestamp":"2026-10-09T18:59:16.076335+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:16.801 [INFO] [docker:10a795a3] main-5ec01f1a: digest: sha256:fcba01415c9faefa62a64098a7dde1e508b3cb5e560cc10b121b2b4b018fe45f size: 2628","timestamp":"2026-10-09T18:59:16.801946+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:16.887 [INFO] [docker:10a795a3] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-09T18:59:16.887758+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-09 18:59:16.922 [INFO] [docker:10a795a3] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-09T18:59:16.922400+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-09 18:59:16.923 [ERROR] [docker:10a795a3] 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-09T18:59:16.923403+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-09 18:59:16.923 [WARNING] [docker:10a795a3] 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-09T18:59:16.923711+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-09 18:59:16.923 [INFO] [orchestrator:10a795a3] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a","timestamp":"2026-10-09T18:59:16.923859+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 18:59:16.960 [INFO] [agent:10a795a3] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-5ec01f1a","timestamp":"2026-10-09T18:59:16.960456+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-09 18:59:16.970 [INFO] [agent:10a795a3] workspace cleaned","timestamp":"2026-10-09T18:59:16.970084+08:00"}]}