The entire release process is managed by a single, manually-triggered GitHub Action: **`Create or Promote Release`**.
-**Trigger:** To start a new release or promote an existing one, a developer manually runs the workflow from the GitHub Actions tab.
-**Inputs:** The workflow requires two inputs:
1.`version`: The base version number you are releasing (e.g., `2.4.0`).
2.`channel`: The release channel you are targeting (`internal`, `closed`, `open`, or `production`).
-**Automation:** The workflow handles everything automatically:
- Calculates the correct Git tag based on the channel (e.g., `v2.4.0-internal.1` or `v2.4.0`).
- Pushes the new tag to the repository.
- Calls a reusable workflow that builds the app, deploys it to the correct Google Play track, and attaches the artifacts (`.aab`/`.apk`) to a GitHub Release.
-**Changelog:** Release notes are auto-generated from PR labels. Ensure PRs are labeled correctly to maintain an accurate changelog.
All release artifacts are accompanied by explicit GitHub build attestations (provenance). This provides cryptographic proof that the artifacts were built by our trusted GitHub Actions workflow, ensuring supply chain integrity.
- You can view and verify provenance in the GitHub UI under each release asset.
- For more details, see [GitHub's documentation on build provenance](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#provenance-attestations).