Homey release and listing delivery
Homey's application-specific release inputs, validation gates, and operator handoff.
Ownership and scope
Homey owns its version, release notes, package identity, artwork and pipeline entry point.
The four include-only adapters under .gitlab/ci consume the shared CI revision 2e5b8310147d0ac7baf4deb04283d0e056ac86828b7deb51da762ea18ac22113. Both ref and template_revision use that full SHA because tag protection is unavailable in the current account. A later tag move cannot change these includes.
Generic jobs, guards, signing setup and Play execution remain in sysout-dev/sysout-platform/sysout-gitlab-ci.
Consult that repository’s engineering/android-release-pipeline.adoc for the shared contract.
Verification adopts the shared verify-combined.yml template: the same lint,
unit-test and debug-assembly checks share one job to reduce repeated CI setup.
The 1.5 maintenance scope is About/build identity, recipe-catalogue extraction and delivery adoption. Preserve the pre-existing local gradle.properties tooling-parallel edit outside release commits.
Application inputs
-
Package:
dev.sysout.homey; debug package:dev.sysout.homey.debug, labelled Homey Debug. -
Module and output:
:app,app/build,app-release.aab. -
SDK and build tools:
android-36,36.1.0. -
Compile toolchain: JDK 17, supplied as
java_toolchain_version: '17'to verify and release. The pinned image runs Gradle on JDK 21; the shared setup retains JDK 17 availability. Library source now builds in the standalone platform repository. -
Secure File:
homey-upload-key.p12. -
Protected, masked signing variables:
ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_ALIAS,ANDROID_KEY_PASSWORD. -
Play credentials: protected
SUPPLY_JSON_KEY_DATAthrough the Google Play integration. -
Testing destinations: Internal plus closed Alpha, inherited from the shared publisher.
-
Locale and notes:
fastlane/metadata/android/en-US/changelogs/<versionCode>.txt(1 to 500 characters). -
Listing text:
fastlane/metadata/android/en-US; artwork order:.gitlab/play-listing-assets.json.
Prerequisites and release-preparation gate
-
Check live main/feature refs, tags and pipeline outcomes. Confirm the actual highest uploaded Play code across tracks before selecting the next unused, increasing code. Local tags are not the Play ledger.
-
Keep Homey’s default branch protected. Protect app
v*tags and sharedv0.1.0when the account supports it. For this release the user explicitly accepted proceeding without tag protection; the shared includes use a full commit SHA. Recheck that an app release tag is absent before the manual release job and never move an existing release tag. -
Enable Allow Git push requests to the repository for
CI_JOB_TOKENin Homey’s job-token permissions. -
Confirm the Secure File, signing variables, Play integration and app access. Prepare both testing tracks and their tester lists. The service account needs Release apps to testing tracks and Manage store presence; production-release access is unnecessary.
-
Reconcile canonical release notes and the code-specific Play notes with the committed app version.
-
Run unit tests, lint, debug assembly, the encoding check and the matching release-tag check. Build fresh minified signed APK and AAB artifacts and verify signatures, package, version and checksums.
-
On
Homey_API_36, validate recipe catalogue/onboarding and About identity. Validate a fresh signed installation and an in-place signed upgrade from 1.4/code 5, retaining existing household data. Record the exact baseline source, signing identity, artifacts, AVD, package, versions and results before committing release preparation. -
Commit and push the reviewed release-preparation changes, excluding local signing files and unrelated edits. Check the new ordinary branch pipeline; an old quota failure does not establish current CI health.
Local upload-key signatures establish the sideload upgrade check. If Play App Signing uses a different distribution certificate, this does not establish compatibility with an existing Play-signed installation.
Operator handoff
The user handles merging and publication. Release preparation does not merge main, create an app release tag, upload a build, or synchronize Play listings.
Merge shared branch codex/android-jdk-toolchain first, retaining the adopted commit in shared history. Then merge Homey. No existing shared tag was moved.
After merging, run a protected-default-branch web pipeline with PIPELINE_ACTION=release and RELEASE_TAG=v1.5. Review verification, then start the manual create_release_tag job. The shared jobs create the tag and deliver the same signed bundle and notes to Internal and Alpha.
For a separate listing update, start a protected-default-branch web pipeline with PIPELINE_ACTION=listing and empty RELEASE_TAG, then start sync_play_listing. Require its successful fresh-edit read-back of persisted text and ordered image hashes. This mode performs no build upload or track promotion.
Retain validation evidence with the release handoff. Report unavailable service checks explicitly; a successful local build does not prove CI signing, Play permissions, or publication.
See Homey 1.5 pre-commit validation for the tested artifacts, source baseline and signed fresh-install/upgrade results.
Shared library source ownership
Homey consumes four versioned libraries from sysout-platform project 87989353.
See Shared library consumption for
coordinates, package access and the producer-before-consumer merge sequence.
This migration leaves the app version unchanged.