Anuken / Mindustry

The automation tower defense RTS
https://mindustrygame.github.io
GNU General Public License v3.0
22.56k stars 2.95k forks source link

Automate F-Droid updates #654

Closed rnauber closed 5 years ago

rnauber commented 5 years ago

Hi, now that Mindustry is on F-Droid and the descriptions/screenshots are automatically deployed, the last missing piece to full automation is auto updates: https://f-droid.org/en/docs/Build_Metadata_Reference/#UpdateCheckMode Unfortunately, the do not work for Mindustry out of the box, because the android version code and name are dynamic: https://github.com/Anuken/Mindustry/blob/fb4faa15bbd133f455b4af16a881480528905ac2/android/build.gradle#L79

I see two solutions: 1) explicitly putting a version code and a version name in the build.gradle file 2) use F-Droids "HTTP" auto update mechanism: an URL is parsed for the version code and name. Maybe a github workflow could automatically generate that file on every release.

@Anuken: What do do you think?

Anuken commented 5 years ago

I think HTTP is the best solution here. What does the file need to look like? Where is this configured?

rnauber commented 5 years ago

Well, it is configured in your F-Droid recipe: https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/io.anuke.mindustry.yml#L69

An example for an app using the HTTP update mode can be found here: https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/apps.amine.bou.readerforselfoss.yml#L416

With that url containing the current version code/name: https://www.amine-bou.fr/version.txt

F-Droid is able to match the values through a regex from the url.

Anuken commented 5 years ago

So, we could use something like:

UpdateCheckMode: HTTP
UpdateCheckData: https://raw.githubusercontent.com/Anuken/MindustryBuilds/master/version.txt|versionCode=(.*)|.|versionName=(.*)

...and have the Travis/Github CI run

echo versionName=${RELEASE_TAG}$'\n'versionCode=${RELEASE_TAG:1} > version.txt

and commit to the MindustryBuilds repository with that text file.

When are the HTTP builds triggered? What needs to be done to signal that the version file is ready?

rnauber commented 5 years ago

Yes, that would work.

echo versionName=${RELEASE_TAG}$'\n'versionCode=${RELEASE_TAG:1} > version.txt

This has to yield something like this:

versionName=4-fdroid-92
versionCode=92

so what about this: echo versionName=4-fdroid-${RELEASE_TAG:1}$'\n'versionCode=${RELEASE_TAG:1} > version.txt

Anuken commented 5 years ago

That's fine, although I'm not sure how I feel about hard-coding the 4.

rnauber commented 5 years ago

When are the HTTP builds triggered?

They are triggered periodically, maybe once a day.

What needs to be done to signal that the version file is ready?

Nothing. The url is checked for a VersionCode larger than the one present on F-Droid:

https://gitlab.com/fdroid/fdroidserver/blob/master/fdroidserver/checkupdates.py#L462

rnauber commented 5 years ago

That's fine, although I'm not sure how I feel about hard-coding the 4. Hm, maybe you can extract it from somewhere...

And the file could be called "version_fdroid.txt", since it contains the fdroid prefix...

rnauber commented 5 years ago

@Anuken if you prepare the version file, I could test the update mechanism locally and submit a PR to F-Droid, if you like...

Anuken commented 5 years ago

I've set up the file and added the script mentioned to Travis, so it should be ready for testing now.

rnauber commented 5 years ago

Great! It seems to work! Is it intentional that you use 4-fdroid-v92 instead of 4-fdroid-92? If so, I would adapt to that and submit a PR to F-Droid...

Anuken commented 5 years ago

No, that wasn't intentional. I'll change it.

rnauber commented 5 years ago

No, that wasn't intentional. I'll change it.

Ok, but someone with a hardhat on messed it up afterwards :) https://github.com/Anuken/MindustryBuilds/commit/f68948e2a991e7a8222fefaf93365b86e50061ae

Anuken commented 5 years ago

Strange; it looks like my check for the tag presence didn't work correctly. Should be fixed now.

rnauber commented 5 years ago

I submitted an PR to F-Droid: https://gitlab.com/fdroid/fdroiddata/merge_requests/5456

Thanks for whipping this up so fast!

licaon-kter commented 5 years ago

@Anuken any ideas why it fails to build? https://gitlab.com/fdroid/fdroiddata/merge_requests/5456#note_216659300

Anuken commented 5 years ago

It's for the same reason as this.

licaon-kter commented 5 years ago

So we can't really automate this, each version needs the "right hash" to build?

Anuken commented 5 years ago

