Source code:
https://gitpull.it/source/libre-busto-ci-cd/browse/master/bin/publish-latest-branch-build.sh
(ex P23)
This step will copy the built .apk to an indexed HTTP directory exposed by Apache, signing them:
| Passed |
Source code:
https://gitpull.it/source/libre-busto-ci-cd/browse/master/bin/publish-latest-branch-build.sh
(ex P23)
This step will copy the built .apk to an indexed HTTP directory exposed by Apache, signing them:
| 1 | PHP Fatal error: Uncaught HTTPFutureHTTPResponseStatus: [HTTP/403] |
|---|---|
| 2 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
| 3 | <html><head> |
| 4 | <title>403 Forbidden</title> |
| 5 | </head><body> |
| 6 | <h1>Forbidden</h1> |
| 7 | <p>You don't have permission to access this resource.</p> |
| 8 | <hr> |
| 9 | <address>Apache/2.4.59 (Debian) Server at gitpull.it Port 443</address> |
| 10 | </body></html> in /home/www-data/gitpull.it/arcanist/src/future/http/BaseHTTPFuture.php:384 |
| 11 | Stack trace: |
| 12 | #0 /home/www-data/gitpull.it/arcanist/src/future/http/HTTPSFuture.php(547): BaseHTTPFuture->parseRawHTTPResponse('HTTP/1.1 403 Fo...') |
| 13 | #1 /home/www-data/gitpull.it/arcanist/src/future/Future.php(63): HTTPSFuture->isReady() |
| 14 | #2 /home/www-data/gitpull.it/arcanist/src/future/FutureProxy.php(35): Future->updateFuture() |
| 15 | #3 /home/www-data/gitpull.it/arcanist/src/future/Future.php(63): FutureProxy->isReady() |
| 16 | #4 /home/www-data/gitpull.it/arcanist/src/future/FutureIterator.php(224): Future->updateFuture() |
| 17 | #5 /home/www-data/gitpull.it/arcanist/src/future/FutureIterator.php(190): FutureIterator->next() |
| 18 | #6 [inter in /home/www-data/gitpull.it/arcanist/src/future/http/BaseHTTPFuture.php on line 384 |
| 19 |
| 5747 | 21902480 res/vL.9.png (OK) |
|---|---|
| 5748 | 21902743 res/vR.xml (OK - compressed) |
| 5749 | 21903008 res/vT.xml (OK - compressed) |
| 5750 | 21903236 res/vZ.xml (OK - compressed) |
| 5751 | 21903493 res/vf.xml (OK - compressed) |
| 5752 | 21903821 res/vl.xml (OK - compressed) |
| 5753 | 21904395 res/vq.xml (OK - compressed) |
| 5754 | 21904970 res/vy.xml (OK - compressed) |
| 5755 | 21905460 res/vz.9.png (OK) |
| 5756 | 21905681 res/vz.xml (OK - compressed) |
| 5757 | 21905932 res/w7.png (OK) |
| 5758 | 21906242 res/w7.xml (OK - compressed) |
| 5759 | 21906971 res/w9.xml (OK - compressed) |
| 5760 | 21907244 res/wL.9.png (OK) |
| 5761 | 21907724 res/wN.9.png (OK) |
| 5762 | 21907989 res/wP.xml (OK - compressed) |
| 5763 | 21908344 res/w_.png (OK) |
| 5764 | 21908600 res/wb.png (OK) |
| 5765 | 21914529 res/wi.xml (OK - compressed) |
| 5766 | 21914904 res/wy.png (OK) |
| 5767 | 21915372 res/x3.9.png (OK) |
| 5768 | 21915624 res/xH.png (OK) |
| 5769 | 21915850 res/xI.xml (OK - compressed) |
| 5770 | 21916551 res/xM.ttf (OK - compressed) |
| 5771 | 21976241 res/xN.xml (OK - compressed) |
| 5772 | 21977071 res/xQ.xml (OK - compressed) |
| 5773 | 21977560 res/xR.9.png (OK) |
| 5774 | 21977796 res/xa.9.png (OK) |
| 5775 | 21978057 res/xa.xml (OK - compressed) |
| 5776 | 21978618 res/xd.xml (OK - compressed) |
| 5777 | 21979332 res/xj.xml (OK - compressed) |
| 5778 | 21979624 res/xo.xml (OK - compressed) |
| 5779 | 21979910 res/xq.xml (OK - compressed) |
| 5780 | 21980297 res/xz.xml (OK - compressed) |
| 5781 | 21981486 res/y-.xml (OK - compressed) |
| 5782 | 21981754 res/y4.xml (OK - compressed) |
| 5783 | 21982010 res/y9.xml (OK - compressed) |
| 5784 | 21982278 res/yE.xml (OK - compressed) |
| 5785 | 21982536 res/yH.9.png (OK) |
| 5786 | 21982760 res/yO.xml (OK - compressed) |
| 5787 | 21983008 res/yT.xml (OK - compressed) |
| 5788 | 21983330 res/yV.xml (OK - compressed) |
| 5789 | 21983672 res/yY.9.png (OK) |
| 5790 | 21983898 res/yY.xml (OK - compressed) |
| 5791 | 21984183 res/ya.xml (OK - compressed) |
| 5792 | 21984544 res/yd.png (OK) |
| 5793 | 21996480 res/yg.9.png (OK) |
| 5794 | 21996915 res/yj.xml (OK - compressed) |
| 5795 | 21997312 res/yn.png (OK) |
| 5796 | 21999796 res/z-.9.png (OK) |
| 5797 | 22000060 res/z9.9.png (OK) |
| 5798 | 22000520 res/zE.png (OK) |
| 5799 | 22000884 res/zG.xml (OK - compressed) |
| 5800 | 22001204 res/zL.png (OK) |
| 5801 | 22001452 res/zR.png (OK) |
| 5802 | 22004253 res/zR.xml (OK - compressed) |
| 5803 | 22004744 res/zV.9.png (OK) |
| 5804 | 22007247 res/zc.xml (OK - compressed) |
| 5805 | 22007696 res/ze.png (OK) |
| 5806 | 22016051 res/zp.xml (OK - compressed) |
| 5807 | 22016309 res/zq.xml (OK - compressed) |
| 5808 | 22016620 res/zr.png (OK) |
| 5809 | 22019439 res/zs.xml (OK - compressed) |
| 5810 | 22019711 res/zu.xml (OK - compressed) |
| 5811 | 22020742 res/zv.xml (OK - compressed) |
| 5812 | 22022020 res/zz.png (OK) |
| 5813 | 22022948 resources.arsc (OK) |
| 5814 | Verification succesful |
| 5815 | [INFO][2025-10-14 00:24:55] APK ALIGNED D200-x86_64-aligned.apk: apksigner... creating D200-x86_64-signed.apk |
| 5816 | [INFO][2025-10-14 00:24:57] APK ALIGNED SIGNED D200-x86_64-signed.apk: calculating sha256sum... |
| 5817 | DEBUG TELEGRAM CONTENT |
| 5818 | ⚙ Dear Android hackers, please review this promising patch: |
| 5819 | https://gitpull\.it/D200 |
| 5820 | |
| 5821 | Here the related fresh test builds: |
| 5822 | |
| 5823 | APK for **arm64\-v8a**: |
| 5824 | [Download D200\-arm64\-v8a\-signed\.apk](https://lab.reyboz.it/builds/libre-busto/D200-arm64-v8a-signed.apk) |
| 5825 | APK sha256: `4f86e2ccd983cf65c0d092fea5898e001d976a86e0b4d9dc5fa7819438f4d577` |
| 5826 | |
| 5827 | APK for **armeabi\-v7a**: |
| 5828 | [Download D200\-armeabi\-v7a\-signed\.apk](https://lab.reyboz.it/builds/libre-busto/D200-armeabi-v7a-signed.apk) |
| 5829 | APK sha256: `8d4b64a55d20deaa7bc4b72506d40a62d80cceb90ed3d0b5cfdabf4121a8e0a1` |
| 5830 | |
| 5831 | APK for **universal**: |
| 5832 | [Download D200\-universal\-signed\.apk](https://lab.reyboz.it/builds/libre-busto/D200-universal-signed.apk) |
| 5833 | APK sha256: `1c363e14f65fffd2c8f9828c516bc93c95cf603fc5d5f3948c5dbf0e8398caaa` |
| 5834 | |
| 5835 | APK for **x86**: |
| 5836 | [Download D200\-x86\-signed\.apk](https://lab.reyboz.it/builds/libre-busto/D200-x86-signed.apk) |
| 5837 | APK sha256: `e8d3820478f79167a7a691a4387fcd91faeeb60291c2110fb0b61fc34c65b196` |
| 5838 | |
| 5839 | APK for **x86\_64**: |
| 5840 | [Download D200\-x86\_64\-signed\.apk](https://lab.reyboz.it/builds/libre-busto/D200-x86_64-signed.apk) |
| 5841 | APK sha256: `b88840289cb0686dfb503f2b7827a1898191aa5935ee2078b394a5d0a7b7d220` |
| 5842 | |
| 5843 | Adding bipbop Comment to D200 |
| 5844 | [INFO][2025-10-14 00:24:57] Cleaning old artifacts |
| 5845 | [INFO][2025-10-14 00:24:57] Done |
| 5846 |
| Passed |
This step will build an .apk using Gradle using this fantastic Docker image:
https://gitlab.com/fabmazz/android-fdroid-build-container/-/tree/ubuntu
Source code of this build step:
https://gitpull.it/source/libre-busto-ci-cd/browse/master/bin/fdroid-docker-builder.sh
TODO: Use the official image by Fabio Mazza, when the "DESIRED_UID" / "DESIRED_GID" features will be merged.
| 1 | Note: Some input files use or override a deprecated API. |
|---|---|
| 2 | Note: Recompile with -Xlint:deprecation for details. |
| 3 | /var/drydock/workingcopy-79/repo/libre-busto/app/src/gitpull/AndroidManifest.xml:4: Error: Mock locations should only be requested in a test or debug-specific manifest file (typically src/debug/AndroidManifest.xml) [MockLocation] |
| 4 | <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> |
| 5 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 6 | |
| 7 | Explanation for issues of type "MockLocation": |
| 8 | Using a mock location provider (by requiring the permission |
| 9 | android.permission.ACCESS_MOCK_LOCATION) should only be done in debug |
| 10 | builds (or from tests). In Gradle projects, that means you should only |
| 11 | request this permission in a test or debug source set specific manifest |
| 12 | file. |
| 13 | |
| 14 | To fix this, create a new manifest file in the debug folder and move the |
| 15 | <uses-permission> element there. A typical path to a debug manifest |
| 16 | override file in a Gradle project is src/debug/AndroidManifest.xml. |
| 17 | |
| 18 | /var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/viewmodels/ArrivalsViewModel.kt:132: Error: Expected non-nullable value [NullSafeMutableLiveData from androidx.lifecycle] |
| 19 | palinaLiveData.postValue(palina) |
| 20 | ~~~~~~ |
| 21 | |
| 22 | Explanation for issues of type "NullSafeMutableLiveData": |
| 23 | This check ensures that LiveData values are not null when explicitly |
| 24 | declared as non-nullable. |
| 25 | |
| 26 | Kotlin interoperability does not support enforcing explicit |
| 27 | null-safety when using generic Java type parameters. Since |
| 28 | LiveData is a Java class its value can always be null even |
| 29 | when its type is explicitly declared as non-nullable. This can lead |
| 30 | to runtime exceptions from reading a null LiveData value that is |
| 31 | assumed to be non-nullable. |
| 32 | |
| 33 | Vendor: Android Open Source Project |
| 34 | Identifier: androidx.lifecycle |
| 35 | Feedback: https://issuetracker.google.com/issues/new?component=413132 |
| 36 | |
| 37 | 2 errors, 0 warnings |
| 38 | |
| 39 |
| 12 | > Task :app:checkGitpullAarMetadata |
|---|---|
| 13 | > Task :app:extractGitpullSupportedLocales |
| 14 | > Task :app:generateGitpullLocaleConfig |
| 15 | > Task :app:generateGitpullResources |
| 16 | > Task :app:createGitpullCompatibleScreenManifests |
| 17 | > Task :app:extractDeepLinksGitpull |
| 18 | |
| 19 | > Task :app:processGitpullMainManifest |
| 20 | /var/drydock/workingcopy-79/repo/libre-busto/app/src/gitpull/AndroidManifest.xml Warning: |
| 21 | service#info.mqtt.android.service.MqttService was tagged at AndroidManifest.xml:0 to replace another declaration but no other declaration present |
| 22 | /var/drydock/workingcopy-79/repo/libre-busto/app/src/gitpull/AndroidManifest.xml Warning: |
| 23 | provider#org.acra.attachment.AcraContentProvider@android:authorities was tagged at AndroidManifest.xml:0 to replace other declarations but no other declaration present |
| 24 | |
| 25 | > Task :app:processGitpullManifest |
| 26 | > Task :app:buildKotlinToolingMetadata |
| 27 | > Task :app:processGitpullManifestForPackage |
| 28 | > Task :app:extractProguardFiles |
| 29 | > Task :app:mergeGitpullJniLibFolders |
| 30 | > Task :app:javaPreCompileGitpull |
| 31 | > Task :app:desugarGitpullFileDependencies |
| 32 | > Task :app:mergeGitpullStartupProfile UP-TO-DATE |
| 33 | > Task :app:mergeGitpullArtProfile |
| 34 | > Task :app:mergeGitpullShaders |
| 35 | > Task :app:compileGitpullShaders NO-SOURCE |
| 36 | > Task :app:generateGitpullAssets UP-TO-DATE |
| 37 | > Task :app:mergeGitpullAssets |
| 38 | > Task :app:checkGitpullDuplicateClasses |
| 39 | > Task :app:compressGitpullAssets |
| 40 | > Task :app:mergeGitpullResources |
| 41 | > Task :app:extractGitpullVersionControlInfo |
| 42 | > Task :app:mergeGitpullNativeLibs |
| 43 | > Task :app:collectGitpullDependencies |
| 44 | > Task :app:sdkGitpullDependencyData |
| 45 | > Task :app:writeGitpullAppMetadata |
| 46 | > Task :app:writeGitpullSigningConfigVersions |
| 47 | |
| 48 | > Task :app:stripGitpullDebugSymbols |
| 49 | Unable to strip the following libraries, packaging them as they are: libmaplibre.so. |
| 50 | |
| 51 | > Task :app:extractGitpullNativeSymbolTables |
| 52 | > Task :app:mergeGitpullNativeDebugMetadata NO-SOURCE |
| 53 | > Task :app:processGitpullResources |
| 54 | > Task :app:optimizeGitpullResources |
| 55 | > Task :app:mergeExtDexGitpull |
| 56 | |
| 57 | > Task :app:kaptGenerateStubsGitpullKotlin |
| 58 | w: Support for language version 2.0+ in kapt is in Alpha and must be enabled explicitly. Falling back to 1.9. |
| 59 | |
| 60 | > Task :app:kaptGitpullKotlin |
| 61 | /var/drydock/workingcopy-79/repo/libre-busto/app/build/tmp/kapt3/stubs/gitpull/it/reyboz/bustorino/data/gtfs/GtfsAgency.java:24: warning: Primary key constraint on gtfsId is ignored when being merged into it.reyboz.bustorino.data.gtfs.GtfsAgency |
| 62 | private it.reyboz.bustorino.data.gtfs.GtfsFeed feed; |
| 63 | ^ |
| 64 | |
| 65 | > Task :app:compileGitpullKotlin |
| 66 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/ActivityAbout.kt:100:13 'fun onBackPressed(): Unit' is deprecated. Deprecated in Java. |
| 67 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:146:21 'val loaderManager: LoaderManager' is deprecated. Deprecated in Java. |
| 68 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:151:30 'val loaderManager: LoaderManager' is deprecated. Deprecated in Java. |
| 69 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:323:29 'val loaderManager: LoaderManager' is deprecated. Deprecated in Java. |
| 70 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:383:29 'val loaderManager: LoaderManager' is deprecated. Deprecated in Java. |
| 71 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:532:20 Condition is always 'true'. |
| 72 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:595:21 'val loaderManager: LoaderManager' is deprecated. Deprecated in Java. |
| 73 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/ArrivalsFragment.kt:644:66 'fun execute(vararg p0: Stop!): AsyncTask<Stop!, Void!, Boolean!>!' is deprecated. Deprecated in Java. |
| 74 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt:172:43 'fun setColorFilter(p0: Int, p1: PorterDuff.Mode): Unit' is deprecated. Deprecated in Java. |
| 75 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/IntroFragment.kt:213:24 'fun setColorFilter(p0: Int, p1: PorterDuff.Mode): Unit' is deprecated. Deprecated in Java. |
| 76 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/LinesDetailFragment.kt:176:16 Condition is always 'false'. |
| 77 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/fragments/MapLibreFragment.kt:990:25 'fun requestSingleUpdate(p0: String, p1: LocationListener, p2: Looper?): Unit' is deprecated. Deprecated in Java. |
| 78 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:186:27 'class LocationProvider : Any' is deprecated. Deprecated in Java. |
| 79 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:186:44 'static field OUT_OF_SERVICE: Int' is deprecated. Deprecated in Java. |
| 80 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:186:72 'class LocationProvider : Any' is deprecated. Deprecated in Java. |
| 81 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:186:89 'static field TEMPORARILY_UNAVAILABLE: Int' is deprecated. Deprecated in Java. |
| 82 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:188:34 'class LocationProvider : Any' is deprecated. Deprecated in Java. |
| 83 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:188:51 'static field AVAILABLE: Int' is deprecated. Deprecated in Java. |
| 84 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/middleware/AppLocationManager.kt:216:48 'class Criteria : Any, Parcelable' is deprecated. Deprecated in Java. |
| 85 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt:53:40 Unchecked cast of 'kotlin.Any!' to 'kotlin.collections.Map<kotlin.String?, kotlin.Any>?'. |
| 86 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt:83:56 Unchecked cast of 'kotlin.collections.Set<*>' to 'kotlin.collections.Set<kotlin.String?>'. |
| 87 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/viewmodels/ArrivalsViewModel.kt:124:17 Condition is always 'false'. |
| 88 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/viewmodels/ArrivalsViewModel.kt:143:13 Condition is always 'true'. |
| 89 | w: file:///var/drydock/workingcopy-79/repo/libre-busto/app/src/main/java/it/reyboz/bustorino/viewmodels/ArrivalsViewModel.kt:163:17 Expression under 'when' is never equal to null. |
| 90 | |
| 91 | > Task :app:compileGitpullJavaWithJavac |
| 92 | |
| 93 | > Task :app:generateGitpullLintVitalReportModel |
| 94 | > Task :app:dexBuilderGitpull |
| 95 | > Task :app:processGitpullJavaRes |
| 96 | > Task :app:mergeGitpullGlobalSynthetics |
| 97 | > Task :app:mergeGitpullJavaResource |
| 98 | > Task :app:mergeDexGitpull |
| 99 | > Task :app:compileGitpullArtProfile |
| 100 | > Task :app:packageGitpull |
| 101 | > Task :app:createGitpullApkListingFileRedirect |
| 102 | > Task :app:lintVitalAnalyzeGitpull |
| 103 | > Task :app:lintVitalReportGitpull |
| 104 | |
| 105 | > Task :app:lintVitalGitpull |
| 106 | |
| 107 | > Task :app:assembleGitpull |
| 108 | |
| 109 | BUILD SUCCESSFUL in 1m 5s |
| 110 | 55 actionable tasks: 54 executed, 1 up-to-date |
| 111 |
| Passed |
| 1 | Found 8.7 via distributionUrl |
|---|---|
| 2 | Running /home/phabricator-android-builder/versions/8.7/bin/gradle clean |
| 3 | > Task :app:clean |
| 4 | |
| 5 | BUILD SUCCESSFUL in 3s |
| 6 | 1 actionable task: 1 executed |
| 7 |
| Passed |
| Passed |