ci: modernize GitHub Actions pipeline and enforce tri-layer code quality - #31
Merged
Merged
Conversation
…id Lint and ktlint
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary of CI/CD Modernization & Tri-Layer Code Quality
This pull request modernizes the continuous integration (CI) pipeline and activates robust code quality tooling across all three architecture layers of tucaVR (Rust, C++, and Kotlin/Android). It eliminates suppressed checks and restructures the CI workflow into fast, decoupled parallel jobs in accordance with industry best practices (ALVR, Android/Media3) and the GitHub Actions platform guidelines.
Key Changes by Component
1. Rust Layer (
rust/)--all-targetsFixes: Resolved 4 latent Clippy warnings in network integration tests (dash::stream,hls::segment,http,prefetch) that were previously masked because--all-targetswas not run.cargo fmt.rust/deny.tomlwith workspace crate clarifications to enforce allowed open-source licenses (MIT, Apache-2.0, BSD, ISC, etc.), scan for dependencies, and reject duplicate crate versions via standalonecargo-denycheck (licenses,bans,sources).2. Native C++ & Shaders (
native/).clang-format(C++20, 4-space indent) and formatted all project headers and host tests.scripts/check-shaders.shto validate the syntax of all 20 Vulkan shaders (.vert,.frag) on host CI usingglslc/glslangValidatorwithout requiring full APK compilation.scripts/test-native-host.shwith AddressSanitizer (ASan) and UndefinedBehaviorSanitizer (UBSan) viaENABLE_ASAN=1to detect memory leaks and undefined behavior during CI execution.vr_player_app_vulkan.cppwherescene.screenPoswas incorrectly referenced instead ofscene.screenCenter.3. Android / Kotlin Layer (
app/)NewApiviolation inThermalMonitor.ktby usingContextCompat.getMainExecutor(context)for backwards-compatible execution on Android 8.0/8.1 (minSdk = 26).android.lintin Gradle withbaseline = file("lint-baseline.xml")andabortOnError = trueto catch future regressions in API levels, resource usage, and security.org.jlleitschuh.gradle.ktlintGradle plugin with a baseline, turningktlintCheckinto an active, functional quality gate.4. GitHub Actions CI Pipeline (
.github/workflows/main.yml)build-and-lintjob with 4 concurrent quality jobs plus the Quest 3 APK build:security-and-workflows: Runsactionlint(workflow static analysis),cargo-deny, andgitleaks(secret scanning).rust-checks: Runsrustfmt --check,cargo clippy --all-targets --all-features, and host unit tests.cpp-checks: Runsclang-format,check-shaders.sh, and native unit tests with ASan.android-checks: RunsktlintCheck,lintDebug, and Kotlin JVM unit tests (testDebugUnitTest).build-apk: Full unified compilation of Rust + C++ + Android into Quest 3 APK.permissions: {}globally, explicit per-job permissions, pinned runners (ubuntu-24.04), and smart concurrency cancellation on pull requests.Verification
Security & Workflows: PASS (16s)C++ Native & Shaders: PASS (17s)Rust Quality & Tests: PASS (2m 4s)Android Lint & JVM Tests: PASS (3m 27s)Build Quest 3 APK: PASS (8m 7s)cargo clippy -p protocols -p media-logic --all-targets --all-features -- -D warnings(PASS)cargo test -p protocols -p media-logic(PASS)./scripts/check-shaders.sh(PASS, 20/20 shaders compiled)./gradlew ktlintCheck lintDebug testDebugUnitTest(PASS)