No, you just can't build 92 anymore since Arc has broken compatiblity since then. As long as each build is made shortly after release, there shouldn't be a problem.

Either way, I'm planning on adding a pre-commit hook to update the Arc hash and fix the build issue for good.

EDIT: Static hash added as part of b1edaa14084adb9d30475950f8b3d0a23f7c06ed. This does not apply retroactively, so you still won't be able to build v92.

rnauber commented 5 years ago

@Anuken now that those things are fixed, when are you planning to release v93? I am asking, because there is no working version on F-Droid at the moment, what do you think?

Anuken commented 5 years ago

I was planning on releasing 93 once the F-Droid update PR was merged, but I suppose it doesn't really matter since the automatic build can trigger even if the PR is merged after release (?).

licaon-kter commented 5 years ago

@Anuken Yes, once https://gitlab.com/fdroid/fdroiddata/merge_requests/5456 is merged, next cycle after you tag and release, the new version will get picked up.

rnauber commented 5 years ago

@Anuken: Great news, v93 is released! Unfortunately, I get this error:

INFO: Using git version 2.20.1
INFO: Building version 4-fdroid-93 (93) of io.anuke.mindustry
INFO: Getting source for revision v93
INFO: Creating local.properties file at build/io.anuke.mindustry/local.properties
INFO: Creating local.properties file at build/io.anuke.mindustry/android/local.properties
INFO: Cleaned build.gradle of keysigning configs at build/io.anuke.mindustry/android/build.gradle
INFO: Running 'prebuild' commands in build/io.anuke.mindustry/android
INFO: Cleaning Gradle project...
INFO: Scanning source for common problems...
INFO: Removing shared library at android/libs/armeabi-v7a/libgdx-freetype.so
INFO: Removing shared library at android/libs/armeabi-v7a/libgdx.so
INFO: Removing shared library at android/libs/x86/libgdx-freetype.so
INFO: Removing shared library at android/libs/x86/libgdx.so
INFO: Removing shared library at android/libs/armeabi/libgdx-freetype.so
INFO: Removing shared library at android/libs/armeabi/libgdx.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx-freetype.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx.so
INFO: Removing shared library at android/libs/x86_64/libgdx-freetype.so
INFO: Removing shared library at android/libs/x86_64/libgdx.so
INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar
INFO: Creating source tarball...
INFO: Building Gradle project...
ERROR: Could not build app io.anuke.mindustry: Build failed for io.anuke.mindustry:4-fdroid-93
==== detail begin ====
Found 5.5 via distributionUrl
Running /home/olg/.cache/fdroidserver/gradle/5.5/bin/gradle assembleRelease

> Configure project :
Compiling with build: 'custom build'

> Configure project :android
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /home/olg/scratch/android/fdroiddata/build/io.anuke.mindustry/android.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

> Task :annotations:compileJava
> Task :annotations:processResources
> Task :annotations:classes
> Task :annotations:jar
> Task :core:preGen UP-TO-DATE
> Task :core:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core:compileJava'.
> Could not resolve all files for configuration ':core:compileClasspath'.
   > Could not find com.github.Anuken.Arc:arc-core:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
     Required by:
         project :core
   > Could not find com.github.Anuken.Arc:freetype:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/freetype/null/freetype-null.jar
     Required by:
         project :core
   > Could not find com.github.Anuken.Arc:arcnet:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
     Required by:
         project :core

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 15s
4 actionable tasks: 4 executed
==== detail end ====
INFO: Build for app io.anuke.mindustry failed:
Build failed for io.anuke.mindustry:4-fdroid-93
==== detail begin ====
Found 5.5 via distributionUrl
Running /home/olg/.cache/fdroidserver/gradle/5.5/bin/gradle assembleRelease

> Configure project :
Compiling with build: 'custom build'

> Configure project :android
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /home/olg/scratch/android/fdroiddata/build/io.anuke.mindustry/android.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

