{"job_id":"2aefaf75-a2da-4786-9d78-446e92b8dfd6","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 18:07:08.364 [INFO] [agent:2aefaf75] 🚀 CI 流水线启动","timestamp":"2026-10-08T18:07:08.364188+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-08 18:07:08.364 [INFO] [git:2aefaf75] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/2aefaf75-a2da-4786-9d78-446e92b8dfd6 (branch=main)","timestamp":"2026-10-08T18:07:08.364560+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-08 18:07:08.966 [INFO] [git:2aefaf75] Cloning into '/app/data/workspace/2aefaf75-a2da-4786-9d78-446e92b8dfd6'...","timestamp":"2026-10-08T18:07:08.966755+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-08 18:07:08.966 [INFO] [git:2aefaf75] git clone success: /app/data/workspace/2aefaf75-a2da-4786-9d78-446e92b8dfd6","timestamp":"2026-10-08T18:07:08.966863+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 18:07:08.967 [INFO] [agent:2aefaf75] 📦 代码已克隆到 /app/data/workspace/2aefaf75-a2da-4786-9d78-446e92b8dfd6","timestamp":"2026-10-08T18:07:08.967234+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:08.968 [INFO] [orchestrator:2aefaf75] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-08T18:07:08.968168+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:09.475 [INFO] [orchestrator:2aefaf75] 📝 检测到变更的目录: src, src/main, src/test","timestamp":"2026-10-08T18:07:09.475067+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:10.102 [INFO] [orchestrator:2aefaf75] 📝 单服务项目，开始构建（代码指纹 c438d2eb）","timestamp":"2026-10-08T18:07:10.102972+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:10.103 [INFO] [orchestrator:2aefaf75] 🔨 开始构建 1 个服务","timestamp":"2026-10-08T18:07:10.103097+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:10.107 [INFO] [orchestrator:2aefaf75] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-c438d2eb","timestamp":"2026-10-08T18:07:10.107279+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:10.107 [INFO] [docker:2aefaf75] building docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb (with cache)","timestamp":"2026-10-08T18:07:10.107766+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:10.400 [INFO] [docker:2aefaf75] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-08T18:07:10.400592+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:10.400 [INFO] [docker:2aefaf75] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-08T18:07:10.400761+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:10.400 [INFO] [docker:2aefaf75] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-08T18:07:10.400866+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-08 18:07:10.402 [ERROR] [docker:2aefaf75] 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-08T18:07:10.402765+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-08 18:07:10.403 [WARNING] [docker:2aefaf75] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-08T18:07:10.403080+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:10.403 [INFO] [docker:2aefaf75] building docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb (native docker build)","timestamp":"2026-10-08T18:07:10.403176+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:11.067 [INFO] [docker:2aefaf75] #1 DONE 0.4s","timestamp":"2026-10-08T18:07:11.067458+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:11.356 [INFO] [docker:2aefaf75] #2 DONE 0.0s","timestamp":"2026-10-08T18:07:11.356985+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:11.897 [INFO] [docker:2aefaf75] #4 DONE 0.8s","timestamp":"2026-10-08T18:07:11.897140+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:12.162 [INFO] [docker:2aefaf75] #3 DONE 1.1s","timestamp":"2026-10-08T18:07:12.162370+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:12.648 [INFO] [docker:2aefaf75] #5 DONE 0.5s","timestamp":"2026-10-08T18:07:12.648640+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:12.846 [INFO] [docker:2aefaf75] #6 DONE 0.0s","timestamp":"2026-10-08T18:07:12.846756+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:12.846 [INFO] [docker:2aefaf75] #7 DONE 0.0s","timestamp":"2026-10-08T18:07:12.846882+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:13.334 [INFO] [docker:2aefaf75] #8 DONE 0.6s","timestamp":"2026-10-08T18:07:13.334196+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:13.519 [INFO] [docker:2aefaf75] #9 CACHED","timestamp":"2026-10-08T18:07:13.519435+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:13.519 [INFO] [docker:2aefaf75] #10 CACHED","timestamp":"2026-10-08T18:07:13.519571+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:13.519 [INFO] [docker:2aefaf75] #11 CACHED","timestamp":"2026-10-08T18:07:13.519672+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:13.519 [INFO] [docker:2aefaf75] #12 CACHED","timestamp":"2026-10-08T18:07:13.519783+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:14.683 [INFO] [docker:2aefaf75] #13 DONE 1.3s","timestamp":"2026-10-08T18:07:14.683335+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:22.312 [INFO] [docker:2aefaf75] #14 DONE 7.6s","timestamp":"2026-10-08T18:07:22.312779+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:22.631 [INFO] [docker:2aefaf75] #15 CACHED","timestamp":"2026-10-08T18:07:22.631602+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:24.247 [INFO] [docker:2aefaf75] #16 DONE 1.6s","timestamp":"2026-10-08T18:07:24.247862+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:25.895 [INFO] [docker:2aefaf75] #17 DONE 1.6s","timestamp":"2026-10-08T18:07:25.895460+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.038 [INFO] [docker:2aefaf75] build success: docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb","timestamp":"2026-10-08T18:07:27.038047+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.038 [INFO] [docker:2aefaf75] pushing docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb","timestamp":"2026-10-08T18:07:27.038153+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.075 [INFO] [docker:2aefaf75] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-08T18:07:27.075969+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] 6b2c56d03bdc: Preparing","timestamp":"2026-10-08T18:07:27.110479+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] 5f70bf18a086: Preparing","timestamp":"2026-10-08T18:07:27.110594+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] 71a2618c0925: Preparing","timestamp":"2026-10-08T18:07:27.110688+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] 6fc52eaf99f6: Preparing","timestamp":"2026-10-08T18:07:27.110787+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] cd4b3dc03178: Preparing","timestamp":"2026-10-08T18:07:27.110869+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.110 [INFO] [docker:2aefaf75] b4cfcb8385a8: Preparing","timestamp":"2026-10-08T18:07:27.110948+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 2b730cf18c09: Preparing","timestamp":"2026-10-08T18:07:27.111029+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] edeaba958753: Preparing","timestamp":"2026-10-08T18:07:27.111108+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 8bf42db0de72: Preparing","timestamp":"2026-10-08T18:07:27.111185+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 31892cc314cb: Preparing","timestamp":"2026-10-08T18:07:27.111263+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 11936051f93b: Preparing","timestamp":"2026-10-08T18:07:27.111340+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] b4cfcb8385a8: Waiting","timestamp":"2026-10-08T18:07:27.111419+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 2b730cf18c09: Waiting","timestamp":"2026-10-08T18:07:27.111497+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 8bf42db0de72: Waiting","timestamp":"2026-10-08T18:07:27.111575+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] edeaba958753: Waiting","timestamp":"2026-10-08T18:07:27.111652+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 31892cc314cb: Waiting","timestamp":"2026-10-08T18:07:27.111738+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.111 [INFO] [docker:2aefaf75] 11936051f93b: Waiting","timestamp":"2026-10-08T18:07:27.111820+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.501 [INFO] [docker:2aefaf75] 71a2618c0925: Layer already exists","timestamp":"2026-10-08T18:07:27.501028+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.501 [INFO] [docker:2aefaf75] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-08T18:07:27.501192+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.501 [INFO] [docker:2aefaf75] 5f70bf18a086: Layer already exists","timestamp":"2026-10-08T18:07:27.501305+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.501 [INFO] [docker:2aefaf75] cd4b3dc03178: Layer already exists","timestamp":"2026-10-08T18:07:27.501394+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.625 [INFO] [docker:2aefaf75] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-08T18:07:27.625715+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.643 [INFO] [docker:2aefaf75] edeaba958753: Layer already exists","timestamp":"2026-10-08T18:07:27.643974+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.644 [INFO] [docker:2aefaf75] 2b730cf18c09: Layer already exists","timestamp":"2026-10-08T18:07:27.644119+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.644 [INFO] [docker:2aefaf75] 8bf42db0de72: Layer already exists","timestamp":"2026-10-08T18:07:27.644210+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.749 [INFO] [docker:2aefaf75] 11936051f93b: Layer already exists","timestamp":"2026-10-08T18:07:27.749718+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:27.780 [INFO] [docker:2aefaf75] 31892cc314cb: Layer already exists","timestamp":"2026-10-08T18:07:27.780214+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:31.335 [INFO] [docker:2aefaf75] 6b2c56d03bdc: Pushed","timestamp":"2026-10-08T18:07:31.335475+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:32.040 [INFO] [docker:2aefaf75] main-c438d2eb: digest: sha256:b431e9172d33bf18c71643ddf18695c71aabcc93985e74366ec689f72963343d size: 2628","timestamp":"2026-10-08T18:07:32.040005+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:32.124 [INFO] [docker:2aefaf75] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-08T18:07:32.124741+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-08 18:07:32.159 [INFO] [docker:2aefaf75] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-08T18:07:32.159490+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-08 18:07:32.160 [ERROR] [docker:2aefaf75] 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-08T18:07:32.160246+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-08 18:07:32.160 [WARNING] [docker:2aefaf75] 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-08T18:07:32.160667+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-08 18:07:32.160 [INFO] [orchestrator:2aefaf75] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb","timestamp":"2026-10-08T18:07:32.160844+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 18:07:32.217 [INFO] [agent:2aefaf75] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-c438d2eb","timestamp":"2026-10-08T18:07:32.217475+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-08 18:07:32.224 [INFO] [agent:2aefaf75] workspace cleaned","timestamp":"2026-10-08T18:07:32.224103+08:00"}]}