How a version goes from main to GitHub Releases and Google Play
(ADR 0016 and 0019). Only maintainers can do this.
Our key signs the GitHub APKs and is the Google Play upload key; Google keeps the key that signs the Play app (ADR 0019). It was created with:
keytool -genkeypair -storetype PKCS12 -keystore pastello-release.jks \
-alias pastello -keyalg RSA -keysize 4096 -validity 10950 \
-dname "CN=Pastello, O=Pastello project"
*.jks, *.keystore and key.properties are ignored.key.properties in
app/android/ (storeFile, storePassword, keyAlias, keyPassword).release.
Under “Deployment branches and tags” choose “Selected branches and tags”
and add the tag rule v*.*.*.Secrets of the release environment:
| Secret | Value |
|---|---|
PASTELLO_KEYSTORE_BASE64 |
base64 -w0 pastello-release.jks |
PASTELLO_KEYSTORE_PASSWORD |
the keystore password |
PASTELLO_KEY_ALIAS |
pastello |
PASTELLO_KEY_PASSWORD |
the key password (same as the keystore’s) |
main, /docs. The
privacy policy is then at
https://pegperego.github.io/pastello-app/privacy-policy.html.These are the answers given when Pastello was created; re-check them when Play’s forms change.
io.github.pegperego.pastello (it can
never change). Accept the Developer Program Policies and the US export
laws declarations.pastello.app@proton.me, category “All
other app types”, every answer “No” (users do not interact through the
app: sharing goes through Android’s share sheet behind the parental
gate). Expected rating: PEGI 3, ESRB Everyone.fastlane/metadata/android/
(it-IT as the default listing, en-US as a translation): title, short
and full description, icon, feature graphic, phone and 10-inch tablet
screenshots.pastello.app@proton.me; website
https://github.com/pegperego/pastello-app.fastlane uploads the builds and the store listing (ADR 0023).
pastello-publisher) with no
roles, and create a JSON key for it. Download it once and keep it with
the keystore backups, never in the repository.google-play.
Under “Deployment branches and tags” choose “Selected branches and tags”
and add the branch main and the tag rule v*.*.*. Add the secret
PASTELLO_PLAY_SERVICE_ACCOUNT with the whole content of the JSON key.Check: run the Google Play workflow with the task listing, or
locally:
bundle install
PASTELLO_PLAY_KEY=/path/to/key.json bundle exec fastlane android check
version: in app/pubspec.yaml: X.Y.Z+N, where N grows by one
every release (it is the Android version code).[Unreleased] notes of CHANGELOG.md under a new
## [X.Y.Z] - YYYY-MM-DD section and update the links at the bottom.fastlane/metadata/android/<locale>/changelogs/N.txt (at most 500
characters) in both languages.Merge to main through a pull request, then tag the merge commit:
git tag -a vX.Y.Z -m "Pastello X.Y.Z"
git push origin vX.Y.Z
fastlane/metadata/android/.production, version
X.Y.Z: the version is promoted from internal testing to production,
where Google reviews it before it reaches the families.The store listing is taken from the repository at every upload: change
texts and screenshots in fastlane/metadata/android/, not in Play Console.
To publish a listing change without a new version, run the Google Play
workflow with the task listing.