name: android # Android build environments (docker/noble/android/rtabmap_apiXX). # amd64 only, so a single native runner and no manifest juggling. # Note: these build FROM introlab3it/rtabmap:android-noble-deps, which is not # produced by any workflow; it is still built and pushed by hand. on: push: branches: - 'master' paths: &android_paths # What an Android build actually compiles: CMakeLists.txt adds only # utilite, corelib and app under IF(ANDROID), and rtabmap.bash builds with # WITH_OPENGV=OFF, BUILD_EXAMPLES=OFF, BUILD_TOOLS=OFF. - 'CMakeLists.txt' - 'Version.h.in' - 'RTABMapConfig.cmake.in' - 'cmake_uninstall.cmake.in' - 'cmake_modules/**' - 'utilite/**' - 'corelib/**' - 'app/**' - 'docker/noble/android/**' - '.github/workflows/android.yml' pull_request: branches: - '**' paths: *android_paths workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: docker: # A manual dispatch is honored only on master, the only ref we push from. if: ${{ github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: docker_tag: [android23, android24, android26, android30] include: - docker_tag: android23 docker_tags: | introlab3it/rtabmap:android23 introlab3it/rtabmap:tango api_version: 23 - docker_tag: android24 docker_tags: | introlab3it/rtabmap:android24 api_version: 24 - docker_tag: android26 docker_tags: | introlab3it/rtabmap:android26 api_version: 26 - docker_tag: android30 docker_tags: | introlab3it/rtabmap:android30 api_version: 30 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub # Only needed when pushing; skipped on pull requests (secrets are # unavailable for fork PRs and we don't push there anyway). if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: . push: ${{ github.event_name != 'pull_request' }} platforms: linux/amd64 file: ./docker/noble/android/rtabmap_apiXX/Dockerfile build-args: | API_VERSION=${{ matrix.api_version }} tags: ${{ matrix.docker_tags }} cache-from: type=registry,ref=introlab3it/rtabmap:${{ matrix.docker_tag }} cache-to: type=inline