ci: the APK waits for the core's clippy and tests

android.yml never ran cargo, so a core test that failed in desktop.yml's
verify job stopped the desktop installers and not the APK, which links the
same core through android/ffi (#5237). The Kotlin + Rust job now runs clippy
and the tests for inkwell-core and inkwell-ffi before anything is assembled
or published.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 22:35:06 -04:00
co-authored by Claude Opus 5.5
parent 82aa5ba7b6
commit 42db4cde6b
+12 -2
View File
@@ -169,6 +169,16 @@ jobs:
- name: Build the native library and bindings - name: Build the native library and bindings
run: ./gradlew generateUniffiBindings -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }} run: ./gradlew generateUniffiBindings -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }}
# The core ships inside this APK (through android/ffi), so its checks have to
# gate the APK HERE, in this workflow's graph. desktop.yml runs them too, but a
# red run there cannot stop this lane publishing (rule 177, #5237). Host
# target: the crates' own tests, not the cross-compiled .so.
- name: Rust clippy and tests (core and FFI)
working-directory: .
run: |
cargo clippy --locked -p inkwell-core -p inkwell-ffi --all-targets -- -D warnings
cargo test --locked -p inkwell-core -p inkwell-ffi
# The image's PINNED CLIs, not Gradle plugins. ci-rust-android carries both # The image's PINNED CLIs, not Gradle plugins. ci-rust-android carries both
# (M12 step 3) precisely so this lane needs no second image, and going # (M12 step 3) precisely so this lane needs no second image, and going
# through Gradle plugins would mean a second version of each tool resolved # through Gradle plugins would mean a second version of each tool resolved
@@ -185,8 +195,8 @@ jobs:
- name: Unit tests - name: Unit tests
# Host-JVM tests only. Anything touching the core needs an Android # Host-JVM tests only. Anything touching the core needs an Android
# runtime to load the .so, so those are instrumented tests and belong on # runtime to load the .so, so those are instrumented tests and belong on
# an emulator, not here — the Rust side is covered by the workspace # an emulator, not here — the Rust side is covered by the cargo step
# tests in the desktop lane. # above.
# #
# DEBUG regardless of what is being packaged: AGP creates unit-test tasks # DEBUG regardless of what is being packaged: AGP creates unit-test tasks
# only for `testBuildType`, which is debug, so `testReleaseUnitTest` does # only for `testBuildType`, which is debug, so `testReleaseUnitTest` does