From 1b8ae8397a16995ebae4aaf772a1310f41a01270 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 ++++++++- .../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 | 14 +++++++++++--- packaging/windows/mxe-based-build.sh | 8 +++----- 13 files changed, 71 insertions(+), 15 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 2458489c4..e7570f5db 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 ${BUILD_EXTRA_ARGS} -buildnr $BUILDNR -canonicalversion $VERSION -canonicalversion_4 $VERSION_4 - name: delete the keystore if: github.event_name == 'push' diff --git a/.github/workflows/ios.yml.disabled b/.github/workflows/ios.yml.disabled index e84f9b351..a895cd86d 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 741896134..980ee36ed 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 987576f7a..d14254ddd 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 8c2780472..2e93f2adb 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 7fdbb71d0..163b83705 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 6116ce003..6a2efef38 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 c89770038..e737ccba8 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 ddbc27768..a1fead73b 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 632606a56..46f237365 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 06b17dc1d..2416c4c6c 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 c4601f118..d8d305dea 100755 --- a/packaging/windows/in-container-build.sh +++ b/packaging/windows/in-container-build.sh @@ -13,9 +13,17 @@ set -e mkdir -p win32 cd win32 +BUILD_EXTRA_ARGS="debug" +SMTK2SSRF_EXTRA_ARGS="-b debug" +if [[ "$1" == "-release" ]]; then + BUILD_EXTRA_ARGS="" + SMTK2SSRF_BUILD_EXTRA_ARGS="release" + 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,9 +33,9 @@ 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 +bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh ${SMTK2SSRF_BUILD_EXTRA_ARGS} -a -i # the strange two step move is in order to get predictable names to use # in the publish step of the GitHub Action diff --git a/packaging/windows/mxe-based-build.sh b/packaging/windows/mxe-based-build.sh index 9da78dec6..0fc52fbd7 100755 --- a/packaging/windows/mxe-based-build.sh +++ b/packaging/windows/mxe-based-build.sh @@ -131,7 +131,6 @@ if [[ "$1" == "debug" ]] ; then RELEASE="Debug" RELEASE_MAIN="Debug" RELEASE_GM="debug" - DLL_SUFFIX="d" shift if [[ -f Release ]] ; then rm -rf * @@ -141,7 +140,6 @@ else RELEASE="Release" RELEASE_MAIN="RelWithDebInfo" RELEASE_GM="release" - DLL_SUFFIX="" if [[ -f Debug ]] ; then rm -rf * fi @@ -281,9 +279,9 @@ done # for some reason we aren't installing Qt5Xml.dll and Qt5Location.dll # I need to figure out why and fix that, but for now just manually copy that as well -EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml$DLL_SUFFIX.dll \ -$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location$DLL_SUFFIX.dll \ -$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript$DLL_SUFFIX.dll" +EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml.dll \ +$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location.dll \ +$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript.dll" for f in $EXTRA_MANUAL_DEPENDENCIES do