Release Process
SyncTV uses one application version across the Rust workspace, container image, and Helm chart.
Prepare a Release
Section titled “Prepare a Release”Open a release preparation PR from GitHub Actions:
- Run the
Prepare Releaseworkflow. - Enter the next version, for example
0.2.0. - Review and merge the generated PR.
The workflow runs:
./scripts/set-release-version.sh 0.2.0This synchronizes:
Cargo.toml[workspace.package].versionCargo.lockpath package versionshelm/synctv/Chart.yamlversionhelm/synctv/Chart.yamlappVersion
Publish a Release
Section titled “Publish a Release”After the release preparation PR is merged, create and push a matching tag:
git tag v0.2.0git push origin v0.2.0The 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-chartsbranch containing the packaged chart and updatedindex.yaml.
The traditional Helm repository becomes available after the helm-charts PR is merged and GitHub Pages serves that branch.
Helm Publishing Targets
Section titled “Helm Publishing Targets”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.
| Variable | Default | Purpose |
|---|---|---|
HELM_OCI_REPOSITORY | Derived automatically | Explicit Helm OCI parent repository override. When set, only this repository is used. Helm appends the chart name when installing. |
DOCKERHUB_USERNAME | Empty | Same as the Docker workflow; when set, also publish to docker.io/<username>/<repo>/charts. |
DOCKERHUB_REPOSITORY | Empty | Same as the Docker workflow; overrides the DockerHub repository name. |
HELM_REPOSITORY_BRANCH | helm-charts | Traditional Helm repository branch. The workflow initializes it automatically if it does not exist. |
HELM_REPOSITORY_URL | https://<owner>.github.io/<repo> | Public URL passed to helm repo index --url. |