name: android-ci-pull on: workflow_dispatch: pull_request: branches: - main paths-ignore: - ".gitignore" - "**.md" # ignore other platforms - "platform/darwin/**" - "platform/glfw/**" - "platform/ios/**" - "platform/node/**" - "platform/qt/**" # ignore CI for other platforms - ".github/FUNDING.yml" - ".github/actions/**" - ".github/workflows/android-ci.yml" - ".github/workflows/android-docker-base.yml" - ".github/workflows/android-docker-ndk-r21b.yml" - ".github/workflows/gh-pages-android-api.yml" - ".github/workflows/gh-pages-ios-api.yml" - ".github/workflows/ios-ci.yml" - ".github/workflows/ios-pre-release.yml" - ".github/workflows/ios-release.yml" - ".github/workflows/macos-ci.yml" - ".github/workflows/macos-release.yml" - ".github/workflows/node-ci.yml" - ".github/workflows/node-release.yml" - ".github/workflows/qt-ci-windows.yml" - ".github/workflows/qt-ci.yml" - ".github/workflows/update-gl-js.yml" concurrency: # cancel jobs on PRs only group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: build: runs-on: ubuntu-20.04 defaults: run: working-directory: platform/android container: image: ghcr.io/maplibre/android-ndk-r21b env: LIBSYSCONFCPUS: 8 JOBS: 8 BUILDTYPE: Debug IS_LOCAL_DEVELOPMENT: false MBGL_ANDROID_STL: c++_static steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '11' - name: Setup Android SDK for accepting tool licenses uses: android-actions/setup-android@v2 - name: Cache node modules uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: ~/.npm key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}- ${{ runner.os }}-build- ${{ runner.os }}- - name: npm install run: npm install --ignore-scripts working-directory: platform/android - name: Prepare ccache run: ccache --clear - name: Cache ccache uses: actions/cache@v3 env: cache-name: ccache-v1 with: path: ~/.ccache' key: ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }} restore-keys: | ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }} ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }}-${{ github.ref }} ${{ env.cache-name }}-${{ runner.os }}-${{ github.job }} - name: Clear ccache statistics run: | ccache --zero-stats ccache --max-size=2G ccache --show-stats - name: restore-gradle-cache uses: actions/cache@v3 env: cache-name: gradle-v1 with: path: ~/.gradle' key: ${{ env.cache-name }}-{{ hashFiles 'gradle/dependencies.gradle' }}-{{ hashFiles 'build.gradle' }}-{{ hashFiles 'gradle/wrapper/gradle-wrapper.properties' }}' restore-keys: | - ${{ env.cache-name }} - name: Check code style run: make android-check - name: Run Android unit tests run: make run-android-unit-test - name: Get latest CMake and Ninja uses: lukka/get-cmake@latest with: cmakeVersion: 3.10.2 ninjaVersion: latest - name: Build libmapbox-gl.so for arm-v8 run: | cmake --version make android-lib-arm-v8 - name: Generate Espresso sanity tests run: make test-code-android - name: Store debug artifacts uses: actions/upload-artifact@v3 with: name: debug-artifacts path: | MapboxGLAndroidSDKTestApp/build/outputs/apk/debug MapboxGLAndroidSDK/build/reports/lint-results.html MapboxGLAndroidSDK/lint-baseline.xml MapboxGLAndroidSDKTestApp/build/reports/lint-results.html MapboxGLAndroidSDKTestApp/build/reports/lint-results.xml MapboxGLAndroidSDKTestApp/lint-baseline.xml MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj