Steps
successpipeline setup2s
successsetup14s
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
debconf: unable to initialize frontend: Teletype
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Noninteractive
info: downloading 2 components
info: downloading component rust-std
/tmp/trunk.tar.gz: OK
WARNING: The SDK Manager CLI tool (sdkmanager) is deprecated. Use Android CLI instead.
The 'android' binary can also be found in the cmdline-tools directory, and 'android sdk' is the replacement for 'sdkmanager'.
To learn more about the Android CLI and how to use it, see the documentation (https://d.android.com/tools/agents/android-cli)
trunk 0.21.14
rustfmt 1.10.0-stable (b940084d7e 2026-09-28)
clippy 0.1.99 (b940084d7e 2026-09-28)
openjdk version "21.0.12.1" 2026-08-18
OpenJDK Runtime Environment (build 21.0.12.1+1-1-deb13u1-Debian)
OpenJDK 64-Bit Server VM (build 21.0.12.1+1-1-deb13u1-Debian, mixed mode, sharing)
successlint1s
Checking api v0.1.0 (/ci/build/project/crates/api)
Checking server v0.1.0 (/ci/build/project/crates/server)
Checking web v0.1.0 (/ci/build/project/web)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.52s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
successtest2s
Compiling api v0.1.0 (/ci/build/project/crates/api)
Compiling server v0.1.0 (/ci/build/project/crates/server)
Compiling web v0.1.0 (/ci/build/project/web)
Finished `test` profile [unoptimized + debuginfo] target(s) in 1.69s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
Running unittests src/lib.rs (/ci/cache/target/debug/deps/api-2631e2177a757cec)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (/ci/cache/target/debug/deps/otserver-4448101ce1596c89)
running 25 tests
test auth::tests::credential_changes_need_a_recent_sign_in ... ok
test auth::tests::ipv6_addresses_group_by_64 ... ok
test auth::tests::forwarded_ip_takes_the_entry_the_proxy_wrote ... ok
test auth::tests::limiter_locks_after_max_failures ... ok
test routes::tests::cells_stay_near_and_stick_through_noise ... ok
test device::tests::a_code_needs_its_verifier_and_works_once ... ok
test routes::tests::coarse_points_hide_motion ... ok
test routes::tests::point_validation ... ok
test tests::public_url_is_an_origin ... ok
test tests::retention_never_exceeds_the_server_limit ... ok
test auth::tests::a_name_locks_across_addresses_but_not_for_known_ones ... ok
test routes::tests::two_admins_cannot_demote_each_other ... ok
test guest::tests::password_links_need_the_key ... ok
test tests::cells_fill_in_time_order_and_precisions_round_up ... ok
test routes::tests::coarse_tracks_cover_whole_buckets_only ... ok
test tests::reset_removes_every_other_way_in ... ok
test tests::trail_columns_merge_into_one ... ok
test tests::migrations_keep_old_points ... ok
test routes::tests::huge_ranges_are_refused ... ok
test routes::tests::people_respects_share_expiry ... ok
test device::tests::a_code_dies_with_its_session ... ok
test tests::retention_keeps_each_devices_newest_point ... ok
test tests::first_user_is_admin ... ok
test routes::tests::people_shows_only_shared_devices ... ok
test auth::tests::password_roundtrip ... ok
test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.00s
Running unittests src/main.rs (/ci/cache/target/debug/deps/web-b70a2e4a9416d0a4)
running 2 tests
test i18n::tests::german_texts_keep_every_value ... ok
test i18n::tests::keys_with_values_match ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests api
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
successbuild8s
2026-10-06T12:15:29.477560Z INFO Starting trunk 0.21.14
2026-10-06T12:15:29.477769Z INFO starting build
Compiling api v0.1.0 (/ci/build/project/crates/api)
Compiling web v0.1.0 (/ci/build/project/web)
Finished `release` profile [optimized] target(s) in 4.39s
warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
2026-10-06T12:15:35.092559Z INFO applying new distribution
2026-10-06T12:15:35.093142Z INFO success
Compiling api v0.1.0 (/ci/build/project/crates/api)
Compiling server v0.1.0 (/ci/build/project/crates/server)
Finished `release` profile [optimized] target(s) in 2.89s
successandroid9s
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Daemon will be stopped at the end of the build
Calculating task graph as no cached configuration is available for tasks: testDebugUnitTest assembleDebug
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :app:javaPreCompileDebug FROM-CACHE
> Task :app:generateDebugResources FROM-CACHE
> Task :app:javaPreCompileDebugUnitTest FROM-CACHE
> Task :app:extractDeepLinksDebug FROM-CACHE
> Task :app:desugarDebugFileDependencies FROM-CACHE
> Task :app:processDebugNavigationResources FROM-CACHE
> Task :app:generateDebugGlobalSynthetics FROM-CACHE
> Task :app:createDebugCompatibleScreenManifests
> Task :app:mapDebugSourceSetPaths
> Task :app:writeDebugAppMetadata
> Task :app:compileDebugNavigationResources FROM-CACHE
> Task :app:packageDebugResources FROM-CACHE
> Task :app:writeDebugSigningConfigVersions
> Task :app:checkDebugAarMetadata
> Task :app:processDebugMainManifest FROM-CACHE
> Task :app:checkDebugDuplicateClasses
> Task :app:mergeDebugAssets
> Task :app:mergeDebugJniLibFolders
> Task :app:processDebugManifest FROM-CACHE
> Task :app:mergeLibDexDebug FROM-CACHE
> Task :app:compressDebugAssets FROM-CACHE
> Task :app:processDebugManifestForPackage FROM-CACHE
> Task :app:mergeDebugNativeLibs NO-SOURCE
> Task :app:stripDebugDebugSymbols NO-SOURCE
> Task :app:mergeDebugResources FROM-CACHE
> Task :app:mergeExtDexDebug FROM-CACHE
> Task :app:parseDebugLocalResources FROM-CACHE
> Task :app:generateDebugRFile FROM-CACHE
> Task :app:processDebugResources FROM-CACHE
> Task :app:compileDebugKotlin FROM-CACHE
> Task :app:compileDebugJavaWithJavac NO-SOURCE
> Task :app:processDebugJavaRes
> Task :app:dexBuilderDebug FROM-CACHE
> Task :app:mergeProjectDexDebug FROM-CACHE
> Task :app:bundleDebugClassesToCompileJar
> Task :app:bundleDebugClassesToRuntimeJar
> Task :app:validateSigningDebug
> Task :app:compileDebugUnitTestKotlin FROM-CACHE
> Task :app:compileDebugUnitTestJavaWithJavac NO-SOURCE
> Task :app:processDebugUnitTestJavaRes
> Task :app:testDebugUnitTest FROM-CACHE
> Task :app:mergeDebugJavaResource
> Task :app:packageDebug
> Task :app:assembleDebug
> Task :app:createDebugApkListingFileRedirect
[Incubating] Problems report is available at: file:///ci/build/project/android/build/reports/problems/problems-report.html
Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 8s
40 actionable tasks: 16 executed, 24 from cache
Configuration cache entry stored.
successandroid-release20s
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Daemon will be stopped at the end of the build
Calculating task graph as no cached configuration is available for tasks: assembleRelease
> Task :app:preBuild UP-TO-DATE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:javaPreCompileRelease FROM-CACHE
> Task :app:generateReleaseResources FROM-CACHE
> Task :app:mergeReleaseStartupProfile
> Task :app:writeReleaseAppMetadata
> Task :app:validateSigningRelease
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:mapReleaseSourceSetPaths
> Task :app:extractProguardFiles
> Task :app:writeReleaseSigningConfigVersions
> Task :app:processReleaseNavigationResources
> Task :app:extractDeepLinksRelease
> Task :app:desugarReleaseFileDependencies
> Task :app:checkReleaseAarMetadata
> Task :app:mergeReleaseArtProfile
> Task :app:compileReleaseNavigationResources FROM-CACHE
> Task :app:checkReleaseDuplicateClasses
> Task :app:mergeReleaseJniLibFolders
> Task :app:mergeReleaseAssets
> Task :app:compressReleaseAssets
> Task :app:collectReleaseDependencies
> Task :app:mergeReleaseNativeLibs NO-SOURCE
> Task :app:stripReleaseDebugSymbols NO-SOURCE
> Task :app:extractReleaseNativeSymbolTables NO-SOURCE
> Task :app:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :app:extractReleaseVersionControlInfo
> Task :app:packageReleaseResources
> Task :app:parseReleaseLocalResources FROM-CACHE
> Task :app:generateReleaseRFile FROM-CACHE
> Task :app:processReleaseMainManifest
> Task :app:sdkReleaseDependencyData
> Task :app:processReleaseManifest
> Task :app:processReleaseManifestForPackage
> Task :app:mergeReleaseResources
> Task :app:processReleaseResources
> Task :app:optimizeReleaseResources
> Task :app:mergeExtDexRelease
> Task :app:compileReleaseKotlin
w: file:///ci/build/project/android/app/src/main/java/org/opentracker/Outbox.kt:22:78 Type argument for reified type parameter 'T' was inferred to the intersection of ['Comparable<*>' & 'Serializable']. Reification of an intersection type results in the common supertype being used. This may lead to subtle issues and an explicit type argument is encouraged. This will become an error in a future release.
> Task :app:compileReleaseJavaWithJavac NO-SOURCE
> Task :app:processReleaseJavaRes
> Task :app:dexBuilderRelease
> Task :app:mergeReleaseGlobalSynthetics
> Task :app:mergeReleaseJavaResource
> Task :app:generateReleaseLintVitalReportModel
> Task :app:mergeDexRelease
> Task :app:compileReleaseArtProfile
> Task :app:lintVitalAnalyzeRelease
> Task :app:lintVitalReportRelease
> Task :app:lintVitalRelease
> Task :app:packageRelease
> Task :app:assembleRelease
> Task :app:createReleaseApkListingFileRedirect
[Incubating] Problems report is available at: file:///ci/build/project/android/build/reports/problems/problems-report.html
Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 20s
45 actionable tasks: 40 executed, 5 from cache
Configuration cache entry stored.
successandroid-lint15s
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Daemon will be stopped at the end of the build
Calculating task graph as no cached configuration is available for tasks: lintDebug
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:compileDebugJavaWithJavac NO-SOURCE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:generateDebugUnitTestLintModel
> Task :app:generateDebugLintReportModel
> Task :app:generateDebugAndroidTestLintModel
> Task :app:lintAnalyzeDebugAndroidTest
> Task :app:lintAnalyzeDebugUnitTest
> Task :app:lintAnalyzeDebug
> Task :app:lintReportDebug
> Task :app:lintDebug
[Incubating] Problems report is available at: file:///ci/build/project/android/build/reports/problems/problems-report.html
Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/9.8.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 14s
27 actionable tasks: 8 executed, 19 up-to-date
Configuration cache entry stored.
successimage-files0s
successimage9s
[2/4] STEP 1/3: FROM scratch AS prebuilt
[2/4] STEP 2/3: COPY ci-bin/otserver /src/target/release/otserver
--> def2064900e5
[2/4] STEP 3/3: COPY ci-bin/web /src/web/dist
--> 07c7c95cc8db
[3/4] STEP 1/1: FROM 07c7c95cc8dba0fc70dfa47f9df92a44e55841020ebe3e4963c87b8bbe5fe430 AS bin
--> 07c7c95cc8db
[4/4] STEP 1/8: FROM docker.io/library/debian:trixie-slim
Trying to pull docker.io/library/debian:trixie-slim...
Getting image source signatures
Writing manifest to image destination
[4/4] STEP 2/8: RUN apt-get update && apt-get install -y --no-install-recommends libssl3t64 && rm -rf /var/lib/apt/lists/* && mkdir /data
Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]
Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Get:4 http://deb.debian.org/debian trixie/main amd64 Packages [9678 kB]
Get:5 http://deb.debian.org/debian trixie-updates/main amd64 Packages [4412 B]
Get:6 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [264 kB]
Fetched 10.2 MB in 1s (12.2 MB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
libssl3t64 is already the newest version (3.5.7-1~deb13u3).
libssl3t64 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
--> 90b454a4d16a
[4/4] STEP 3/8: COPY --from=bin /src/target/release/otserver /usr/local/bin/
--> 2a35e698b378
[4/4] STEP 4/8: COPY --from=bin /src/web/dist /srv/web
--> 451ef0ef8515
[4/4] STEP 5/8: ENV OT_ADDR=0.0.0.0:8080 OT_DB=/data/ot.db OT_WEB_DIR=/srv/web
--> d770cb020104
[4/4] STEP 6/8: VOLUME /data
--> 2b1aad22643b
[4/4] STEP 7/8: EXPOSE 8080
--> 685b63af7703
[4/4] STEP 8/8: ENTRYPOINT ["otserver"]
[4/4] COMMIT localhost/hf-build
--> 4b3a10005bf0
Successfully tagged localhost/hf-build:latest
4b3a10005bf0de00d2795a45042e4819c649a7abd4acd0b90c1468b63add8d20
hearthforge: image written
[ 6.491160] reboot: Restarting system
Pushed forge.unix-root.de/opentracker:3f386050
Pushed forge.unix-root.de/opentracker:edge
Digest sha256:5d84d9d7088803da1e8208c599cdcb1f8f8dc8d10250999284695e4a65bb0753
skippedimage-release0s
Skipped: condition not met