meshtastic-android/.github
James Rich b884c83980 refactor(release)!: simplify and streamline release workflow
This commit refactors the entire release process to be simpler, more robust, and less error-prone. The previous complex system of manual version calculation, artifact passing, and dry-run flags has been replaced with a more streamlined, two-stage process driven by distinct GitHub Actions workflows.

The new process separates tag creation from the release engine. A new `create-internal-release.yml` workflow is introduced to handle the creation and iteration of internal build tags (e.g., `v1.2.3-internal.1`, `v1.2.3-internal.2`). The main `release.yml` workflow is now triggered solely by the presence of a new version tag.

Key changes include:
-   The `release.yml` workflow no longer takes `dry_run` or `pr_number` inputs, as tag creation is now handled separately.
-   Version code is now consistently calculated once per build based on Git history and an offset, removing the complex logic for handling hotfixes and reusing version codes via artifacts.
-   Builds only occur if a release for the given `BASE_TAG` doesn't already exist on the same commit. This makes the process idempotent for promotions.
-   A new `prepare-release-environment` job intelligently handles superseded releases by deleting old releases and tags if a new tag for the same base version points to a different commit.
-   The build process is split into separate jobs for Google Play (`release-google`) and F-Droid (`release-fdroid`), allowing them to run in parallel.
-   Build attestations are now generated for all artifacts to improve supply chain security.
-   The `create-internal-release.yml` workflow is simplified to only require a `base_version`, automatically calculating the next internal iteration number. It no longer handles complex version bumping logic (`major`, `minor`, `patch`, `hotfix`).
-   Fastlane scripts have been cleaned up to remove now-unused lanes (`get_internal_track_version_code`).
-   The `RELEASE_PROCESS.md` documentation has been completely rewritten to reflect the new, simpler workflow.

BREAKING CHANGE: The release workflow has been fundamentally changed.
-   The `release.yml` workflow is no longer triggered with `workflow_dispatch` inputs like `dry_run`. Releases are now initiated by pushing a correctly formatted tag.
-   The `create-internal-release.yml` workflow has been changed. It no longer supports `release_type` (`auto`, `patch`, etc.) and instead requires a specific `base_version` to create an internal build tag for.
-   Hotfix handling via special tags like `-hotfix` is removed. Superseding a release is now handled by creating a new internal iteration for the same base version from a newer commit.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-10-03 10:44:02 -05:00
..
ISSUE_TEMPLATE add internal bug report with ch_testing tags (#3099) 2025-09-15 10:50:00 +00:00
actions/calculate-version-code
workflows refactor(release)!: simplify and streamline release workflow 2025-10-03 10:44:02 -05:00
FUNDING.yml
PULL_REQUEST_TEMPLATE.md
copilot-instructions.md Add comprehensive .github/copilot-instructions.md for improved coding agent efficiency (#2745) 2025-08-16 00:34:05 +00:00
labeler.yml #2650 - make the catch all on the labeler less generic (#2651) 2025-08-07 05:22:03 +00:00
meshtastic_logo.png Fix CI badge in README (#2761) 2025-08-18 01:37:12 +00:00
release.yml Feat/2586 pr labeler (#2587) 2025-07-31 14:19:23 +00:00
renovate.json Remove `design/` git submodule (#3177) 2025-09-23 21:29:33 +00:00