Compare commits

..

4 Commits

Author SHA1 Message Date
Dennis Guse 5857c0032e Release: v4.17.5 2024-12-27 17:45:14 +01:00
Dennis Guse d086aa3c06 Reproducible build: we should use the alternative (PlayStore) icon.
Part of #418.
2024-12-27 17:20:35 +01:00
Dennis Guse fba09bcc3a Reproducible build: we also need a build script.
Part of #418.
2024-12-27 17:20:15 +01:00
Dennis Guse 3ce0e2cede Reproducible build: update release documentation.
Part of #418.
2024-12-27 16:31:58 +01:00
8 changed files with 70 additions and 31 deletions
+19 -27
View File
@@ -2,39 +2,31 @@
## Craft new releases
1. Get next _version code_ (main): `git rev-list HEAD --count main`
2. Decide on _version name_ (semantic versioning)
3. Manually update _version code_ and _version name_ in `build.gradle`
4. Create changelog (`_version code_.txt`)
5. Create commit with all changes
6. Tag newly create commit with _version name_ (e.g., v3.2.1)
7. Push commits and tags to public repository
8. Add changelog to tag (Github releases)
1. Execute use `RELEASE.sh`.
2. Push to Github
3. Create release on Github (incl. changelog)
This actually creates a tag that is later used by F-Droid
4. Pull from Github
5. Build reproducible release and attach to release
6. ... wait until reproducibility is verified by F-Droid
## F-Droid
Application id: de.dennisguse.opentracks
Two releases will be created:
* Application id: `de.dennisguse.opentracks` (irreproducible)
* Application id: `de.dennisguse.opentracks.playstore` (reproducible)
It if it properly tagged F-Droid takes care of building the app and publishing.
Usually, it takes two days before the update is published (build, signed, and published).
For F-Droid the build status can be found [here](https://monitor.f-droid.org/builds/build).
The recent build activity can be found [here](https://monitor.f-droid.org/builds/build)
## Reproducible builds
## Google Play Store
Application id: `de.dennisguse.opentracks.playstore`
A lot of detailed information can be found [here](https://f-droid.org/docs/Reproducible_Builds/)
Requirement: `gem install fastlane`
1. Build signed apk
(requires keystore)
2. Upload signed apk to [Google Play Console](https://play.google.com/apps/publish)
3. Update store meta data (e.g., description and screenshots)
`fastlane metadata`
(requires API key configured in `Appfile`)
Supported languages: https://support.google.com/googleplay/android-developer/table/4419860
Technical requirements:
* Must be build using OpenJDK17
## Translations (localization)
Translations of the OpenTracks are handled in
Weblate: [https://hosted.weblate.org/projects/opentracks/](https://hosted.weblate.org/projects/opentracks)
.
Weblate: [https://hosted.weblate.org/projects/opentracks/](https://hosted.weblate.org/projects/opentracks).
## Google Play Store
Supported languages: https://support.google.com/googleplay/android-developer/table/4419860
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
set -e
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
JAVA_VERSION=`java --version`
if [[ $JAVA_VERSION != "openjdk 17."* ]]; then
echo "OpenJDK version should be 17.X"
exit -1;
fi
RELEASE_STORE_PASSWORD=
read -s -p "Enter store password: " RELEASE_STORE_PASSWORD
echo ""
read -s -p "Enter key alias: " RELEASE_KEY_ALIAS
echo ""
read -s -p "Enter key password: " RELEASE_KEY_PASSWORD
echo ""
./gradlew --no-configuration-cache \
clean \
assembleReproducibleRelease \
-Drelease_store_file=`ls ../*.jks` \
-Drelease_store_file="../keystore_opentracks.jks" \
-Drelease_store_password="$RELEASE_STORE_PASSWORD" \
-Drelease_key_alias="$RELEASE_KEY_ALIAS" \
-Drelease_key_password="$RELEASE_KEY_PASSWORD"
+13 -4
View File
@@ -64,8 +64,8 @@ android {
defaultConfig {
applicationId 'de.dennisguse.opentracks'
versionCode 5985
versionName "v4.17.4"
versionCode 5989
versionName "v4.17.5"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -84,6 +84,14 @@ android {
keyPassword System.getProperty('nightly_key_password')
}
}
release {
if (System.getProperty("release_store_file") != null) {
storeFile file(System.getProperty("release_store_file"))
storePassword System.getProperty("release_store_password")
keyAlias System.getProperty("release_key_alias")
keyPassword System.getProperty("release_key_password")
}
}
}
namespace 'de.dennisguse.opentracks'
@@ -113,12 +121,13 @@ android {
applicationId 'de.dennisguse.opentracks'
versionNameSuffix 'irreproducible'
}
reproducible {
reproducible {
// Developer Binaries: https://github.com/OpenTracksApp/OSMDashboard/releases/download/v%v/de.dennisguse.opentracks.playstore_%v.apk
// FDroid: https://f-droid.org/de/packages/de.dennisguse.opentracks.playstore
// PlayStore: https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore
dimension 'version'
applicationId 'de.dennisguse.opentracks.playstore'
signingConfig signingConfigs.release
}
}
@@ -132,7 +141,7 @@ android {
outputFileName = "${applicationId}_${variant.versionCode}.apk"
}
if (variant.flavorName== 'nightly') {
if (variant.flavorName == 'nightly') {
setVersionCodeOverride(getVersionCode())
setVersionNameOverride(getVersionName())
}
@@ -0,0 +1,10 @@
v4.17.5: OpenTracks
Changes:
- Reproducible build: let's see if it works.
Bugfix:
- Reproducible build uses PlayStore icon.
Developer:
- Added RELEASE_BUILD.sh