> Task :annotations:compileJava
> Task :annotations:processResources
> Task :annotations:classes
> Task :annotations:jar
> Task :core:preGen UP-TO-DATE
> Task :core:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core:compileJava'.
> Could not resolve all files for configuration ':core:compileClasspath'.
   > Could not find com.github.Anuken.Arc:arc-core:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arc-core/null/arc-core-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arc-core/null/arc-core-null.jar
     Required by:
         project :core
   > Could not find com.github.Anuken.Arc:freetype:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/freetype/null/freetype-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/freetype/null/freetype-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/freetype/null/freetype-null.jar
     Required by:
         project :core
   > Could not find com.github.Anuken.Arc:arcnet:null.
     Searched in the following locations:
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - file:/home/olg/.m2/repository/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://repo.maven.apache.org/maven2/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://oss.sonatype.org/content/repositories/snapshots/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://oss.sonatype.org/content/repositories/releases/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://jitpack.io/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://jitpack.io/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arcnet/null/arcnet-null.pom
       - https://jcenter.bintray.com/com/github/Anuken/Arc/arcnet/null/arcnet-null.jar
     Required by:
         project :core

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 15s
4 actionable tasks: 4 executed
==== detail end ====

It seems related to the new mechanism for fixing the arc dependency...

Anuken commented 5 years ago

It appears that the gradle.properties file is not being loaded correctly, but that doesn't make much sense, considering I can build it just fine with the right hash after cloning the repo.

Also, you don't seem to be passing the build version to Gradle...? I see Compiling with build: 'custom build' in the logs.

rnauber commented 5 years ago

It successfully builds: https://gitlab.com/fdroid/fdroiddata/merge_requests/5456

INFO: Creating output directory
git version 2.20.1
INFO: Using git version 2.20.1
INFO: Building version 4-fdroid-93 (93) of io.anuke.mindustry
INFO: Getting source for revision v93
INFO: Creating local.properties file at build/io.anuke.mindustry/local.properties
INFO: Creating local.properties file at build/io.anuke.mindustry/android/local.properties
INFO: Cleaned build.gradle of keysigning configs at build/io.anuke.mindustry/android/build.gradle
INFO: Running 'prebuild' commands in build/io.anuke.mindustry/android
+ echo androidBuildCode=93
+ echo build=93
+ echo modifier=beta
+ echo type=fdroid
+ echo number=4
+ echo buildversion=93
+ echo versionType=fdroid
+ grep archash ../gradle.properties
INFO: Cleaning Gradle project...
Found 5.5 via distributionUrl
Running /home/olg/.cache/fdroidserver/gradle/5.5/bin/gradle clean

> Configure project :
Compiling with build: 'custom build'

> Configure project :android
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /home/olg/scratch/android/fdroiddata/build/io.anuke.mindustry/android.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

> Task :android:clean UP-TO-DATE

BUILD SUCCESSFUL in 4s
1 actionable task: 1 up-to-date
INFO: Scanning source for common problems...
INFO: Removing shared library at android/libs/armeabi-v7a/libgdx-freetype.so
INFO: Removing shared library at android/libs/armeabi-v7a/libgdx.so
INFO: Removing shared library at android/libs/x86/libgdx-freetype.so
INFO: Removing shared library at android/libs/x86/libgdx.so
INFO: Removing shared library at android/libs/armeabi/libgdx-freetype.so
INFO: Removing shared library at android/libs/armeabi/libgdx.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx-freetype.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx.so
INFO: Removing shared library at android/libs/x86_64/libgdx-freetype.so
INFO: Removing shared library at android/libs/x86_64/libgdx.so
INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar
INFO: Creating source tarball...
INFO: Building Gradle project...
Found 5.5 via distributionUrl
Running /home/olg/.cache/fdroidserver/gradle/5.5/bin/gradle assembleRelease

> Configure project :
Compiling with build: 'custom build'

> Configure project :android
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /home/olg/scratch/android/fdroiddata/build/io.anuke.mindustry/android.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

> Task :annotations:compileJava
> Task :annotations:processResources
> Task :annotations:classes
> Task :annotations:jar
> Task :core:preGen UP-TO-DATE

