ci(docker): 合并为单一 GHCR+DockerHub 双推送 workflow,加 GHA 缓存
原 .github/workflows/docker.yml:
- 触发: v* tag + 手动
- 仅推 GHCR
- 无 build 缓存
- buildx action v5
新版本:
- 触发: v*.*.* tag (限定 semver, 避免 vtest 误触发) + 手动按钮
- 双 registry 推送: GHCR (默认) + DockerHub (blueink05/ttshub,需 secrets)
- GHA buildx cache (cache-from + cache-to, mode=max): 首次 ~3-5 min, 后续 30-60s
- buildx action v6
- multi-arch (amd64+arm64, 不变)
- tag 策略: semver + major.minor + tag->latest + short sha
- 安全网: secrets.DOCKERHUB_USERNAME 空时自动跳过 DockerHub login + image name 渲染,
避免生成 'docker.io//ttshub' 这种非法 image 名
- 不验 PR 编译(合到 main 不重跑, 只在打 tag 时构建)
- workflow_dispatch 推镜像: push 表达式保留 '!= pull_request' 兼容未来扩展
需要 GitHub repo 配置的 secrets:
- DOCKERHUB_USERNAME = blueink05
- DOCKERHUB_TOKEN = (hub.docker.com/settings/security 拿 access token)
没加之前,DockerHub login 步骤被 actions 自动跳过,只推 GHCR 一份。
Dockerfile / docker-compose.yml / .dockerignore 不动(Dockerfile 1.26-alpine
base image 已确认存在,tags list 拉到 tip-20260920)。