mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Some experimentation showed what should have been obvious. The release information is additive. So it's enough if ONE of the actions creates release notes, all the others can simply add additional release artifacts. To make this more obvious, this commit creates a new action that does nothing but create the release notes and publish the release. Since it really doesn't do anything else, it's likely to be the quickest to complete, but that doesn't matter - the last action that has a body or body_path in the gh-release action determines the release notes. And we now have exactly one action that does so. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
84 lines
2.9 KiB
YAML
84 lines
2.9 KiB
YAML
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: atomically create or retrieve the build number and assemble release notes
|
|
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
|
|
|
|
- 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
|
|
|
|
- name: delete the keystore
|
|
if: github.event_name == 'push'
|
|
run: |
|
|
rm $KEYSTORE_FILE
|