{"job_id":"23f0f089-9b7b-410e-8fd1-9b00d631eca8","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-24 14:12:17.860 [INFO] [agent:23f0f089] 🚀 CI 流水线启动","timestamp":"2026-09-24T14:12:17.860244+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-24 14:12:17.860 [INFO] [git:23f0f089] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/23f0f089-9b7b-410e-8fd1-9b00d631eca8 (branch=main)","timestamp":"2026-09-24T14:12:17.860524+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-24 14:12:18.505 [INFO] [git:23f0f089] Cloning into '/app/data/workspace/23f0f089-9b7b-410e-8fd1-9b00d631eca8'...","timestamp":"2026-09-24T14:12:18.505768+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-24 14:12:18.505 [INFO] [git:23f0f089] git clone success: /app/data/workspace/23f0f089-9b7b-410e-8fd1-9b00d631eca8","timestamp":"2026-09-24T14:12:18.505874+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-24 14:12:18.506 [INFO] [agent:23f0f089] 📦 代码已克隆到 /app/data/workspace/23f0f089-9b7b-410e-8fd1-9b00d631eca8","timestamp":"2026-09-24T14:12:18.506185+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:18.507 [INFO] [orchestrator:23f0f089] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-24T14:12:18.507129+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:19.032 [INFO] [orchestrator:23f0f089] 📝 检测到变更的目录: pilot.log, src, src/main, src/test","timestamp":"2026-09-24T14:12:19.032035+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:19.699 [INFO] [orchestrator:23f0f089] 📝 单服务项目，开始构建（代码指纹 36dca2ca）","timestamp":"2026-09-24T14:12:19.699805+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:19.699 [INFO] [orchestrator:23f0f089] 🔨 开始构建 1 个服务","timestamp":"2026-09-24T14:12:19.699933+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:19.703 [INFO] [orchestrator:23f0f089] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-36dca2ca","timestamp":"2026-09-24T14:12:19.703436+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:19.703 [INFO] [docker:23f0f089] building docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca (with cache)","timestamp":"2026-09-24T14:12:19.703921+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:19.955 [INFO] [docker:23f0f089] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-24T14:12:19.955109+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:19.955 [INFO] [docker:23f0f089] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-24T14:12:19.955254+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:19.955 [INFO] [docker:23f0f089] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-24T14:12:19.955365+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-09-24 14:12:19.957 [ERROR] [docker:23f0f089] 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-24T14:12:19.957347+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-09-24 14:12:19.957 [WARNING] [docker:23f0f089] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-24T14:12:19.957734+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:19.957 [INFO] [docker:23f0f089] building docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca (native docker build)","timestamp":"2026-09-24T14:12:19.957836+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:20.710 [INFO] [docker:23f0f089] #1 DONE 0.5s","timestamp":"2026-09-24T14:12:20.710225+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:21.022 [INFO] [docker:23f0f089] #2 DONE 0.0s","timestamp":"2026-09-24T14:12:21.022814+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:21.384 [INFO] [docker:23f0f089] #3 DONE 0.6s","timestamp":"2026-09-24T14:12:21.384885+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:21.572 [INFO] [docker:23f0f089] #4 DONE 0.8s","timestamp":"2026-09-24T14:12:21.572891+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.103 [INFO] [docker:23f0f089] #5 DONE 0.5s","timestamp":"2026-09-24T14:12:22.103389+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.301 [INFO] [docker:23f0f089] #6 DONE 0.0s","timestamp":"2026-09-24T14:12:22.301894+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.302 [INFO] [docker:23f0f089] #7 DONE 0.0s","timestamp":"2026-09-24T14:12:22.302035+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.700 [INFO] [docker:23f0f089] #8 DONE 0.5s","timestamp":"2026-09-24T14:12:22.700571+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.896 [INFO] [docker:23f0f089] #9 CACHED","timestamp":"2026-09-24T14:12:22.896351+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.896 [INFO] [docker:23f0f089] #10 CACHED","timestamp":"2026-09-24T14:12:22.896493+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.896 [INFO] [docker:23f0f089] #11 CACHED","timestamp":"2026-09-24T14:12:22.896611+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:22.896 [INFO] [docker:23f0f089] #12 CACHED","timestamp":"2026-09-24T14:12:22.896741+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:23.961 [INFO] [docker:23f0f089] #13 DONE 1.2s","timestamp":"2026-09-24T14:12:23.961148+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:31.524 [INFO] [docker:23f0f089] #14 DONE 7.5s","timestamp":"2026-09-24T14:12:31.524178+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:31.833 [INFO] [docker:23f0f089] #15 CACHED","timestamp":"2026-09-24T14:12:31.833947+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:33.426 [INFO] [docker:23f0f089] #16 DONE 1.6s","timestamp":"2026-09-24T14:12:33.426135+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:35.062 [INFO] [docker:23f0f089] #17 DONE 1.5s","timestamp":"2026-09-24T14:12:35.062692+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.017 [INFO] [docker:23f0f089] build success: docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca","timestamp":"2026-09-24T14:12:36.017102+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.017 [INFO] [docker:23f0f089] pushing docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca","timestamp":"2026-09-24T14:12:36.017210+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.054 [INFO] [docker:23f0f089] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-24T14:12:36.054366+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] 05a14f1d5484: Preparing","timestamp":"2026-09-24T14:12:36.115522+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] 5f70bf18a086: Preparing","timestamp":"2026-09-24T14:12:36.115635+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] 71a2618c0925: Preparing","timestamp":"2026-09-24T14:12:36.115744+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] 6fc52eaf99f6: Preparing","timestamp":"2026-09-24T14:12:36.115832+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] cd4b3dc03178: Preparing","timestamp":"2026-09-24T14:12:36.115915+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.115 [INFO] [docker:23f0f089] b4cfcb8385a8: Preparing","timestamp":"2026-09-24T14:12:36.115995+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 2b730cf18c09: Preparing","timestamp":"2026-09-24T14:12:36.116076+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] edeaba958753: Preparing","timestamp":"2026-09-24T14:12:36.116155+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 8bf42db0de72: Preparing","timestamp":"2026-09-24T14:12:36.116235+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 31892cc314cb: Preparing","timestamp":"2026-09-24T14:12:36.116313+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 11936051f93b: Preparing","timestamp":"2026-09-24T14:12:36.116392+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] b4cfcb8385a8: Waiting","timestamp":"2026-09-24T14:12:36.116471+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 2b730cf18c09: Waiting","timestamp":"2026-09-24T14:12:36.116548+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] edeaba958753: Waiting","timestamp":"2026-09-24T14:12:36.116626+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 8bf42db0de72: Waiting","timestamp":"2026-09-24T14:12:36.116711+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 31892cc314cb: Waiting","timestamp":"2026-09-24T14:12:36.116801+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.116 [INFO] [docker:23f0f089] 11936051f93b: Waiting","timestamp":"2026-09-24T14:12:36.116887+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.431 [INFO] [docker:23f0f089] cd4b3dc03178: Layer already exists","timestamp":"2026-09-24T14:12:36.431147+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.505 [INFO] [docker:23f0f089] 71a2618c0925: Layer already exists","timestamp":"2026-09-24T14:12:36.505092+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.506 [INFO] [docker:23f0f089] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-24T14:12:36.506076+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.506 [INFO] [docker:23f0f089] 5f70bf18a086: Layer already exists","timestamp":"2026-09-24T14:12:36.506469+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.530 [INFO] [docker:23f0f089] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-24T14:12:36.530352+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.633 [INFO] [docker:23f0f089] 8bf42db0de72: Layer already exists","timestamp":"2026-09-24T14:12:36.633730+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.642 [INFO] [docker:23f0f089] 2b730cf18c09: Layer already exists","timestamp":"2026-09-24T14:12:36.642337+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.642 [INFO] [docker:23f0f089] 31892cc314cb: Layer already exists","timestamp":"2026-09-24T14:12:36.642454+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.642 [INFO] [docker:23f0f089] edeaba958753: Layer already exists","timestamp":"2026-09-24T14:12:36.642965+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:36.736 [INFO] [docker:23f0f089] 11936051f93b: Layer already exists","timestamp":"2026-09-24T14:12:36.736097+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:40.875 [INFO] [docker:23f0f089] 05a14f1d5484: Pushed","timestamp":"2026-09-24T14:12:40.875435+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:41.602 [INFO] [docker:23f0f089] main-36dca2ca: digest: sha256:93c0ba2dc9a776d61942eb4b6ac0796ea6e7a8f720eebfaa4868e2cd29fea891 size: 2628","timestamp":"2026-09-24T14:12:41.602404+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:41.680 [INFO] [docker:23f0f089] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-24T14:12:41.680712+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-24 14:12:41.714 [INFO] [docker:23f0f089] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-09-24T14:12:41.714266+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-09-24 14:12:41.715 [ERROR] [docker:23f0f089] 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-24T14:12:41.715107+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-09-24 14:12:41.715 [WARNING] [docker:23f0f089] 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-24T14:12:41.715415+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-24 14:12:41.715 [INFO] [orchestrator:23f0f089] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca","timestamp":"2026-09-24T14:12:41.715516+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-09-24 14:12:41.752 [INFO] [agent:23f0f089] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-36dca2ca","timestamp":"2026-09-24T14:12:41.752774+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-09-24 14:12:41.758 [INFO] [agent:23f0f089] workspace cleaned","timestamp":"2026-09-24T14:12:41.758854+08:00"}]}