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' pull_request: branches: - '**' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} 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