{"job_id":"8b32bd34-c234-4e2d-ba7b-6fa7cea5176f","filters":{"level":null,"component":null},"total":73,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-10-10 18:55:17.836 [INFO] [agent:8b32bd34] 🚀 CI 流水线启动","timestamp":"2026-10-10T18:55:17.836517+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-10-10 18:55:17.836 [INFO] [git:8b32bd34] cloning http://git.fanson.cloud/fanson/fs-talk/meet-pilot.git -> /app/data/workspace/8b32bd34-c234-4e2d-ba7b-6fa7cea5176f (branch=main)","timestamp":"2026-10-10T18:55:17.836960+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-10-10 18:55:18.389 [INFO] [git:8b32bd34] Cloning into '/app/data/workspace/8b32bd34-c234-4e2d-ba7b-6fa7cea5176f'...","timestamp":"2026-10-10T18:55:18.389135+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-10-10 18:55:18.389 [INFO] [git:8b32bd34] git clone success: /app/data/workspace/8b32bd34-c234-4e2d-ba7b-6fa7cea5176f","timestamp":"2026-10-10T18:55:18.389261+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-10-10 18:55:18.389 [INFO] [agent:8b32bd34] 📦 代码已克隆到 /app/data/workspace/8b32bd34-c234-4e2d-ba7b-6fa7cea5176f","timestamp":"2026-10-10T18:55:18.389648+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:18.390 [INFO] [orchestrator:8b32bd34] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-10-10T18:55:18.390593+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:18.840 [INFO] [orchestrator:8b32bd34] 📝 检测到变更的目录: src, src/main, src/test","timestamp":"2026-10-10T18:55:18.840271+08:00"},{"seq":8,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:19.478 [INFO] [orchestrator:8b32bd34] 📝 单服务项目，开始构建（代码指纹 49926b37）","timestamp":"2026-10-10T18:55:19.478106+08:00"},{"seq":9,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:19.478 [INFO] [orchestrator:8b32bd34] 🔨 开始构建 1 个服务","timestamp":"2026-10-10T18:55:19.478241+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:19.482 [INFO] [orchestrator:8b32bd34] 🔨 构建服务: fanson/meet-pilot → 镜像标签 fanson/meet-pilot:main-49926b37","timestamp":"2026-10-10T18:55:19.482273+08:00"},{"seq":11,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:19.482 [INFO] [docker:8b32bd34] building docker.fanson.cloud/fanson/meet-pilot:main-49926b37 (with cache)","timestamp":"2026-10-10T18:55:19.482747+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:19.776 [INFO] [docker:8b32bd34] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-10-10T18:55:19.776013+08:00"},{"seq":13,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:19.776 [INFO] [docker:8b32bd34] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-10-10T18:55:19.776156+08:00"},{"seq":14,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:19.776 [INFO] [docker:8b32bd34] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-10-10T18:55:19.776269+08:00"},{"seq":15,"level":"ERROR","component":"docker","message":"[docker] 2026-10-10 18:55:19.778 [ERROR] [docker:8b32bd34] 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-10T18:55:19.778241+08:00"},{"seq":16,"level":"WARNING","component":"docker","message":"[docker] 2026-10-10 18:55:19.778 [WARNING] [docker:8b32bd34] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-10-10T18:55:19.778611+08:00"},{"seq":17,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:19.778 [INFO] [docker:8b32bd34] building docker.fanson.cloud/fanson/meet-pilot:main-49926b37 (native docker build)","timestamp":"2026-10-10T18:55:19.778720+08:00"},{"seq":18,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:20.563 [INFO] [docker:8b32bd34] #1 DONE 0.5s","timestamp":"2026-10-10T18:55:20.563742+08:00"},{"seq":19,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:20.904 [INFO] [docker:8b32bd34] #2 DONE 0.0s","timestamp":"2026-10-10T18:55:20.904552+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:21.271 [INFO] [docker:8b32bd34] #3 DONE 0.7s","timestamp":"2026-10-10T18:55:21.271598+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:22.023 [INFO] [docker:8b32bd34] #4 DONE 1.4s","timestamp":"2026-10-10T18:55:22.023468+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:22.598 [INFO] [docker:8b32bd34] #5 DONE 0.6s","timestamp":"2026-10-10T18:55:22.598269+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:22.796 [INFO] [docker:8b32bd34] #6 DONE 0.0s","timestamp":"2026-10-10T18:55:22.796254+08:00"},{"seq":24,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:22.796 [INFO] [docker:8b32bd34] #7 DONE 0.0s","timestamp":"2026-10-10T18:55:22.796376+08:00"},{"seq":25,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:23.184 [INFO] [docker:8b32bd34] #8 DONE 0.5s","timestamp":"2026-10-10T18:55:23.184270+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:23.380 [INFO] [docker:8b32bd34] #9 CACHED","timestamp":"2026-10-10T18:55:23.380298+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:23.380 [INFO] [docker:8b32bd34] #10 CACHED","timestamp":"2026-10-10T18:55:23.380429+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:23.380 [INFO] [docker:8b32bd34] #11 CACHED","timestamp":"2026-10-10T18:55:23.380530+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:23.380 [INFO] [docker:8b32bd34] #12 CACHED","timestamp":"2026-10-10T18:55:23.380629+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:24.577 [INFO] [docker:8b32bd34] #13 DONE 1.3s","timestamp":"2026-10-10T18:55:24.577714+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:32.594 [INFO] [docker:8b32bd34] #14 DONE 8.0s","timestamp":"2026-10-10T18:55:32.594101+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:32.879 [INFO] [docker:8b32bd34] #15 CACHED","timestamp":"2026-10-10T18:55:32.879070+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:34.374 [INFO] [docker:8b32bd34] #16 DONE 1.5s","timestamp":"2026-10-10T18:55:34.374412+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:36.043 [INFO] [docker:8b32bd34] #17 DONE 1.5s","timestamp":"2026-10-10T18:55:36.043978+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.065 [INFO] [docker:8b32bd34] build success: docker.fanson.cloud/fanson/meet-pilot:main-49926b37","timestamp":"2026-10-10T18:55:37.065090+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.065 [INFO] [docker:8b32bd34] pushing docker.fanson.cloud/fanson/meet-pilot:main-49926b37","timestamp":"2026-10-10T18:55:37.065208+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.102 [INFO] [docker:8b32bd34] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-10T18:55:37.102645+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] 00b48946b239: Preparing","timestamp":"2026-10-10T18:55:37.137402+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] 5f70bf18a086: Preparing","timestamp":"2026-10-10T18:55:37.137529+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] 71a2618c0925: Preparing","timestamp":"2026-10-10T18:55:37.137622+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] 6fc52eaf99f6: Preparing","timestamp":"2026-10-10T18:55:37.137727+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] cd4b3dc03178: Preparing","timestamp":"2026-10-10T18:55:37.137814+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] b4cfcb8385a8: Preparing","timestamp":"2026-10-10T18:55:37.137906+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.137 [INFO] [docker:8b32bd34] 2b730cf18c09: Preparing","timestamp":"2026-10-10T18:55:37.137990+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] edeaba958753: Preparing","timestamp":"2026-10-10T18:55:37.138074+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 8bf42db0de72: Preparing","timestamp":"2026-10-10T18:55:37.138157+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 31892cc314cb: Preparing","timestamp":"2026-10-10T18:55:37.138241+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 11936051f93b: Preparing","timestamp":"2026-10-10T18:55:37.138324+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] b4cfcb8385a8: Waiting","timestamp":"2026-10-10T18:55:37.138407+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 2b730cf18c09: Waiting","timestamp":"2026-10-10T18:55:37.138497+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] edeaba958753: Waiting","timestamp":"2026-10-10T18:55:37.138590+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 11936051f93b: Waiting","timestamp":"2026-10-10T18:55:37.138683+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 8bf42db0de72: Waiting","timestamp":"2026-10-10T18:55:37.138805+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.138 [INFO] [docker:8b32bd34] 31892cc314cb: Waiting","timestamp":"2026-10-10T18:55:37.138905+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.488 [INFO] [docker:8b32bd34] 5f70bf18a086: Layer already exists","timestamp":"2026-10-10T18:55:37.488331+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.488 [INFO] [docker:8b32bd34] 71a2618c0925: Layer already exists","timestamp":"2026-10-10T18:55:37.488516+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.488 [INFO] [docker:8b32bd34] cd4b3dc03178: Layer already exists","timestamp":"2026-10-10T18:55:37.488612+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.488 [INFO] [docker:8b32bd34] 6fc52eaf99f6: Layer already exists","timestamp":"2026-10-10T18:55:37.488883+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.619 [INFO] [docker:8b32bd34] 2b730cf18c09: Layer already exists","timestamp":"2026-10-10T18:55:37.619867+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.642 [INFO] [docker:8b32bd34] 8bf42db0de72: Layer already exists","timestamp":"2026-10-10T18:55:37.642479+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.642 [INFO] [docker:8b32bd34] b4cfcb8385a8: Layer already exists","timestamp":"2026-10-10T18:55:37.642603+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.643 [INFO] [docker:8b32bd34] edeaba958753: Layer already exists","timestamp":"2026-10-10T18:55:37.643029+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.730 [INFO] [docker:8b32bd34] 11936051f93b: Layer already exists","timestamp":"2026-10-10T18:55:37.730216+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:37.752 [INFO] [docker:8b32bd34] 31892cc314cb: Layer already exists","timestamp":"2026-10-10T18:55:37.752912+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:41.355 [INFO] [docker:8b32bd34] 00b48946b239: Pushed","timestamp":"2026-10-10T18:55:41.355982+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:42.126 [INFO] [docker:8b32bd34] main-49926b37: digest: sha256:1b82146d18ad6f1631f939bf0a0e35b642c80478ded7a6908ae0877b510da013 size: 2628","timestamp":"2026-10-10T18:55:42.126217+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:42.216 [INFO] [docker:8b32bd34] The push refers to repository [docker.fanson.cloud/fanson/meet-pilot]","timestamp":"2026-10-10T18:55:42.216876+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-10-10 18:55:42.253 [INFO] [docker:8b32bd34] tag does not exist: docker.fanson.cloud/fanson/meet-pilot:cache","timestamp":"2026-10-10T18:55:42.253473+08:00"},{"seq":69,"level":"ERROR","component":"docker","message":"[docker] 2026-10-10 18:55:42.254 [ERROR] [docker:8b32bd34] 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-10T18:55:42.254362+08:00"},{"seq":70,"level":"WARNING","component":"docker","message":"[docker] 2026-10-10 18:55:42.254 [WARNING] [docker:8b32bd34] 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-10T18:55:42.254646+08:00"},{"seq":71,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-10-10 18:55:42.254 [INFO] [orchestrator:8b32bd34] ✅ 服务构建完成: docker.fanson.cloud/fanson/meet-pilot:main-49926b37","timestamp":"2026-10-10T18:55:42.254767+08:00"},{"seq":72,"level":"INFO","component":"agent","message":"[agent] 2026-10-10 18:55:42.291 [INFO] [agent:8b32bd34] ✅ 构建完成: 成功构建 1 个镜像: docker.fanson.cloud/fanson/meet-pilot:main-49926b37","timestamp":"2026-10-10T18:55:42.291208+08:00"},{"seq":73,"level":"INFO","component":"agent","message":"[agent] 2026-10-10 18:55:42.298 [INFO] [agent:8b32bd34] workspace cleaned","timestamp":"2026-10-10T18:55:42.299001+08:00"}]}