跳转到内容

发布流程

SyncTV 在 Rust workspace、容器镜像和 Helm chart 之间使用同一个应用版本。

先通过 GitHub Actions 打开版本准备 PR:

  1. 运行 Prepare Release workflow。
  2. 输入下一个版本,例如 0.2.0
  3. review 并合并自动生成的 PR。

workflow 会运行:

Terminal window
./scripts/set-release-version.sh 0.2.0

它会同步:

  • Cargo.toml[workspace.package].version
  • Cargo.lock 中本 workspace path package 的版本
  • helm/synctv/Chart.yamlversion
  • helm/synctv/Chart.yamlappVersion

版本准备 PR 合并后,创建并推送匹配的 tag:

Terminal window
git tag v0.2.0
git push origin v0.2.0

Release 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 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_BRANCHhelm-charts传统 Helm repository 分支。不存在时 workflow 会自动初始化。
HELM_REPOSITORY_URLhttps://<owner>.github.io/<repo>helm repo index --url 使用的公开地址。