name: Android on: push: paths-ignore: - scripts/docker/** branches: - master pull_request: paths-ignore: - scripts/docker/** branches: - master jobs: build: env: KEYSTORE_FILE: ${{ github.workspace }}/../subsurface.keystore runs-on: ubuntu-latest container: image: docker://subsurface/android-build:5.15.2 steps: - name: checkout sources uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: set the version information id: version_number uses: ./.github/actions/manage-version with: nightly-builds-secret: ${{ secrets.NIGHTLY_BUILDS }} - name: set up the keystore if: github.event_name == 'push' env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} run: | echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > $KEYSTORE_FILE - name: run build id: build env: ANDROID_KEYSTORE_PASSWORD: pass:${{ secrets.ANDROID_KEYSTORE_PASSWORD }} KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }} BUILDNR: ${{ steps.version_number.outputs.buildnr }} run: | # this is rather awkward, but it allows us to use the preinstalled # Android and Qt versions with relative paths cd .. ln -s /android/5.15.* . ln -s /android/build-tools . ln -s /android/cmdline-tools . ln -s /android/ndk . ln -s /android/platform-tools . ln -s /android/platforms . ln -s /android/tools . git config --global user.email "ci@subsurface-divelog.org" git config --global user.name "Subsurface CI" git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer # get the build number via curl so this works both for a pull request as well as a push export OUTPUT_DIR="$GITHUB_WORKSPACE" bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr $BUILDNR - name: delete the keystore if: github.event_name == 'push' run: | rm $KEYSTORE_FILE - name: publish pull request artifacts if: github.event_name == 'pull_request' uses: actions/upload-artifact@v4 with: name: Subsurface-Android-${{ steps.version_number.outputs.version }} path: Subsurface-mobile-*.apk # only publish a 'release' on push events (those include merging a PR) - name: upload binaries if: github.event_name == 'push' uses: softprops/action-gh-release@v1 with: tag_name: v${{ steps.version_number.outputs.version }} repository: ${{ github.repository_owner }}/nightly-builds token: ${{ secrets.NIGHTLY_BUILDS }} prerelease: false fail_on_unmatched_files: true files: | Subsurface-mobile-${{ steps.version_number.outputs.version }}.apk