发布流程
SyncTV 在 Rust workspace、容器镜像和 Helm chart 之间使用同一个应用版本。
先通过 GitHub Actions 打开版本准备 PR:
- 运行
Prepare Releaseworkflow。 - 输入下一个版本,例如
0.2.0。 - review 并合并自动生成的 PR。
workflow 会运行:
./scripts/set-release-version.sh 0.2.0它会同步:
Cargo.toml的[workspace.package].versionCargo.lock中本 workspace path package 的版本helm/synctv/Chart.yaml的versionhelm/synctv/Chart.yaml的appVersion
版本准备 PR 合并后,创建并推送匹配的 tag:
git tag v0.2.0git push origin v0.2.0Release workflow 会调用只能通过 workflow_call 触发的 Helm Release workflow。Helm workflow 会校验 tag、Cargo workspace version、Helm chart version 和 Helm appVersion 全部一致。
workflow 会发布:
- GitHub release。
- OCI Helm chart。默认位置为
ghcr.io/zijiren233/synctv/charts,由当前仓库和文档构建环境推导。 - 一个指向
helm-charts分支的 PR,包含打包后的 chart 和更新后的index.yaml。
传统 Helm repository 要在 helm-charts PR 合并,并且 GitHub Pages 使用该分支提供内容后才会更新。
Helm 发布目标
Section titled “Helm 发布目标”Helm OCI 发布目标参考 Docker workflow 的变量风格:默认使用当前 GitHub 仓库名生成 GHCR 路径;如果配置了 DockerHub 变量,也会发布到对应 DockerHub charts 路径;也可以用 repository variables 或 secrets 显式覆盖。
| 变量 | 默认值 | 作用 |
|---|---|---|
HELM_OCI_REPOSITORY | 自动推导 | 显式 Helm OCI 父级 repository 覆盖值。设置后只发布到这里;安装时 Helm 会继续追加 chart 名。 |
DOCKERHUB_USERNAME | 空 | 与 Docker workflow 相同;设置后额外发布到 docker.io/<username>/<repo>/charts。 |
DOCKERHUB_REPOSITORY | 空 | 与 Docker workflow 相同;可覆盖 DockerHub repository 名。 |
HELM_REPOSITORY_BRANCH | helm-charts | 传统 Helm repository 分支。不存在时 workflow 会自动初始化。 |
HELM_REPOSITORY_URL | https://<owner>.github.io/<repo> | helm repo index --url 使用的公开地址。 |