name: CI on: [push, pull_request] jobs: build: name: Build Smack runs-on: ubuntu-24.04 strategy: matrix: java: - 17 - 21 env: PRIMARY_JAVA_VERSION: 21 steps: - name: Checkout uses: actions/checkout@v3 - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} distribution: temurin # Caches - name: Cache Maven uses: actions/cache@v2 with: path: ~/.m2/repository key: maven-${{ hashFiles('**/build.gradle') }} restore-keys: | maven- - name: Cache Gradle uses: actions/cache@v2 with: path: ~/.gradle/caches key: gradle-caches-${{ hashFiles('**/build.gradle') }} restore-keys: gradle-caches - name: Cache Android SDK uses: actions/cache@v2 with: path: | ~/.android/sdk key: android-${{ hashFiles('build.gradle') }} restore-keys: | android- # Pre-reqs - name: Install GraphViz run: sudo apt update && sudo apt install graphviz - name: Install Android SDK Manager uses: android-actions/setup-android@v3 - name: Install Android SDK run: | sdkmanager "platforms;android-26" # Testing - name: Gradle Check run: ./gradlew check --stacktrace # Test local publish - name: Gradle publish run: ./gradlew publishToMavenLocal --stacktrace # Javadoc - name: Javadoc if: ${{ matrix.java == env.PRIMARY_JAVA_VERSION }} run: ./gradlew javadocAll --stacktrace # Test Coverage Report - name: Aggregated Jacoco Test Coverage Report if: ${{ matrix.java == env.PRIMARY_JAVA_VERSION }} run: | ./gradlew smack-java11-full:testCodeCoverageReport # Coveralls - name: Report coverage stats to Coveralls if: ${{ matrix.java == env.PRIMARY_JAVA_VERSION }} uses: coverallsapp/github-action@v2 with: format: jacoco file: smack-java11-full/build/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml # Upload build artifacts - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: smack-java-${{ matrix.java }} path: | smack-*/build/libs/*.jar !**/*-test-fixtures.jar !**/*-tests.jar