name: Android CI/CD env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: name: Build & Test Android App runs-on: ubuntu-latest steps: - name: Checkout Source Code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Grant Execute Permission for Gradlew run: chmod +x gradlew - name: Install ktlint run: | curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.2.1/ktlint chmod +x ktlint sudo mv ktlint /usr/local/bin/ - name: Run Code Style Check (ktlint) run: ./gradlew ktlintCheck - name: Run Android Lint (Static Analysis) run: ./gradlew lintDebug - name: Run Unit & Integration Tests run: ./gradlew test - name: Build Debug APK run: ./gradlew assembleDebug - name: Upload Test & Lint Reports uses: actions/upload-artifact@v4 if: always() with: name: verification-reports path: | app/build/reports/tests/ app/build/reports/lint-results-debug.html app/build/reports/ktlint/ retention-days: 7 - name: Upload Debug APK Artifact uses: actions/upload-artifact@v4 if: success() with: name: hermescontrol-debug-apk path: app/build/outputs/apk/debug/app-debug.apk if-no-files-found: error retention-days: 7