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@ike.ch>
This commit is contained in:
Michael Keller 2024-11-23 10:31:16 +13:00
parent 91d8bfef55
commit 015ac0e459
14 changed files with 71 additions and 17 deletions

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
build: build:
@ -49,6 +50,12 @@ jobs:
VERSION: ${{ steps.version_number.outputs.version }} VERSION: ${{ steps.version_number.outputs.version }}
VERSION_4: ${{ steps.version_number.outputs.version_4 }} VERSION_4: ${{ steps.version_number.outputs.version_4 }}
run: | 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 # this is rather awkward, but it allows us to use the preinstalled
# Android and Qt versions with relative paths # Android and Qt versions with relative paths
cd .. cd ..
@ -65,7 +72,7 @@ jobs:
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer 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 # get the build number via curl so this works both for a pull request as well as a push
export OUTPUT_DIR="$GITHUB_WORKSPACE" 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 - name: delete the keystore
if: github.event_name == 'push' if: github.event_name == 'push'

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
build: build:
@ -45,12 +46,18 @@ jobs:
env: env:
VERSION: ${{ steps.version_number.outputs.version }} VERSION: ${{ steps.version_number.outputs.version }}
run: | run: |
BUILD_EXTRA_ARGS=""
if [ "${GITHUB_EVENT_NAME}" = "push" ]; then
echo "Building a release version"
BUILD_EXTRA_ARGS="${BUILD_EXTRA_ARGS} -release"
fi
cd .. cd ..
git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
export IOS_QT=$GITHUB_WORKSPACE/qt-ios export IOS_QT=$GITHUB_WORKSPACE/qt-ios
echo "build for simulator" 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 # 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 mv build-Subsurface-mobile-Qt_5_14_1_for_iOS-Release/Release-iphonesimulator/Subsurface-mobile.app $GITHUB_WORKSPACE/Subsurface-mobile-$VERSION.app

View file

@ -71,9 +71,15 @@ jobs:
echo "--------------------------------------------------------------" echo "--------------------------------------------------------------"
echo "building desktop" 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) # now build for the desktop version (including WebKit)
cd .. 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 - name: test desktop build
run: | run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
do-build-test: do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
build: build:
@ -52,12 +53,18 @@ jobs:
echo "--------------------------------------------------------------" echo "--------------------------------------------------------------"
echo "building desktop" 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) # now build for the desktop version (without WebKit)
cd .. cd ..
git config --global --add safe.directory $GITHUB_WORKSPACE git config --global --add safe.directory $GITHUB_WORKSPACE
git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer git config --global --add safe.directory $GITHUB_WORKSPACE/libdivecomputer
git config --global --get-all safe.directory 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 - name: test desktop build
run: | run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
build: build:
@ -60,9 +61,15 @@ jobs:
echo "--------------------------------------------------------------" echo "--------------------------------------------------------------"
echo "building desktop" 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 # now build the appimage
cd .. 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 - name: test desktop build
run: | run: |

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
do-build-test: do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
do-build-test: do-build-test:

View file