> Task :core:compileJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :core:processResources NO-SOURCE
> Task :core:classes
> Task :core:jar
> Task :android:preBuild UP-TO-DATE
> Task :android:preReleaseBuild
> Task :android:compileReleaseAidl NO-SOURCE
> Task :android:compileReleaseRenderscript
> Task :android:checkReleaseManifest
> Task :android:generateReleaseBuildConfig
> Task :android:prepareLintJar
> Task :android:generateReleaseSources
> Task :android:javaPreCompileRelease
> Task :android:mainApkListPersistenceRelease
> Task :android:generateReleaseResValues
> Task :android:generateReleaseResources
> Task :android:mergeReleaseResources
> Task :android:createReleaseCompatibleScreenManifests
> Task :android:processReleaseManifest
> Task :android:processReleaseResources
> Task :android:compileReleaseJavaWithJavac
> Task :android:compileReleaseSources
> Task :android:lintVitalRelease
> Task :android:mergeReleaseShaders
> Task :android:compileReleaseShaders
> Task :android:generateReleaseAssets
> Task :android:mergeReleaseAssets
> Task :android:signingConfigWriterRelease
> Task :android:checkReleaseDuplicateClasses
D8: synthesized for lambda desugaring: Type `io.anuke.mindustry.core.Platform$-CC` was not found, it is required for default or static interface methods desugaring of `boolean io.anuke.mindustry.core.-$$Lambda$Platform$e8PK4P9QE353hm5ITYEwkS3HSwU.test(java.lang.Object)`
D8: synthesized for lambda desugaring: Type `io.anuke.mindustry.entities.traits.BuilderTrait$-CC` was not found, it is required for default or static interface methods desugaring of `void io.anuke.mindustry.entities.traits.-$$Lambda$BuilderTrait$qlYRe74YdKaSMgPG1AOmS5f_0ao.run()`
> Task :android:transformClassesWithDexBuilderForRelease
> Task :android:transformDexArchiveWithExternalLibsDexMergerForRelease
> Task :android:transformDexArchiveWithDexMergerForRelease
> Task :android:mergeReleaseJniLibFolders
> Task :android:transformNativeLibsWithMergeJniLibsForRelease
> Task :android:processReleaseJavaRes NO-SOURCE
> Task :android:transformResourcesWithMergeJavaResForRelease
> Task :android:packageRelease
> Task :android:assembleRelease

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 15s
31 actionable tasks: 31 executed
INFO: Successfully built version 4-fdroid-93 of io.anuke.mindustry
INFO: success: io.anuke.mindustry
INFO: Finished
INFO: 1 build succeeded
Anuken commented 5 years ago

Is that it, then? Anything else that needs to be done?

rnauber commented 5 years ago

Well it almost works! The F-Droid updater automatically picked v94 up, but failed with: https://f-droid.org/wiki/page/io.anuke.mindustry/lastbuild

INFO: Removing shared library at android/libs/x86/libgdx-freetype.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx.so
INFO: Removing shared library at android/libs/arm64-v8a/libgdx-freetype.so
INFO: Creating source tarball...
INFO: Building Gradle project...
INFO: Successfully built version 4-fdroid-94 of io.anuke.mindustry
ERROR: Could not build app io.anuke.mindustry: Unexpected version/version code in output; APK: '4-fdroid-94' / '95',  Expected: '4-fdroid-94' / '94'

which could be fixed by:

diff --git a/metadata/io.anuke.mindustry.yml b/metadata/io.anuke.mindustry.yml
index fd60906630..882e1d0166 100644
--- a/metadata/io.anuke.mindustry.yml
+++ b/metadata/io.anuke.mindustry.yml
@@ -63,7 +63,7 @@ Builds:
     gradle:
       - yes
     prebuild:
-      - echo "androidBuildCode=$$VERCODE$$" > ../core/assets/version.properties
+      - echo "androidBuildCode=$(expr $$VERCODE$$ - 1)" > ../core/assets/version.properties
       - echo "build=$$VERCODE$$" >> ../core/assets/version.properties
       - echo "modifier=beta" >> ../core/assets/version.properties
       - echo "type=fdroid" >> ../core/assets/version.properties

@Anuken: should I submit a PR to F-Droid or are you planning on providing some way to override the existing mechanism?

Anuken commented 5 years ago

Just fixed it by switching the system to only increment the version automatically when I build it.

rnauber commented 5 years ago

Thanks, that looks good to me. Lets see if the next release builds automatically and then we may celebrate the closing of this issue...

Anuken commented 5 years ago

Any reason why the updates seem to be taking so long? I released 96 a few days ago, and the version file seems up-to-date, but 96 isn't being displayed in the lastBuild. Shouldn't it trigger more often than every two days?

rnauber commented 5 years ago

Hm, maybe something was stuck at F-Droid.. But v95 finally made it through, so the auto update seems to work! So I will close this issue, if I may...

Thank you very much @Anuken, despite the severe sleep deprivation that your game is causing :)

licaon-kter commented 5 years ago

https://f-droid.org/wiki/index.php?title=Special:RecentChanges&days=7&from=&hidebots=0&hideanons=1&hideliu=1&limit=500

This is the almost live feed of the build server, so if a cycle was not run AFTER your tagging, it's not there yet.

This is not a CI, it has a human element, eg. The signing step is done on an air-gapped machine, so there's no stable timeframe, no eta.