{"job_id":"ee0b6838-a3a4-4e99-97b7-02814e3bf8f5","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-09-30 10:04:58.029 [INFO] [agent:ee0b6838] 🚀 CI 流水线启动","timestamp":"2026-09-30T10:04:58.029459+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-09-30 10:04:58.029 [INFO] [git:ee0b6838] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/ee0b6838-a3a4-4e99-97b7-02814e3bf8f5 (branch=main)","timestamp":"2026-09-30T10:04:58.029834+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-09-30 10:04:58.789 [INFO] [git:ee0b6838] Cloning into '/app/data/workspace/ee0b6838-a3a4-4e99-97b7-02814e3bf8f5'...","timestamp":"2026-09-30T10:04:58.789670+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-09-30 10:04:58.789 [INFO] [git:ee0b6838] git clone success: /app/data/workspace/ee0b6838-a3a4-4e99-97b7-02814e3bf8f5","timestamp":"2026-09-30T10:04:58.789789+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-09-30 10:04:58.790 [INFO] [agent:ee0b6838] 📦 代码已克隆到 /app/data/workspace/ee0b6838-a3a4-4e99-97b7-02814e3bf8f5","timestamp":"2026-09-30T10:04:58.790220+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:04:58.791 [INFO] [orchestrator:ee0b6838] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-09-30T10:04:58.791211+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:04:59.323 [INFO] [orchestrator:ee0b6838] 📝 检测到变更的目录: src, src/main, src/test","timestamp":"2026-09-30T10:04:59.323214+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:04:59.962 [INFO] [orchestrator:ee0b6838] 📝 单服务项目，开始构建（代码指纹 0774a319）","timestamp":"2026-09-30T10:04:59.962508+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:04:59.962 [INFO] [orchestrator:ee0b6838] 🔨 开始构建 1 个服务","timestamp":"2026-09-30T10:04:59.962660+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:04:59.966 [INFO] [orchestrator:ee0b6838] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-0774a319","timestamp":"2026-09-30T10:04:59.966264+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:04:59.966 [INFO] [docker:ee0b6838] building docker.fanson.cloud/fanson/meet-pilot:main-0774a319 (with cache)","timestamp":"2026-09-30T10:04:59.966756+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:00.225 [INFO] [docker:ee0b6838] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-09-30T10:05:00.225961+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:00.226 [INFO] [docker:ee0b6838] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-09-30T10:05:00.226095+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:00.226 [INFO] [docker:ee0b6838] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-09-30T10:05:00.226193+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-09-30 10:05:00.228 [ERROR] [docker:ee0b6838] 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-30T10:05:00.228190+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-09-30 10:05:00.228 [WARNING] [docker:ee0b6838] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-09-30T10:05:00.228557+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:00.228 [INFO] [docker:ee0b6838] building docker.fanson.cloud/fanson/meet-pilot:main-0774a319 (native docker build)","timestamp":"2026-09-30T10:05:00.228677+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:00.981 [INFO] [docker:ee0b6838] #1 DONE 0.5s","timestamp":"2026-09-30T10:05:00.981141+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:01.305 [INFO] [docker:ee0b6838] #2 DONE 0.0s","timestamp":"2026-09-30T10:05:01.305825+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:01.832 [INFO] [docker:ee0b6838] #4 DONE 0.8s","timestamp":"2026-09-30T10:05:01.832802+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:02.050 [INFO] [docker:ee0b6838] #3 DONE 0.9s","timestamp":"2026-09-30T10:05:02.050194+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:02.407 [INFO] [docker:ee0b6838] #5 DONE 0.5s","timestamp":"2026-09-30T10:05:02.407495+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:02.605 [INFO] [docker:ee0b6838] #6 DONE 0.0s","timestamp":"2026-09-30T10:05:02.605362+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:02.605 [INFO] [docker:ee0b6838] #7 DONE 0.0s","timestamp":"2026-09-30T10:05:02.605486+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:02.982 [INFO] [docker:ee0b6838] #8 DONE 0.5s","timestamp":"2026-09-30T10:05:02.982502+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:03.200 [INFO] [docker:ee0b6838] #9 CACHED","timestamp":"2026-09-30T10:05:03.200511+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:03.200 [INFO] [docker:ee0b6838] #10 CACHED","timestamp":"2026-09-30T10:05:03.200657+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:03.200 [INFO] [docker:ee0b6838] #11 CACHED","timestamp":"2026-09-30T10:05:03.200796+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:03.200 [INFO] [docker:ee0b6838] #12 CACHED","timestamp":"2026-09-30T10:05:03.200908+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:04.464 [INFO] [docker:ee0b6838] #13 DONE 1.4s","timestamp":"2026-09-30T10:05:04.464290+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:12.093 [INFO] [docker:ee0b6838] #14 DONE 7.6s","timestamp":"2026-09-30T10:05:12.093841+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:12.421 [INFO] [docker:ee0b6838] #15 CACHED","timestamp":"2026-09-30T10:05:12.421300+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:13.973 [INFO] [docker:ee0b6838] #16 DONE 1.6s","timestamp":"2026-09-30T10:05:13.973582+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:15.698 [INFO] [docker:ee0b6838] #17 DONE 1.6s","timestamp":"2026-09-30T10:05:15.698431+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.719 [INFO] [docker:ee0b6838] build success: docker.fanson.cloud/fanson/meet-pilot:main-0774a319","timestamp":"2026-09-30T10:05:16.719544+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.719 [INFO] [docker:ee0b6838] pushing docker.fanson.cloud/fanson/meet-pilot:main-0774a319","timestamp":"2026-09-30T10:05:16.719675+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.756 [INFO] [docker:ee0b6838] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-30T10:05:16.756419+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] 4ed2ff43e6d4: Preparing","timestamp":"2026-09-30T10:05:16.790343+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] 5f70bf18a086: Preparing","timestamp":"2026-09-30T10:05:16.790489+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] 71a2618c0925: Preparing","timestamp":"2026-09-30T10:05:16.790597+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] 6fc52eaf99f6: Preparing","timestamp":"2026-09-30T10:05:16.790712+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] cd4b3dc03178: Preparing","timestamp":"2026-09-30T10:05:16.790816+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.790 [INFO] [docker:ee0b6838] b4cfcb8385a8: Preparing","timestamp":"2026-09-30T10:05:16.790916+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 2b730cf18c09: Preparing","timestamp":"2026-09-30T10:05:16.791014+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] edeaba958753: Preparing","timestamp":"2026-09-30T10:05:16.791111+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 8bf42db0de72: Preparing","timestamp":"2026-09-30T10:05:16.791207+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 31892cc314cb: Preparing","timestamp":"2026-09-30T10:05:16.791303+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 11936051f93b: Preparing","timestamp":"2026-09-30T10:05:16.791398+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 2b730cf18c09: Waiting","timestamp":"2026-09-30T10:05:16.791494+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] b4cfcb8385a8: Waiting","timestamp":"2026-09-30T10:05:16.791589+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] edeaba958753: Waiting","timestamp":"2026-09-30T10:05:16.791682+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 31892cc314cb: Waiting","timestamp":"2026-09-30T10:05:16.791800+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 8bf42db0de72: Waiting","timestamp":"2026-09-30T10:05:16.791897+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:16.791 [INFO] [docker:ee0b6838] 11936051f93b: Waiting","timestamp":"2026-09-30T10:05:16.791987+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.167 [INFO] [docker:ee0b6838] 71a2618c0925: Layer already exists","timestamp":"2026-09-30T10:05:17.167565+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.167 [INFO] [docker:ee0b6838] 6fc52eaf99f6: Layer already exists","timestamp":"2026-09-30T10:05:17.167829+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.167 [INFO] [docker:ee0b6838] cd4b3dc03178: Layer already exists","timestamp":"2026-09-30T10:05:17.167950+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.168 [INFO] [docker:ee0b6838] 5f70bf18a086: Layer already exists","timestamp":"2026-09-30T10:05:17.168047+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.254 [INFO] [docker:ee0b6838] 8bf42db0de72: Layer already exists","timestamp":"2026-09-30T10:05:17.254048+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.265 [INFO] [docker:ee0b6838] edeaba958753: Layer already exists","timestamp":"2026-09-30T10:05:17.265474+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.265 [INFO] [docker:ee0b6838] b4cfcb8385a8: Layer already exists","timestamp":"2026-09-30T10:05:17.265595+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.265 [INFO] [docker:ee0b6838] 2b730cf18c09: Layer already exists","timestamp":"2026-09-30T10:05:17.265933+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.319 [INFO] [docker:ee0b6838] 31892cc314cb: Layer already exists","timestamp":"2026-09-30T10:05:17.319300+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:17.330 [INFO] [docker:ee0b6838] 11936051f93b: Layer already exists","timestamp":"2026-09-30T10:05:17.330397+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:21.610 [INFO] [docker:ee0b6838] 4ed2ff43e6d4: Pushed","timestamp":"2026-09-30T10:05:21.610084+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:22.292 [INFO] [docker:ee0b6838] main-0774a319: digest: sha256:fe9d285564b2ca615e7da5eaed5dceb09aef631e50331c7232c4837aba672c47 size: 2628","timestamp":"2026-09-30T10:05:22.292157+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:22.378 [INFO] [docker:ee0b6838] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-09-30T10:05:22.378135+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-09-30 10:05:22.413 [INFO] [docker:ee0b6838] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-09-30T10:05:22.413200+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-09-30 10:05:22.414 [ERROR] [docker:ee0b6838] 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-30T10:05:22.414068+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-09-30 10:05:22.414 [WARNING] [docker:ee0b6838] 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-30T10:05:22.414487+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-09-30 10:05:22.414 [INFO] [orchestrator:ee0b6838] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-0774a319","timestamp":"2026-09-30T10:05:22.414652+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-09-30 10:05:22.450 [INFO] [agent:ee0b6838] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-0774a319","timestamp":"2026-09-30T10:05:22.450981+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-09-30 10:05:22.457 [INFO] [agent:ee0b6838] workspace cleaned","timestamp":"2026-09-30T10:05:22.457060+08:00"}]}