2019-10-18 16:32:38 +00:00
|
|
|
name: Android
|
2019-10-26 01:04:01 +00:00
|
|
|
on:
|
|
|
|
push:
|
2024-01-20 12:07:33 +00:00
|
|
|
paths-ignore:
|
|
|
|
- scripts/docker/**
|
2019-10-26 01:04:01 +00:00
|
|
|
branches:
|
|
|
|
- master
|
|
|
|
pull_request:
|
2024-01-20 12:07:33 +00:00
|
|
|
paths-ignore:
|
|
|
|
- scripts/docker/**
|
2019-10-26 01:04:01 +00:00
|
|
|
branches:
|
|
|
|
- master
|
2019-10-18 16:32:38 +00:00
|
|
|
|
2024-01-08 00:27:21 +00:00
|
|
|
env:
|
|
|
|
BUILD_ROOT: ${{ github.workspace }}/..
|
|
|
|
KEYSTORE_FILE: ${{ github.workspace }}/../subsurface.keystore
|
|
|
|
|
2019-10-18 16:32:38 +00:00
|
|
|
jobs:
|
2020-12-11 17:49:40 +00:00
|
|
|
buildAndroid:
|
2019-10-18 16:32:38 +00:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container:
|
2024-01-08 00:27:21 +00:00
|
|
|
image: docker://subsurface/android-build:5.15.2
|
2019-10-18 16:32:38 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: checkout sources
|
2024-01-08 00:27:21 +00:00
|
|
|
uses: actions/checkout@v4
|
2019-10-18 16:32:38 +00:00
|
|
|
|
2024-01-09 23:10:12 +00:00
|
|
|
- name: atomically create or retrieve the build number and assemble release notes
|
2024-01-05 04:44:31 +00:00
|
|
|
id: version_number
|
2023-12-15 22:34:24 +00:00
|
|
|
if: github.event_name == 'push'
|
2023-12-07 05:55:12 +00:00
|
|
|
run: |
|
2024-01-10 15:11:27 +00:00
|
|
|
bash scripts/get-atomic-buildnr.sh ${{ github.sha }} ${{ secrets.NIGHTLY_BUILDS }} "CICD-release"
|
2024-01-11 01:13:17 +00:00
|
|
|
version=$(cat release-version)
|
2024-01-10 21:02:48 +00:00
|
|
|
echo "version=$version" >> $GITHUB_OUTPUT
|
2024-01-05 04:44:31 +00:00
|
|
|
|
2024-01-08 00:27:21 +00:00
|
|
|
- name: store dummy version and build number for non-push build runs
|
|
|
|
if: github.event_name != 'push'
|
2024-01-05 04:44:31 +00:00
|
|
|
run: |
|
|
|
|
echo "100" > latest-subsurface-buildnumber
|
|
|
|
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
|
2023-12-07 05:55:12 +00:00
|
|
|
|
2024-01-08 00:27:21 +00:00
|
|
|
- name: set up the keystore
|
|
|
|
if: github.event_name == 'push'
|
|
|
|
run: |
|
|
|
|
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > $KEYSTORE_FILE
|
|
|
|
|
2019-10-18 16:32:38 +00:00
|
|
|
- name: run build
|
2023-12-07 05:55:12 +00:00
|
|
|
id: build
|
2019-10-18 16:32:38 +00:00
|
|
|
run: |
|
2020-11-19 20:55:39 +00:00
|
|
|
# this is rather awkward, but it allows us to use the preinstalled
|
|
|
|
# Android and Qt versions with relative paths
|
2024-01-08 00:27:21 +00:00
|
|
|
cd $BUILD_ROOT
|
2020-11-19 20:55:39 +00:00
|
|
|
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 .
|
2020-12-03 18:49:15 +00:00
|
|
|
git config --global user.email "ci@subsurface-divelog.org"
|
|
|
|
git config --global user.name "Subsurface CI"
|
2024-01-08 00:27:21 +00:00
|
|
|
git config --global --add safe.directory $GITHUB_WORKSPACE
|
|
|
|
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
|
2024-01-03 05:15:53 +00:00
|
|
|
# get the build number via curl so this works both for a pull request as well as a push
|
2024-01-08 00:27:21 +00:00
|
|
|
BUILDNR=$(curl -q https://raw.githubusercontent.com/subsurface/nightly-builds/main/latest-subsurface-buildnumber)
|
2024-01-10 21:42:09 +00:00
|
|
|
export OUTPUT_DIR="$GITHUB_WORKSPACE"
|
|
|
|
export KEYSTORE_FILE="$KEYSTORE_FILE"
|
|
|
|
export KEYSTORE_PASSWORD="pass:${{ secrets.ANDROID_KEYSTORE_PASSWORD }}"
|
|
|
|
export KEYSTORE_ALIAS="${{ secrets.ANDROID_KEYSTORE_ALIAS }}"
|
2024-01-09 18:25:23 +00:00
|
|
|
bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr ${BUILDNR}
|
2019-10-18 16:32:38 +00:00
|
|
|
|
2023-12-07 18:10:23 +00:00
|
|
|
# only publish a 'release' on push events (those include merging a PR)
|
2023-12-07 05:55:12 +00:00
|
|
|
- name: upload binaries
|
2023-12-07 18:10:23 +00:00
|
|
|
if: github.event_name == 'push'
|
2023-12-07 05:55:12 +00:00
|
|
|
uses: softprops/action-gh-release@v1
|
|
|
|
with:
|
2024-01-10 21:02:48 +00:00
|
|
|
tag_name: v${{ steps.version_number.outputs.version }}
|
2024-01-11 00:03:11 +00:00
|
|
|
repository: ${{ github.repository_owner }}/nightly-builds
|
2023-12-11 00:35:16 +00:00
|
|
|
token: ${{ secrets.NIGHTLY_BUILDS }}
|
|
|
|
prerelease: false
|
|
|
|
fail_on_unmatched_files: true
|
2023-12-07 05:55:12 +00:00
|
|
|
files: |
|
2024-01-11 00:08:48 +00:00
|
|
|
Subsurface-mobile-${{ steps.version_number.outputs.version }}.apk
|
2024-01-08 00:27:21 +00:00
|
|
|
|
|
|
|
- name: delete the keystore
|
|
|
|
if: github.event_name == 'push'
|
|
|
|
run: |
|
|
|
|
rm $KEYSTORE_FILE
|