{"job_id":"bb40d486-b581-42ec-bc61-a1b6bc0785c8","filters":{"level":null,"component":null},"total":194,"logs":[{"seq":1,"level":"INFO","component":"agent","message":"[agent] 2026-08-13 17:55:32.176 [INFO] [agent:bb40d486] 🚀 CI 流水线启动","timestamp":"2026-08-13T17:55:32.176190+08:00"},{"seq":2,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:32.176 [INFO] [git:bb40d486] cloning http://git.fanson.cloud/fanson/fscp-admin.git -> /app/data/workspace/bb40d486-b581-42ec-bc61-a1b6bc0785c8 (branch=develop)","timestamp":"2026-08-13T17:55:32.176626+08:00"},{"seq":3,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:33.405 [INFO] [git:bb40d486] Cloning into '/app/data/workspace/bb40d486-b581-42ec-bc61-a1b6bc0785c8'...","timestamp":"2026-08-13T17:55:33.405297+08:00"},{"seq":4,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:33.405 [INFO] [git:bb40d486] git clone success: /app/data/workspace/bb40d486-b581-42ec-bc61-a1b6bc0785c8","timestamp":"2026-08-13T17:55:33.405407+08:00"},{"seq":5,"level":"INFO","component":"agent","message":"[agent] 2026-08-13 17:55:33.405 [INFO] [agent:bb40d486] 📦 代码已克隆到 /app/data/workspace/bb40d486-b581-42ec-bc61-a1b6bc0785c8","timestamp":"2026-08-13T17:55:33.405829+08:00"},{"seq":6,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:33.408 [INFO] [orchestrator:bb40d486] 📋 发现 .ci.yml 配置文件，使用确定性构建流程","timestamp":"2026-08-13T17:55:33.408373+08:00"},{"seq":7,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:33.889 [INFO] [orchestrator:bb40d486] 📝 检测到变更的目录: fscp-api, fscp-api/fscp-api-billing, fscp-api/fscp-api-system, fscp-modules, fscp-modules/fscp-billing, fscp-modules/fscp-system","timestamp":"2026-08-13T17:55:33.889188+08:00"},{"seq":8,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:33.892 [INFO] [git:bb40d486] 目录 fscp-gateway 代码指纹: 758e339","timestamp":"2026-08-13T17:55:33.892918+08:00"},{"seq":9,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:34.307 [INFO] [docker:bb40d486] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339（跳过构建）","timestamp":"2026-08-13T17:55:34.307275+08:00"},{"seq":10,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:34.307 [INFO] [orchestrator:bb40d486] SKIP fanson/fscp-gateway (镜像 fanson/fscp-gateway:develop-758e339 已存在，代码指纹 758e339)","timestamp":"2026-08-13T17:55:34.307405+08:00"},{"seq":11,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:34.311 [INFO] [git:bb40d486] 目录 fscp-auth 代码指纹: f3e26ae","timestamp":"2026-08-13T17:55:34.311183+08:00"},{"seq":12,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:34.686 [INFO] [docker:bb40d486] 镜像已存在于 Registry: docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae（跳过构建）","timestamp":"2026-08-13T17:55:34.686118+08:00"},{"seq":13,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:34.686 [INFO] [orchestrator:bb40d486] SKIP fanson/fscp-auth (镜像 fanson/fscp-auth:develop-f3e26ae 已存在，代码指纹 f3e26ae)","timestamp":"2026-08-13T17:55:34.686240+08:00"},{"seq":14,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:34.689 [INFO] [git:bb40d486] 目录 fscp-modules 代码指纹: 664bb46","timestamp":"2026-08-13T17:55:34.689637+08:00"},{"seq":15,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:35.330 [INFO] [git:bb40d486] 目录 fscp-modules 代码指纹: 664bb46","timestamp":"2026-08-13T17:55:35.330928+08:00"},{"seq":16,"level":"INFO","component":"git","message":"[git] 2026-08-13 17:55:35.957 [INFO] [git:bb40d486] 目录 fscp-modules 代码指纹: 664bb46","timestamp":"2026-08-13T17:55:35.957959+08:00"},{"seq":17,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:36.580 [INFO] [orchestrator:bb40d486] 🔨 开始构建 3 个服务","timestamp":"2026-08-13T17:55:36.580076+08:00"},{"seq":18,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:36.583 [INFO] [orchestrator:bb40d486] 🔨 构建服务: fanson/fscp-system → 镜像标签 fanson/fscp-system:develop-664bb46","timestamp":"2026-08-13T17:55:36.583556+08:00"},{"seq":19,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:55:36.583 [INFO] [orchestrator:bb40d486] 已自动注入 -pl fscp-modules/fscp-system -am: mvn -pl fscp-modules/fscp-system -am clean package -DskipTests","timestamp":"2026-08-13T17:55:36.583687+08:00"},{"seq":20,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:36.584 [INFO] [docker:bb40d486] building docker.fanson.cloud/fanson/fscp-system:develop-664bb46 (with cache)","timestamp":"2026-08-13T17:55:36.584059+08:00"},{"seq":21,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:36.864 [INFO] [docker:bb40d486] ERROR: failed to build: Cache export is not supported for the docker driver.","timestamp":"2026-08-13T17:55:36.864713+08:00"},{"seq":22,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:36.864 [INFO] [docker:bb40d486] Switch to a different driver, or turn on the containerd image store, and try again.","timestamp":"2026-08-13T17:55:36.864867+08:00"},{"seq":23,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:36.864 [INFO] [docker:bb40d486] Learn more at https://docs.docker.com/go/build-cache-backends/","timestamp":"2026-08-13T17:55:36.864967+08:00"},{"seq":24,"level":"ERROR","component":"docker","message":"[docker] 2026-08-13 17:55:36.866 [ERROR] [docker:bb40d486] 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-08-13T17:55:36.866761+08:00"},{"seq":25,"level":"WARNING","component":"docker","message":"[docker] 2026-08-13 17:55:36.867 [WARNING] [docker:bb40d486] buildx 不可用，已切换为原生 docker build (之后本 job 不会再重试 buildx)","timestamp":"2026-08-13T17:55:36.867174+08:00"},{"seq":26,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:36.867 [INFO] [docker:bb40d486] building docker.fanson.cloud/fanson/fscp-system:develop-664bb46 (native docker build)","timestamp":"2026-08-13T17:55:36.867376+08:00"},{"seq":27,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:37.575 [INFO] [docker:bb40d486] #1 DONE 0.4s","timestamp":"2026-08-13T17:55:37.575485+08:00"},{"seq":28,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:37.862 [INFO] [docker:bb40d486] #2 DONE 0.0s","timestamp":"2026-08-13T17:55:37.862356+08:00"},{"seq":29,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:38.150 [INFO] [docker:bb40d486] #4 DONE 0.5s","timestamp":"2026-08-13T17:55:38.150624+08:00"},{"seq":30,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:39.842 [INFO] [docker:bb40d486] #3 DONE 2.2s","timestamp":"2026-08-13T17:55:39.842434+08:00"},{"seq":31,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:40.296 [INFO] [docker:bb40d486] #5 DONE 0.5s","timestamp":"2026-08-13T17:55:40.296098+08:00"},{"seq":32,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:40.515 [INFO] [docker:bb40d486] #6 DONE 0.0s","timestamp":"2026-08-13T17:55:40.515531+08:00"},{"seq":33,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:40.515 [INFO] [docker:bb40d486] #7 DONE 0.0s","timestamp":"2026-08-13T17:55:40.515659+08:00"},{"seq":34,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:41.025 [INFO] [docker:bb40d486] #8 DONE 0.7s","timestamp":"2026-08-13T17:55:41.025388+08:00"},{"seq":35,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:41.224 [INFO] [docker:bb40d486] #9 CACHED","timestamp":"2026-08-13T17:55:41.224054+08:00"},{"seq":36,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:41.224 [INFO] [docker:bb40d486] #10 CACHED","timestamp":"2026-08-13T17:55:41.224180+08:00"},{"seq":37,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:41.224 [INFO] [docker:bb40d486] #11 CACHED","timestamp":"2026-08-13T17:55:41.224284+08:00"},{"seq":38,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:41.224 [INFO] [docker:bb40d486] #12 CACHED","timestamp":"2026-08-13T17:55:41.224377+08:00"},{"seq":39,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:42.962 [INFO] [docker:bb40d486] #13 DONE 1.9s","timestamp":"2026-08-13T17:55:42.962748+08:00"},{"seq":40,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:56.859 [INFO] [docker:bb40d486] #14 DONE 13.8s","timestamp":"2026-08-13T17:55:56.859499+08:00"},{"seq":41,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:57.297 [INFO] [docker:bb40d486] #15 CACHED","timestamp":"2026-08-13T17:55:57.297642+08:00"},{"seq":42,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:55:59.413 [INFO] [docker:bb40d486] #16 DONE 2.1s","timestamp":"2026-08-13T17:55:59.413753+08:00"},{"seq":43,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:00.839 [INFO] [docker:bb40d486] #17 DONE 1.3s","timestamp":"2026-08-13T17:56:00.839986+08:00"},{"seq":44,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.894 [INFO] [docker:bb40d486] build success: docker.fanson.cloud/fanson/fscp-system:develop-664bb46","timestamp":"2026-08-13T17:56:01.894091+08:00"},{"seq":45,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.894 [INFO] [docker:bb40d486] pushing docker.fanson.cloud/fanson/fscp-system:develop-664bb46","timestamp":"2026-08-13T17:56:01.894221+08:00"},{"seq":46,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.929 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-13T17:56:01.929782+08:00"},{"seq":47,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] 256c3b63c0d3: Preparing","timestamp":"2026-08-13T17:56:01.963414+08:00"},{"seq":48,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] 5f70bf18a086: Preparing","timestamp":"2026-08-13T17:56:01.963514+08:00"},{"seq":49,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] 71a2618c0925: Preparing","timestamp":"2026-08-13T17:56:01.963603+08:00"},{"seq":50,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] 6fc52eaf99f6: Preparing","timestamp":"2026-08-13T17:56:01.963686+08:00"},{"seq":51,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] cd4b3dc03178: Preparing","timestamp":"2026-08-13T17:56:01.963784+08:00"},{"seq":52,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] b4cfcb8385a8: Preparing","timestamp":"2026-08-13T17:56:01.963863+08:00"},{"seq":53,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.963 [INFO] [docker:bb40d486] 2b730cf18c09: Preparing","timestamp":"2026-08-13T17:56:01.963941+08:00"},{"seq":54,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] edeaba958753: Preparing","timestamp":"2026-08-13T17:56:01.964022+08:00"},{"seq":55,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 8bf42db0de72: Preparing","timestamp":"2026-08-13T17:56:01.964101+08:00"},{"seq":56,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 31892cc314cb: Preparing","timestamp":"2026-08-13T17:56:01.964178+08:00"},{"seq":57,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 11936051f93b: Preparing","timestamp":"2026-08-13T17:56:01.964254+08:00"},{"seq":58,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] b4cfcb8385a8: Waiting","timestamp":"2026-08-13T17:56:01.964330+08:00"},{"seq":59,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 8bf42db0de72: Waiting","timestamp":"2026-08-13T17:56:01.964405+08:00"},{"seq":60,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 2b730cf18c09: Waiting","timestamp":"2026-08-13T17:56:01.964479+08:00"},{"seq":61,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] edeaba958753: Waiting","timestamp":"2026-08-13T17:56:01.964554+08:00"},{"seq":62,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 11936051f93b: Waiting","timestamp":"2026-08-13T17:56:01.964629+08:00"},{"seq":63,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:01.964 [INFO] [docker:bb40d486] 31892cc314cb: Waiting","timestamp":"2026-08-13T17:56:01.964708+08:00"},{"seq":64,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.264 [INFO] [docker:bb40d486] 5f70bf18a086: Layer already exists","timestamp":"2026-08-13T17:56:02.264341+08:00"},{"seq":65,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.286 [INFO] [docker:bb40d486] cd4b3dc03178: Layer already exists","timestamp":"2026-08-13T17:56:02.286025+08:00"},{"seq":66,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.286 [INFO] [docker:bb40d486] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-13T17:56:02.286399+08:00"},{"seq":67,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.286 [INFO] [docker:bb40d486] 71a2618c0925: Layer already exists","timestamp":"2026-08-13T17:56:02.286896+08:00"},{"seq":68,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.373 [INFO] [docker:bb40d486] 8bf42db0de72: Layer already exists","timestamp":"2026-08-13T17:56:02.373458+08:00"},{"seq":69,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.452 [INFO] [docker:bb40d486] edeaba958753: Layer already exists","timestamp":"2026-08-13T17:56:02.452405+08:00"},{"seq":70,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.452 [INFO] [docker:bb40d486] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-13T17:56:02.452525+08:00"},{"seq":71,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.452 [INFO] [docker:bb40d486] 2b730cf18c09: Layer already exists","timestamp":"2026-08-13T17:56:02.452757+08:00"},{"seq":72,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.470 [INFO] [docker:bb40d486] 31892cc314cb: Layer already exists","timestamp":"2026-08-13T17:56:02.470950+08:00"},{"seq":73,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:02.541 [INFO] [docker:bb40d486] 11936051f93b: Layer already exists","timestamp":"2026-08-13T17:56:02.541198+08:00"},{"seq":74,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:15.753 [INFO] [docker:bb40d486] 256c3b63c0d3: Pushed","timestamp":"2026-08-13T17:56:15.753022+08:00"},{"seq":75,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:16.489 [INFO] [docker:bb40d486] develop-664bb46: digest: sha256:93f73e118e1b19e957c5415c81836d969978517fb670941abbe8c9388678fe4a size: 2629","timestamp":"2026-08-13T17:56:16.489892+08:00"},{"seq":76,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:16.576 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-system]","timestamp":"2026-08-13T17:56:16.576112+08:00"},{"seq":77,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:16.608 [INFO] [docker:bb40d486] tag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-13T17:56:16.608906+08:00"},{"seq":78,"level":"ERROR","component":"docker","message":"[docker] 2026-08-13 17:56:16.609 [ERROR] [docker:bb40d486] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-system]\ntag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-13T17:56:16.609645+08:00"},{"seq":79,"level":"WARNING","component":"docker","message":"[docker] 2026-08-13 17:56:16.610 [WARNING] [docker:bb40d486] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-system]\ntag does not exist: docker.fanson.cloud/fanson/fscp-system:cache","timestamp":"2026-08-13T17:56:16.610086+08:00"},{"seq":80,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:16.610 [INFO] [orchestrator:bb40d486] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-system:develop-664bb46","timestamp":"2026-08-13T17:56:16.610225+08:00"},{"seq":81,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:16.633 [INFO] [orchestrator:bb40d486] 🔨 构建服务: fanson/fscp-billing → 镜像标签 fanson/fscp-billing:develop-664bb46","timestamp":"2026-08-13T17:56:16.633706+08:00"},{"seq":82,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:16.633 [INFO] [orchestrator:bb40d486] 已自动注入 -pl fscp-modules/fscp-billing -am: mvn -pl fscp-modules/fscp-billing -am clean package -DskipTests","timestamp":"2026-08-13T17:56:16.633847+08:00"},{"seq":83,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:16.634 [INFO] [docker:bb40d486] building docker.fanson.cloud/fanson/fscp-billing:develop-664bb46 (skipping buildx — already known to fail)","timestamp":"2026-08-13T17:56:16.634146+08:00"},{"seq":84,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:17.027 [INFO] [docker:bb40d486] #1 DONE 0.2s","timestamp":"2026-08-13T17:56:17.027859+08:00"},{"seq":85,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:17.414 [INFO] [docker:bb40d486] #3 DONE 0.3s","timestamp":"2026-08-13T17:56:17.414937+08:00"},{"seq":86,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:18.929 [INFO] [docker:bb40d486] #2 DONE 1.9s","timestamp":"2026-08-13T17:56:18.929754+08:00"},{"seq":87,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.117 [INFO] [docker:bb40d486] #4 DONE 0.2s","timestamp":"2026-08-13T17:56:19.117636+08:00"},{"seq":88,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.232 [INFO] [docker:bb40d486] #5 DONE 0.0s","timestamp":"2026-08-13T17:56:19.232593+08:00"},{"seq":89,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.232 [INFO] [docker:bb40d486] #6 DONE 0.0s","timestamp":"2026-08-13T17:56:19.232738+08:00"},{"seq":90,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.438 [INFO] [docker:bb40d486] #7 DONE 0.3s","timestamp":"2026-08-13T17:56:19.438267+08:00"},{"seq":91,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.634 [INFO] [docker:bb40d486] #8 CACHED","timestamp":"2026-08-13T17:56:19.634081+08:00"},{"seq":92,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.634 [INFO] [docker:bb40d486] #9 CACHED","timestamp":"2026-08-13T17:56:19.634194+08:00"},{"seq":93,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.634 [INFO] [docker:bb40d486] #10 CACHED","timestamp":"2026-08-13T17:56:19.634286+08:00"},{"seq":94,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:19.634 [INFO] [docker:bb40d486] #11 CACHED","timestamp":"2026-08-13T17:56:19.634376+08:00"},{"seq":95,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:21.108 [INFO] [docker:bb40d486] #12 DONE 1.6s","timestamp":"2026-08-13T17:56:21.108047+08:00"},{"seq":96,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:36.123 [INFO] [docker:bb40d486] #13 DONE 15.0s","timestamp":"2026-08-13T17:56:36.123768+08:00"},{"seq":97,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:36.518 [INFO] [docker:bb40d486] #14 CACHED","timestamp":"2026-08-13T17:56:36.518246+08:00"},{"seq":98,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:39.540 [INFO] [docker:bb40d486] #15 DONE 3.0s","timestamp":"2026-08-13T17:56:39.540455+08:00"},{"seq":99,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:40.944 [INFO] [docker:bb40d486] #16 DONE 1.2s","timestamp":"2026-08-13T17:56:40.944673+08:00"},{"seq":100,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:41.976 [INFO] [docker:bb40d486] build success: docker.fanson.cloud/fanson/fscp-billing:develop-664bb46","timestamp":"2026-08-13T17:56:41.976318+08:00"},{"seq":101,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:41.976 [INFO] [docker:bb40d486] pushing docker.fanson.cloud/fanson/fscp-billing:develop-664bb46","timestamp":"2026-08-13T17:56:41.976437+08:00"},{"seq":102,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.011 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-13T17:56:42.011364+08:00"},{"seq":103,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] fbcfd66969d0: Preparing","timestamp":"2026-08-13T17:56:42.048098+08:00"},{"seq":104,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 5f70bf18a086: Preparing","timestamp":"2026-08-13T17:56:42.048226+08:00"},{"seq":105,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 71a2618c0925: Preparing","timestamp":"2026-08-13T17:56:42.048337+08:00"},{"seq":106,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 6fc52eaf99f6: Preparing","timestamp":"2026-08-13T17:56:42.048434+08:00"},{"seq":107,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] cd4b3dc03178: Preparing","timestamp":"2026-08-13T17:56:42.048531+08:00"},{"seq":108,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] b4cfcb8385a8: Preparing","timestamp":"2026-08-13T17:56:42.048622+08:00"},{"seq":109,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 2b730cf18c09: Preparing","timestamp":"2026-08-13T17:56:42.048717+08:00"},{"seq":110,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] edeaba958753: Preparing","timestamp":"2026-08-13T17:56:42.048818+08:00"},{"seq":111,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 8bf42db0de72: Preparing","timestamp":"2026-08-13T17:56:42.048914+08:00"},{"seq":112,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.048 [INFO] [docker:bb40d486] 31892cc314cb: Preparing","timestamp":"2026-08-13T17:56:42.049004+08:00"},{"seq":113,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] 11936051f93b: Preparing","timestamp":"2026-08-13T17:56:42.049099+08:00"},{"seq":114,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] b4cfcb8385a8: Waiting","timestamp":"2026-08-13T17:56:42.049188+08:00"},{"seq":115,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] 2b730cf18c09: Waiting","timestamp":"2026-08-13T17:56:42.049287+08:00"},{"seq":116,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] edeaba958753: Waiting","timestamp":"2026-08-13T17:56:42.049375+08:00"},{"seq":117,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] 8bf42db0de72: Waiting","timestamp":"2026-08-13T17:56:42.049468+08:00"},{"seq":118,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] 31892cc314cb: Waiting","timestamp":"2026-08-13T17:56:42.049556+08:00"},{"seq":119,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.049 [INFO] [docker:bb40d486] 11936051f93b: Waiting","timestamp":"2026-08-13T17:56:42.049649+08:00"},{"seq":120,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.346 [INFO] [docker:bb40d486] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-13T17:56:42.346525+08:00"},{"seq":121,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.424 [INFO] [docker:bb40d486] cd4b3dc03178: Layer already exists","timestamp":"2026-08-13T17:56:42.424399+08:00"},{"seq":122,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.424 [INFO] [docker:bb40d486] 71a2618c0925: Layer already exists","timestamp":"2026-08-13T17:56:42.424791+08:00"},{"seq":123,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.424 [INFO] [docker:bb40d486] 5f70bf18a086: Layer already exists","timestamp":"2026-08-13T17:56:42.424925+08:00"},{"seq":124,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.458 [INFO] [docker:bb40d486] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-13T17:56:42.458197+08:00"},{"seq":125,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.575 [INFO] [docker:bb40d486] 2b730cf18c09: Layer already exists","timestamp":"2026-08-13T17:56:42.575539+08:00"},{"seq":126,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.590 [INFO] [docker:bb40d486] edeaba958753: Layer already exists","timestamp":"2026-08-13T17:56:42.590612+08:00"},{"seq":127,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.590 [INFO] [docker:bb40d486] 31892cc314cb: Layer already exists","timestamp":"2026-08-13T17:56:42.590772+08:00"},{"seq":128,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.591 [INFO] [docker:bb40d486] 8bf42db0de72: Layer already exists","timestamp":"2026-08-13T17:56:42.591032+08:00"},{"seq":129,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:42.691 [INFO] [docker:bb40d486] 11936051f93b: Layer already exists","timestamp":"2026-08-13T17:56:42.691012+08:00"},{"seq":130,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:55.946 [INFO] [docker:bb40d486] fbcfd66969d0: Pushed","timestamp":"2026-08-13T17:56:55.946737+08:00"},{"seq":131,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:56.705 [INFO] [docker:bb40d486] develop-664bb46: digest: sha256:6edc5ca943e835838fa53233ac9b14646883ec12d24e2b61872b65684cf88ed6 size: 2629","timestamp":"2026-08-13T17:56:56.705710+08:00"},{"seq":132,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:56.798 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]","timestamp":"2026-08-13T17:56:56.798568+08:00"},{"seq":133,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:56.833 [INFO] [docker:bb40d486] tag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-13T17:56:56.833031+08:00"},{"seq":134,"level":"ERROR","component":"docker","message":"[docker] 2026-08-13 17:56:56.833 [ERROR] [docker:bb40d486] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]\ntag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-13T17:56:56.833993+08:00"},{"seq":135,"level":"WARNING","component":"docker","message":"[docker] 2026-08-13 17:56:56.834 [WARNING] [docker:bb40d486] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-billing]\ntag does not exist: docker.fanson.cloud/fanson/fscp-billing:cache","timestamp":"2026-08-13T17:56:56.834329+08:00"},{"seq":136,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:56.834 [INFO] [orchestrator:bb40d486] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-billing:develop-664bb46","timestamp":"2026-08-13T17:56:56.834442+08:00"},{"seq":137,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:56.837 [INFO] [orchestrator:bb40d486] 🔨 构建服务: fanson/fscp-tenant → 镜像标签 fanson/fscp-tenant:develop-664bb46","timestamp":"2026-08-13T17:56:56.837904+08:00"},{"seq":138,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:56:56.838 [INFO] [orchestrator:bb40d486] 已自动注入 -pl fscp-modules/fscp-tenant -am: mvn -pl fscp-modules/fscp-tenant -am clean package -DskipTests","timestamp":"2026-08-13T17:56:56.838031+08:00"},{"seq":139,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:56.838 [INFO] [docker:bb40d486] building docker.fanson.cloud/fanson/fscp-tenant:develop-664bb46 (skipping buildx — already known to fail)","timestamp":"2026-08-13T17:56:56.838298+08:00"},{"seq":140,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:57.243 [INFO] [docker:bb40d486] #1 DONE 0.2s","timestamp":"2026-08-13T17:56:57.243112+08:00"},{"seq":141,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:57.608 [INFO] [docker:bb40d486] #3 DONE 0.3s","timestamp":"2026-08-13T17:56:57.608022+08:00"},{"seq":142,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:58.459 [INFO] [docker:bb40d486] #2 DONE 1.2s","timestamp":"2026-08-13T17:56:58.459439+08:00"},{"seq":143,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:58.625 [INFO] [docker:bb40d486] #4 DONE 0.2s","timestamp":"2026-08-13T17:56:58.625194+08:00"},{"seq":144,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:58.738 [INFO] [docker:bb40d486] #5 DONE 0.0s","timestamp":"2026-08-13T17:56:58.738768+08:00"},{"seq":145,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:58.738 [INFO] [docker:bb40d486] #6 DONE 0.0s","timestamp":"2026-08-13T17:56:58.738902+08:00"},{"seq":146,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:58.901 [INFO] [docker:bb40d486] #7 DONE 0.2s","timestamp":"2026-08-13T17:56:58.901575+08:00"},{"seq":147,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:59.097 [INFO] [docker:bb40d486] #8 CACHED","timestamp":"2026-08-13T17:56:59.097376+08:00"},{"seq":148,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:59.097 [INFO] [docker:bb40d486] #9 CACHED","timestamp":"2026-08-13T17:56:59.097495+08:00"},{"seq":149,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:59.097 [INFO] [docker:bb40d486] #10 CACHED","timestamp":"2026-08-13T17:56:59.097589+08:00"},{"seq":150,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:56:59.097 [INFO] [docker:bb40d486] #11 CACHED","timestamp":"2026-08-13T17:56:59.097680+08:00"},{"seq":151,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:00.670 [INFO] [docker:bb40d486] #12 DONE 1.7s","timestamp":"2026-08-13T17:57:00.670821+08:00"},{"seq":152,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:15.034 [INFO] [docker:bb40d486] #13 DONE 14.3s","timestamp":"2026-08-13T17:57:15.034183+08:00"},{"seq":153,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:15.411 [INFO] [docker:bb40d486] #14 CACHED","timestamp":"2026-08-13T17:57:15.411604+08:00"},{"seq":154,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:17.278 [INFO] [docker:bb40d486] #15 DONE 1.9s","timestamp":"2026-08-13T17:57:17.278783+08:00"},{"seq":155,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:18.395 [INFO] [docker:bb40d486] #16 DONE 1.0s","timestamp":"2026-08-13T17:57:18.395503+08:00"},{"seq":156,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.670 [INFO] [docker:bb40d486] build success: docker.fanson.cloud/fanson/fscp-tenant:develop-664bb46","timestamp":"2026-08-13T17:57:19.670510+08:00"},{"seq":157,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.670 [INFO] [docker:bb40d486] pushing docker.fanson.cloud/fanson/fscp-tenant:develop-664bb46","timestamp":"2026-08-13T17:57:19.670611+08:00"},{"seq":158,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.704 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-13T17:57:19.704752+08:00"},{"seq":159,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.737 [INFO] [docker:bb40d486] da5f82bbb03c: Preparing","timestamp":"2026-08-13T17:57:19.737990+08:00"},{"seq":160,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 5f70bf18a086: Preparing","timestamp":"2026-08-13T17:57:19.738094+08:00"},{"seq":161,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 71a2618c0925: Preparing","timestamp":"2026-08-13T17:57:19.738183+08:00"},{"seq":162,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 6fc52eaf99f6: Preparing","timestamp":"2026-08-13T17:57:19.738265+08:00"},{"seq":163,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] cd4b3dc03178: Preparing","timestamp":"2026-08-13T17:57:19.738345+08:00"},{"seq":164,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] b4cfcb8385a8: Preparing","timestamp":"2026-08-13T17:57:19.738423+08:00"},{"seq":165,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 2b730cf18c09: Preparing","timestamp":"2026-08-13T17:57:19.738502+08:00"},{"seq":166,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] edeaba958753: Preparing","timestamp":"2026-08-13T17:57:19.738579+08:00"},{"seq":167,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 8bf42db0de72: Preparing","timestamp":"2026-08-13T17:57:19.738655+08:00"},{"seq":168,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 31892cc314cb: Preparing","timestamp":"2026-08-13T17:57:19.738740+08:00"},{"seq":169,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 11936051f93b: Preparing","timestamp":"2026-08-13T17:57:19.738819+08:00"},{"seq":170,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] b4cfcb8385a8: Waiting","timestamp":"2026-08-13T17:57:19.738895+08:00"},{"seq":171,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.738 [INFO] [docker:bb40d486] 2b730cf18c09: Waiting","timestamp":"2026-08-13T17:57:19.738971+08:00"},{"seq":172,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.739 [INFO] [docker:bb40d486] edeaba958753: Waiting","timestamp":"2026-08-13T17:57:19.739047+08:00"},{"seq":173,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.739 [INFO] [docker:bb40d486] 8bf42db0de72: Waiting","timestamp":"2026-08-13T17:57:19.739122+08:00"},{"seq":174,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.739 [INFO] [docker:bb40d486] 11936051f93b: Waiting","timestamp":"2026-08-13T17:57:19.739197+08:00"},{"seq":175,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:19.739 [INFO] [docker:bb40d486] 31892cc314cb: Waiting","timestamp":"2026-08-13T17:57:19.739272+08:00"},{"seq":176,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.040 [INFO] [docker:bb40d486] 71a2618c0925: Layer already exists","timestamp":"2026-08-13T17:57:20.040765+08:00"},{"seq":177,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.083 [INFO] [docker:bb40d486] 5f70bf18a086: Layer already exists","timestamp":"2026-08-13T17:57:20.083670+08:00"},{"seq":178,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.084 [INFO] [docker:bb40d486] 6fc52eaf99f6: Layer already exists","timestamp":"2026-08-13T17:57:20.084176+08:00"},{"seq":179,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.084 [INFO] [docker:bb40d486] cd4b3dc03178: Layer already exists","timestamp":"2026-08-13T17:57:20.084688+08:00"},{"seq":180,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.118 [INFO] [docker:bb40d486] b4cfcb8385a8: Layer already exists","timestamp":"2026-08-13T17:57:20.118495+08:00"},{"seq":181,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.199 [INFO] [docker:bb40d486] 8bf42db0de72: Layer already exists","timestamp":"2026-08-13T17:57:20.199075+08:00"},{"seq":182,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.234 [INFO] [docker:bb40d486] edeaba958753: Layer already exists","timestamp":"2026-08-13T17:57:20.234360+08:00"},{"seq":183,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.234 [INFO] [docker:bb40d486] 31892cc314cb: Layer already exists","timestamp":"2026-08-13T17:57:20.234485+08:00"},{"seq":184,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.234 [INFO] [docker:bb40d486] 2b730cf18c09: Layer already exists","timestamp":"2026-08-13T17:57:20.234572+08:00"},{"seq":185,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:20.284 [INFO] [docker:bb40d486] 11936051f93b: Layer already exists","timestamp":"2026-08-13T17:57:20.284646+08:00"},{"seq":186,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:26.973 [INFO] [docker:bb40d486] da5f82bbb03c: Pushed","timestamp":"2026-08-13T17:57:26.973408+08:00"},{"seq":187,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:27.710 [INFO] [docker:bb40d486] develop-664bb46: digest: sha256:dc4f49984c4a77d1a70e152e69fdba849e54e97021f67ad4a7d1ebb89a77e900 size: 2628","timestamp":"2026-08-13T17:57:27.710091+08:00"},{"seq":188,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:27.788 [INFO] [docker:bb40d486] The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]","timestamp":"2026-08-13T17:57:27.788837+08:00"},{"seq":189,"level":"INFO","component":"docker","message":"[docker] 2026-08-13 17:57:27.819 [INFO] [docker:bb40d486] tag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-13T17:57:27.819693+08:00"},{"seq":190,"level":"ERROR","component":"docker","message":"[docker] 2026-08-13 17:57:27.820 [ERROR] [docker:bb40d486] docker command failed (exit=1): The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]\ntag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-13T17:57:27.820671+08:00"},{"seq":191,"level":"WARNING","component":"docker","message":"[docker] 2026-08-13 17:57:27.820 [WARNING] [docker:bb40d486] cache push skipped: The push refers to repository [docker.fanson.cloud/fanson/fscp-tenant]\ntag does not exist: docker.fanson.cloud/fanson/fscp-tenant:cache","timestamp":"2026-08-13T17:57:27.820909+08:00"},{"seq":192,"level":"INFO","component":"orchestrator","message":"[orchestrator] 2026-08-13 17:57:27.821 [INFO] [orchestrator:bb40d486] ✅ 服务构建完成: docker.fanson.cloud/fanson/fscp-tenant:develop-664bb46","timestamp":"2026-08-13T17:57:27.821013+08:00"},{"seq":193,"level":"INFO","component":"agent","message":"[agent] 2026-08-13 17:57:27.831 [INFO] [agent:bb40d486] ✅ 构建完成: 成功构建 5 个镜像: docker.fanson.cloud/fanson/fscp-gateway:develop-758e339, docker.fanson.cloud/fanson/fscp-auth:develop-f3e26ae, docker.fanson.cloud/fanson/fscp-system:develop-664bb46, docker.fanson.cloud/fanson/fscp-billing:develop-664bb46, docker.fanson.cloud/fanson/fscp-tenant:develop-664bb46","timestamp":"2026-08-13T17:57:27.831719+08:00"},{"seq":194,"level":"INFO","component":"agent","message":"[agent] 2026-08-13 17:57:27.858 [INFO] [agent:bb40d486] workspace cleaned","timestamp":"2026-08-13T17:57:27.858337+08:00"}]}