mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Change the builds on push (i.e. pull request merges) to build release versions. This seems to be the correct way to build these, as they are now distributed as the official builds on https://subsurface-divelog.org/. For users wanting to help with debugging, build artifacts on pull requests are available, and these are debug builds. Also adding the option to manually trigger builds, so if needed debug builds can be run on `master`. Signed-off-by: Michael Keller <github@ike.ch>
100 lines
3.3 KiB
YAML
100 lines
3.3 KiB
YAML
name: Android
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- scripts/docker/**
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths-ignore:
|
|
- scripts/docker/**
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
env:
|
|
KEYSTORE_FILE: ${{ github.workspace }}/../subsurface.keystore
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker://subsurface/android-build:5.15.3
|
|
|
|
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:
|
|
KEYSTORE_PASSWORD: pass:${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
|
KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
|
|
BUILDNR: ${{ steps.version_number.outputs.buildnr }}
|
|
VERSION: ${{ steps.version_number.outputs.version }}
|
|
VERSION_4: ${{ steps.version_number.outputs.version_4 }}
|
|
run: |
|
|
BUILD_EXTRA_ARGS=""
|
|
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
|
|
echo "Building a release version"
|
|
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} release"
|
|
fi
|
|
|
|
# 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 ${BUILD_EXTRA_ARGS} -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4
|
|
|
|
- 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@v2
|
|
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
|