2019-10-18 09:32:38 -07:00
name : Android
2019-10-25 21:04:01 -04:00
on :
push :
branches :
- master
pull_request :
branches :
- master
2019-10-18 09:32:38 -07:00
2024-01-08 13:27:21 +13:00
env :
BUILD_ROOT : ${{ github.workspace }}/..
KEYSTORE_FILE : ${{ github.workspace }}/../subsurface.keystore
2019-10-18 09:32:38 -07:00
jobs :
2020-12-11 09:49:40 -08:00
buildAndroid :
2019-10-18 09:32:38 -07:00
runs-on : ubuntu-latest
container :
2024-01-08 13:27:21 +13:00
image : docker://subsurface/android-build:5.15.2
2019-10-18 09:32:38 -07:00
steps :
- name : checkout sources
2024-01-08 13:27:21 +13:00
uses : actions/checkout@v4
2019-10-18 09:32:38 -07:00
2023-12-10 20:04:45 -08:00
- name : atomically create or retrieve the build number
2024-01-04 20:44:31 -08:00
id : version_number
2023-12-16 11:34:24 +13:00
if : github.event_name == 'push'
2023-12-07 14:55:12 +09:00
run : |
2024-01-08 13:27:21 +13:00
cd $BUILD_ROOT # check out parallel to subsurface sources
2023-12-10 20:04:45 -08:00
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
# the clone followed by the pointless push should verify that the password is stored in the config
# that way the script doesn't need the password
git clone -b main https://github.com/subsurface/nightly-builds
2024-01-08 20:16:46 +13:00
cd nightly-builds
2023-12-10 20:04:45 -08:00
git remote set-url origin "$url"
git push origin main
2024-01-08 20:16:46 +13:00
cd ..
2023-12-10 20:04:45 -08:00
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
2024-01-04 20:44:31 -08:00
cp nightly-builds/latest-subsurface-buildnumber subsurface
echo "CICD-release" > subsurface/latest-subsurface-buildnumber-extension
version=$(bash subsurface/scripts/get-version)
echo "version=$version" >> $GITHUB_OUTPUT
2024-01-08 13:27:21 +13:00
- name : store dummy version and build number for non-push build runs
if : github.event_name != 'push'
2024-01-04 20:44:31 -08:00
run : |
echo "100" > latest-subsurface-buildnumber
echo "CICD-pull-request" > latest-subsurface-buildnumber-extension
2023-12-07 14:55:12 +09:00
2024-01-08 13:27:21 +13:00
- name : set up the keystore
if : github.event_name == 'push'
run : |
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > $KEYSTORE_FILE
2019-10-18 09:32:38 -07:00
- name : run build
2023-12-07 14:55:12 +09:00
id : build
2019-10-18 09:32:38 -07: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 13:27:21 +13: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 .
2019-10-18 09:32:38 -07:00
ls -l
2020-12-03 10:49:15 -08:00
git config --global user.email "ci@subsurface-divelog.org"
git config --global user.name "Subsurface CI"
2024-01-08 13:27:21 +13:00
git config --global --add safe.directory $GITHUB_WORKSPACE
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
2024-01-02 21:15:53 -08:00
# get the build number via curl so this works both for a pull request as well as a push
2024-01-08 13:27:21 +13:00
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}
2019-10-18 09:32:38 -07:00
2023-12-07 10:10:23 -08:00
# only publish a 'release' on push events (those include merging a PR)
2023-12-07 14:55:12 +09:00
- name : upload binaries
2023-12-07 10:10:23 -08:00
if : github.event_name == 'push'
2023-12-07 14:55:12 +09:00
uses : softprops/action-gh-release@v1
with :
2023-12-10 20:04:45 -08:00
tag_name : v${{ steps.version_number.outputs.version }}
2023-12-10 16:35:16 -08:00
repository : subsurface/nightly-builds
token : ${{ secrets.NIGHTLY_BUILDS }}
prerelease : false
fail_on_unmatched_files : true
2023-12-07 14:55:12 +09:00
files : |
2023-12-07 02:53:14 -08:00
Subsurface-mobile*.apk
2023-12-10 17:00:29 -08:00
body : |
CICD release artifact
These builds are created on every merge or push into the [Subsurface repo](http://github.com/subsurface/subsurface).
2024-01-08 23:15:04 +13:00
This build is based on changeset ${{ github.event.head_commit.id }} ([link](${{ github.event.head_commit.url }})):
${{ github.event.head_commit.message }}
2023-12-10 17:00:29 -08:00
2024-01-08 13:27:21 +13:00
None of these artifacts are signed with an official key.
2023-12-10 17:00:29 -08:00
The Android APK can be side-loaded on most Android devices. If you had a previous Subsurface-mobile version installed from the Google Play store, you'll have to uninstall that first.
The Windows installer will ask you to confirm installation of an app from an unknown developer.
The macOS DMG makes it even harder with a multi-step dance that requires opening the Privacy & Security settings in the System Preferences and explicitly confirming that you are willing to install this app.
You can find similar Subsurface-Daily builds for [Ubuntu](https://ppa.launchpadcontent.net/subsurface) and Subsurface-test for [Fedora](https://copr.fedorainfracloud.org/coprs/dirkhh/Subsurface-test).
2024-01-08 23:15:04 +13:00
**Note:** Due to the asynchronous nature of our build process the artifacts for the individual platforms are added to the release one by one, whenever their build is finished. So if you can not find a particular artifact on a recent (less than 2 hours old) build, please come back later and check again.
2023-12-10 17:00:29 -08:00
Please report any issues with these builds in the [Subsurface user forum](https://groups.google.com/g/subsurface-divelog).
2024-01-08 13:27:21 +13:00
- name : delete the keystore
if : github.event_name == 'push'
run : |
rm $KEYSTORE_FILE