容器发布
.github/workflows/container-publish.yml 构建并发布测试所需的 base 与 AxVisor LVZ 镜像。工作流负责选择目标、配置 Buildx 和登录 GHCR,.github/actions/publish-container/action.yml 负责单个镜像的名称规范化、标签生成、构建及推送。
1. 输入与目标
容器发布不由主 CI 的检查矩阵调用。它有自己的触发路径和发布条件,两个镜像的选择也分别计算。
1.1 自动触发
push 必须位于 main 或 dev,且变更匹配下表中的路径。Detect changed image inputs 使用本地 Git 差异过滤,为后续 Resolve publish targets 提供 base 和 axvisor 输出。
| 变更路径 | base 镜像 | LVZ 镜像 |
|---|---|---|
container/Dockerfile | 选择 | 不因这一项自动选择 |
container/Dockerfile.axvisor-lvz | 不因这一项自动选择 | 选择 |
rust-toolchain.toml | 选择 | 选择 |
修改发布工作流或 composite action 本身不在该 push 路径列表中,不能假定这些改动会自动重建镜像。base Dockerfile 变化也不会自动重建派生的 LVZ 镜像;两者的选择逻辑以当前过滤器为准。
1.2 手动选择
workflow_dispatch 的 target 输入允许 base、axvisor-lvz、both,默认 both。目标解析仍要求当前 ref 名称为 main 或 dev;手动选择其他分支会执行准备 job,但不进入 Buildx、登录和镜像发布步骤。
Resolve publish targets 输出 base、axvisor、any、base_image、axvisor_image。后续步骤分别以 any 或具体目标标志作为条件,避免没有目标时仍初始化构建与推送环境。