@ -11,6 +11,7 @@ on:
- scripts/docker/** - scripts/docker/**
branches: branches:
- master - master
workflow_dispatch:
jobs: jobs:
do-build-test: do-build-test:

View file

@ -44,6 +44,12 @@ jobs:
env: env:
CANONICALVERSION: ${{ steps.version_number.outputs.version }} CANONICALVERSION: ${{ steps.version_number.outputs.version }}
run: | 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}/.. cd ${GITHUB_WORKSPACE}/..
export QT_ROOT=${GITHUB_WORKSPACE}/qt-mac/Qt5.15.15 export QT_ROOT=${GITHUB_WORKSPACE}/qt-mac/Qt5.15.15
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
@ -51,7 +57,7 @@ jobs:
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
# now setup Subsurface with WebKit and build the dependencies, using the generic build script # 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" echo "finished initial cmake setup of Subsurface - next build the package"
cd subsurface/build cd subsurface/build

View file

@ -47,9 +47,15 @@ jobs:
CANONICALVERSION: ${{ steps.version_number.outputs.version }} CANONICALVERSION: ${{ steps.version_number.outputs.version }}
CANONICALVERSION_4: ${{ steps.version_number.outputs.version_4 }} CANONICALVERSION_4: ${{ steps.version_number.outputs.version_4 }}
run: | 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" export OUTPUT_DIR="$GITHUB_WORKSPACE"
cd /win 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 grep "Built target installer" build.log
- name: publish pull request artifacts - name: publish pull request artifacts

View file

@ -13,9 +13,17 @@ set -e
mkdir -p win32 mkdir -p win32
cd win32 cd win32
BUILD_EXTRA_ARGS="debug"
SMTK2SSRF_EXTRA_ARGS="-b debug"
if [[ "$1" == "-release" ]]; then
BUILD_EXTRA_ARGS=""
SMTK2SSRF_BUILD_EXTRA_ARGS="-b release"
shift
fi
# build Subsurface # build Subsurface
export MXEBUILDTYPE=x86_64-w64-mingw32.shared 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 # the strange two step move is in order to get predictable names to use
# in the publish step of the GitHub Action # in the publish step of the GitHub Action
@ -27,7 +35,7 @@ mv subsurface/"$fullname" ${OUTPUT_DIR}/"${fullname%.exe}-installer.exe"
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw subsurface bash -ex ../subsurface/packaging/windows/mxe-based-build.sh -noftdi -nolibraw 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 # the strange two step move is in order to get predictable names to use
# in the publish step of the GitHub Action # in the publish step of the GitHub Action

View file

@ -131,7 +131,6 @@ if [[ "$1" == "debug" ]] ; then
RELEASE="Debug" RELEASE="Debug"
RELEASE_MAIN="Debug" RELEASE_MAIN="Debug"
RELEASE_GM="debug" RELEASE_GM="debug"
DLL_SUFFIX="d"
shift shift
if [[ -f Release ]] ; then if [[ -f Release ]] ; then
rm -rf * rm -rf *
@ -141,7 +140,6 @@ else
RELEASE="Release" RELEASE="Release"
RELEASE_MAIN="RelWithDebInfo" RELEASE_MAIN="RelWithDebInfo"
RELEASE_GM="release" RELEASE_GM="release"
DLL_SUFFIX=""
if [[ -f Debug ]] ; then if [[ -f Debug ]] ; then
rm -rf * rm -rf *
fi fi
@ -281,9 +279,9 @@ done
# for some reason we aren't installing Qt5Xml.dll and Qt5Location.dll # 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 # 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 \ EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Xml.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location$DLL_SUFFIX.dll \ $BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5Location.dll \
$BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript$DLL_SUFFIX.dll" $BASEDIR/"$MXEDIR"/usr/"$MXEBUILDTYPE"/qt5/bin/Qt5QmlWorkerScript.dll"
for f in $EXTRA_MANUAL_DEPENDENCIES for f in $EXTRA_MANUAL_DEPENDENCIES
do do

View file

@ -124,12 +124,10 @@ else
fi fi
case "$RELEASE" in case "$RELEASE" in
debug|Debug) RELEASE=Debug debug|Debug) RELEASE=Debug
DLL_SUFFIX="d"
[[ -f Release ]] && rm -rf ./* [[ -f Release ]] && rm -rf ./*
touch Debug touch Debug
;; ;;
release|Release) RELEASE=Release release|Release) RELEASE=Release
DLL_SUFFIX=""
[[ -f Debug ]] && rm -rf ./* [[ -f Debug ]] && rm -rf ./*
touch Release touch Release
;; ;;
@ -175,7 +173,7 @@ $BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/plugins/platforms"
# This comes from subsurface's mxe-based-build.sh. I'm not sure it is necessary # This comes from subsurface's mxe-based-build.sh. I'm not sure it is necessary
# but, well, it doesn't hurt. # but, well, it doesn't hurt.
EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml$DLL_SUFFIX.dll" EXTRA_MANUAL_DEPENDENCIES="$BASEDIR/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin/Qt5Xml.dll"
STAGING_DIR=$BUILDDIR/smtk-import/staging STAGING_DIR=$BUILDDIR/smtk-import/staging