Skip to content

Release Process

SyncTV uses one application version across the Rust workspace, container image, and Helm chart.

Open a release preparation PR from GitHub Actions:

  1. Run the Prepare Release workflow.
  2. Enter the next version, for example 0.2.0.
  3. Review and merge the generated PR.

The workflow runs:

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

This synchronizes:

  • Cargo.toml [workspace.package].version
  • Cargo.lock path package versions
  • helm/synctv/Chart.yaml version
  • helm/synctv/Chart.yaml appVersion

After the release preparation PR is merged, create and push a matching tag:

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

The Release workflow calls the Helm Release workflow, which can only be triggered through workflow_call. The Helm workflow verifies that the tag, Cargo workspace version, Helm chart version, and Helm appVersion all match.

The workflow publishes:

  • A GitHub release.
  • The Helm chart as an OCI artifact. The default parent repository is ghcr.io/zijiren233/synctv/charts, derived from the current repository and docs build environment.
  • A PR into the helm-charts branch containing the packaged chart and updated index.yaml.

The traditional Helm repository becomes available after the helm-charts PR is merged and GitHub Pages serves that branch.

Helm OCI target selection follows the Docker workflow style: default to a GHCR path derived from the current GitHub repository; if DockerHub variables are configured, also publish to the matching DockerHub charts path; repository variables or secrets can explicitly override the target.

VariableDefaultPurpose
HELM_OCI_REPOSITORYDerived automaticallyExplicit Helm OCI parent repository override. When set, only this repository is used. Helm appends the chart name when installing.
DOCKERHUB_USERNAMEEmptySame as the Docker workflow; when set, also publish to docker.io/<username>/<repo>/charts.
DOCKERHUB_REPOSITORYEmptySame as the Docker workflow; overrides the DockerHub repository name.
HELM_REPOSITORY_BRANCHhelm-chartsTraditional Helm repository branch. The workflow initializes it automatically if it does not exist.
HELM_REPOSITORY_URLhttps://<owner>.github.io/<repo>Public URL passed to helm repo index --url.