name: Android on: push: branches: - master pull_request: branches: - master env: BUILD_ROOT: ${{ github.workspace }}/.. KEYSTORE_FILE: ${{ github.workspace }}/../subsurface.keystore jobs: buildAndroid: runs-on: ubuntu-latest container: image: docker://subsurface/android-build:5.15.2 steps: - name: checkout sources uses: actions/checkout@v4 - name: get pull request information from corresponding merge if: github.event_name == 'push' id: get_pr uses: pablogamboa/action-get-merged-pull-request@v1.1 with: github_token: ${{ secrets.GITHUB_TOKEN }} - name: atomically create or retrieve the build number id: version_number if: github.event_name == 'push' run: | version="$(bash scripts/get-atomic-buildnr.sh ${{ github.sha }} ${{ secrets.NIGHTLY_BUILDS }} "CICD-release")" echo "version=$version" >> $GITHUB_OUTPUT pr_num="${{ steps.get_pr.outputs.number }}" pr_url="${{ steps.get_pr.outputs.html_url }}" pr_title="${{ steps.get_pr.outputs.title }}" commit_id="${{ github.event.head_commit.id }}" commit_url="${{ github.event.head_commit.url }}" bash scripts/create-releasenotes.sh "$pr_num" "$pr_url" "$pr_title" "$commit_id" "$commit_url" - name: store dummy version and build number for non-push build runs if: github.event_name != 'push' run: | echo "100" > latest-subsurface-buildnumber echo "CICD-pull-request" > latest-subsurface-buildnumber-extension - name: set up the keystore if: github.event_name == 'push' run: | echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > $KEYSTORE_FILE - name: run build id: build run: | # this is rather awkward, but it allows us to use the preinstalled # Android and Qt versions with relative paths cd $BUILD_ROOT 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 . ls -l 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 BUILDNR=$(curl -q https://raw.githubusercontent.com/subsurface/nightly-builds/main/latest-subsurface-buildnumber) OUTPUT_DIR="$GITHUB_WORKSPACE" KEYSTORE_FILE="$KEYSTORE_FILE" KEYSTORE_PASSWORD="pass:${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" KEYSTORE_ALIAS="${{ secrets.ANDROID_KEYSTORE_ALIAS }}" bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr ${BUILDNR} # 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: subsurface/nightly-builds token: ${{ secrets.NIGHTLY_BUILDS }} prerelease: false fail_on_unmatched_files: true files: | Subsurface-mobile*.apk body_path: gh_release_notes - name: delete the keystore if: github.event_name == 'push' run: | rm $KEYSTORE_FILE