From 045353d68178ef39a1377d3ba3a3e1ea987cef0e Mon Sep 17 00:00:00 2001 From: Michael Keller Date: Sat, 23 Nov 2024 10:31:16 +1300 Subject: [PATCH] CICD: Build Release Versions on Push. 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/workflows/android.yml | 9 ++++++++- .github/workflows/ios.yml.disabled | 9 ++++++++- .github/workflows/linux-debian-generic.yml | 8 +++++++- .github/workflows/linux-debian-trixie-5.15.yml | 1 + .github/workflows/linux-fedora-35-qt6.yml | 9 ++++++++- .github/workflows/linux-ubuntu-20.04-qt5-appimage.yml | 9 ++++++++- .github/workflows/linux-ubuntu-20.04-qt5.yml | 1 + .github/workflows/linux-ubuntu-22.04-qt5.yml | 1 + .github/workflows/linux-ubuntu-24.04-qt5.yml | 1 + .github/workflows/mac.yml | 8 +++++++- .github/workflows/windows.yml | 8 +++++++- packaging/windows/in-container-build.sh | 10 ++++++++-- 12 files changed, 65 insertions(+), 9 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 2458489c41..a14bd294d4 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -49,6 +50,12 @@ jobs: 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 .. @@ -65,7 +72,7 @@ jobs: 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 -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4 + bash -x ./subsurface/packaging/android/qmake-build.sh -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4 ${BUILD_EXTRA_ARGS} - name: delete the keystore if: github.event_name == 'push' diff --git a/.github/workflows/ios.yml.disabled b/.github/workflows/ios.yml.disabled index e84f9b3511..a895cd86d2 100644 --- a/.github/workflows/ios.yml.disabled +++ b/.github/workflows/ios.yml.disabled @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -45,12 +46,18 @@ jobs: env: VERSION: ${{ steps.version_number.outputs.version }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + cd .. git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer export IOS_QT=$GITHUB_WORKSPACE/qt-ios echo "build for simulator" - bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator + bash -x $GITHUB_WORKSPACE/packaging/ios/build.sh -simulator ${BUILD_EXTRA_ARGS} # We need this in order to be able to access the file and publish it mv build-Subsurface-mobile-Qt_5_14_1_for_iOS-Release/Release-iphonesimulator/Subsurface-mobile.app $GITHUB_WORKSPACE/Subsurface-mobile-$VERSION.app diff --git a/.github/workflows/linux-debian-generic.yml b/.github/workflows/linux-debian-generic.yml index 7418961348..980ee36ed4 100644 --- a/.github/workflows/linux-debian-generic.yml +++ b/.github/workflows/linux-debian-generic.yml @@ -71,9 +71,15 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build for the desktop version (including WebKit) cd .. - bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit + bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-debian-trixie-5.15.yml b/.github/workflows/linux-debian-trixie-5.15.yml index 987576f7a3..d14254ddda 100644 --- a/.github/workflows/linux-debian-trixie-5.15.yml +++ b/.github/workflows/linux-debian-trixie-5.15.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-fedora-35-qt6.yml b/.github/workflows/linux-fedora-35-qt6.yml index 8c2780472a..2e93f2adb3 100644 --- a/.github/workflows/linux-fedora-35-qt6.yml +++ b/.github/workflows/linux-fedora-35-qt6.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -52,12 +53,18 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build for the desktop version (without WebKit) cd .. git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer git config --global --get-all safe.directory - bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6 + bash -e -x subsurface/scripts/build.sh -desktop -build-with-qt6 ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml b/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml index 7fdbb71d0d..163b83705b 100644 --- a/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml +++ b/.github/workflows/linux-ubuntu-20.04-qt5-appimage.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: build: @@ -60,9 +61,15 @@ jobs: echo "--------------------------------------------------------------" echo "building desktop" + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + # now build the appimage cd .. - bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit + bash -e -x subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit ${BUILD_EXTRA_ARGS} - name: test desktop build run: | diff --git a/.github/workflows/linux-ubuntu-20.04-qt5.yml b/.github/workflows/linux-ubuntu-20.04-qt5.yml index 6116ce003f..6a2efef38a 100644 --- a/.github/workflows/linux-ubuntu-20.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-20.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-ubuntu-22.04-qt5.yml b/.github/workflows/linux-ubuntu-22.04-qt5.yml index c897700388..e737ccba89 100644 --- a/.github/workflows/linux-ubuntu-22.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-22.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/linux-ubuntu-24.04-qt5.yml b/.github/workflows/linux-ubuntu-24.04-qt5.yml index ddbc277685..a1fead73ba 100644 --- a/.github/workflows/linux-ubuntu-24.04-qt5.yml +++ b/.github/workflows/linux-ubuntu-24.04-qt5.yml @@ -11,6 +11,7 @@ on: - scripts/docker/** branches: - master + workflow_dispatch: jobs: do-build-test: diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 632606a562..46f2373655 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -44,6 +44,12 @@ jobs: env: CANONICALVERSION: ${{ steps.version_number.outputs.version }} run: | + BUILD_EXTRA_ARGS="" + if [ "${GITHUB_EVENT_NAME}" = "push" ]; then + echo "Building a release version" + BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release" + fi + cd ${GITHUB_WORKSPACE}/.. export QT_ROOT=${GITHUB_WORKSPACE}/qt-mac/Qt5.15.15 export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins @@ -51,7 +57,7 @@ jobs: export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake # now setup Subsurface with WebKit and build the dependencies, using the generic build script - bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release -build-deps -ftdi -prep-only + bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -build-deps -ftdi -prep-only ${BUILD_EXTRA_ARGS} echo "finished initial cmake setup of Subsurface - next build the package" cd subsurface/build diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 06b17dc1de..2416c4c6cf 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -47,9 +47,15 @@ jobs: CANONICALVERSION: ${{ steps.version_number.outputs.version }} CANONICALVERSION_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 + export OUTPUT_DIR="$GITHUB_WORKSPACE" cd /win - bash -x subsurface/packaging/windows/in-container-build.sh 2>&1 | tee build.log + bash -x subsurface/packaging/windows/in-container-build.sh ${BUILD_EXTRA_ARGS} 2>&1 | tee build.log grep "Built target installer" build.log - name: publish pull request artifacts diff --git a/packaging/windows/in-container-build.sh b/packaging/windows/in-container-build.sh index c4601f1188..7e00c6928c 100755 --- a/packaging/windows/in-container-build.sh +++ b/packaging/windows/in-container-build.sh @@ -13,9 +13,15 @@ set -e mkdir -p win32 cd win32 +BUILD_EXTRA_ARGS="debug" +if [[ "$1" == "-release" ]]; then + BUILD_EXTRA_ARGS="" + shift +fi + # build Subsurface export MXEBUILDTYPE=x86_64-w64-mingw32.shared -bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer +bash -ex ../subsurface/packaging/windows/mxe-based-build.sh ${BUILD_EXTRA_ARGS} installer # the strange two step move is in order to get predictable names to use # in the publish step of the GitHub Action @@ -25,7 +31,7 @@ mv subsurface/"$fullname" ${OUTPUT_DIR}/"${fullname%.exe}-installer.exe" # build Subsurface for smtk2ssrf -bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw subsurface +bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw ${BUILD_EXTRA_ARGS} subsurface bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh -a -i