acr-build-push.yml — ACR 镜像构建推送¶
作用¶
在 push main / master 或手动触发时,构建并推送以下镜像到 阿里云个人 ACR:
backendstoragemyappagent-frontendinfinitecanvas-frontend
不包含 postgres、redis 基础镜像(需本地 make ack-push-base)。
触发条件¶
on:
push:
branches: [main, master]
paths:
- 'src/**'
- 'Dockerfile*'
- 'pyproject.toml'
- 'poetry.lock'
- 'deploy/ACK/**'
workflow_dispatch:
| 事件 | 何时跑 |
|---|---|
push 到 main,且改动命中 paths |
自动 |
| Actions → ACR Build Push → Run workflow | 手动 |
所需配置¶
| 名称 | 类型 | 说明 |
|---|---|---|
ACR_USERNAME |
Secret | 与根目录 .env 中一致 |
ACR_PASSWORD |
Secret | 与根目录 .env 中一致 |
ACR_REGISTRY |
Variable | 个人版公网域名 crpi-*.personal.cr.aliyuncs.com |
ACR_NAMESPACE |
Variable | 如 tuxian;未设时默认 tuxian |
镜像 tag:
| Tag | 用途 |
|---|---|
latest |
兼容别名(勿单独依赖其回滚) |
${{ github.sha }} |
不可变全量 SHA,可作 ack-rollback 的 TAG= |
本地 make ack-push 使用另一套不可变格式:yyyyMMdd-HHmm-<短SHA>,同样可回滚。
与 ACK 部署的关系¶
push main → acr-build-push.yml → ACR(公网:latest + sha)
│
本地 make ack-push / 手写 image-tags.env
本地 make ack-deploy ────────────────► ACK pull(VPC + 不可变 newTag)
- CI 只负责 build + push,不会
kubectl apply - 部署到 ACK 仍需本地:
make ack-deploy(需 kubeconfig) - 用 CI 产物部署时:把
image-tags.env中对应服务设为${{ github.sha }}后ack-deploy,或make ack-rollback SERVICE=infinitecanvas-frontend TAG=<github.sha> - ACK 节点 pull 使用 VPC 域名(
ACR_VPC_REGISTRY),由make ack-secrets写入 kustomization
回滚说明见 ACK README · 镜像版本与回滚。
相关文档¶
- ACK Runbook
- 仓库
deploy/ACK/目录