From a83349015ac07d0cb3f272cac24aa55954167341 Mon Sep 17 00:00:00 2001 From: =Michael Keller Date: Tue, 7 May 2024 19:27:42 +1200 Subject: [PATCH] CICD: Improve the GitHub Actions for Linux. Do a few things: - add a build for Debian trixie (as discussed in #4182); - add a build for Ubuntu 24.04; - rename the build definitions to match the build names; - update the artifact uploads to use a non-deprecated version of the action, and name the artifact appropriately; - remove a stale workflow file. Signed-off-by: Michael Keller --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/coverity-scan.yml | 4 +- .../workflows/linux-bionic-5.9.yml.disabled | 55 ---------- .../workflows/linux-debian-trixie-5.15.yml | 102 ++++++++++++++++++ ...fedora-qt6.yml => linux-fedora-35-qt6.yml} | 2 +- .github/workflows/linux-snap.yml | 4 +- ...l-5.12.yml => linux-ubuntu-20.04-5.15.yml} | 6 +- ...y-5.15.yml => linux-ubuntu-22.04-5.15.yml} | 6 +- .github/workflows/linux-ubuntu-24.04-5.15.yml | 102 ++++++++++++++++++ .github/workflows/mac.yml | 2 +- .../workflows/{ => scripts}/linux-snap.patch | 0 README.md | 5 +- packaging/headless/HOWTO | 2 +- .../docker/android-build-container/Dockerfile | 2 +- scripts/docker/mxe-build-container/Dockerfile | 2 +- 15 files changed, 223 insertions(+), 73 deletions(-) delete mode 100644 .github/workflows/linux-bionic-5.9.yml.disabled create mode 100644 .github/workflows/linux-debian-trixie-5.15.yml rename .github/workflows/{linux-fedora-qt6.yml => linux-fedora-35-qt6.yml} (99%) rename .github/workflows/{linux-focal-5.12.yml => linux-ubuntu-20.04-5.15.yml} (95%) rename .github/workflows/{linux-jammy-5.15.yml => linux-ubuntu-22.04-5.15.yml} (96%) create mode 100644 .github/workflows/linux-ubuntu-24.04-5.15.yml rename .github/workflows/{ => scripts}/linux-snap.patch (100%) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 74af1dda8..0937a662a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,7 +38,7 @@ jobs: - name: get container ready for build run: | sudo apt-get update - sudo apt-get install -y -q --force-yes \ + sudo apt-get install -y -q \ autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ diff --git a/.github/workflows/coverity-scan.yml b/.github/workflows/coverity-scan.yml index 788af6313..e70f443ac 100644 --- a/.github/workflows/coverity-scan.yml +++ b/.github/workflows/coverity-scan.yml @@ -16,8 +16,8 @@ jobs: - name: add build dependencies run: | apt-get update - apt-get upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y -q --force-yes \ + apt-get dist-upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ wget curl \ autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ diff --git a/.github/workflows/linux-bionic-5.9.yml.disabled b/.github/workflows/linux-bionic-5.9.yml.disabled deleted file mode 100644 index 702cc7f7d..000000000 --- a/.github/workflows/linux-bionic-5.9.yml.disabled +++ /dev/null @@ -1,55 +0,0 @@ -name: Ubuntu 18.04 / Qt 5.9-- -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - buildOnBionic: - runs-on: ubuntu-18.04 - container: - image: ubuntu:18.04 # yes, this looks redundant, but something is messed up with their Ubuntu image that causes our builds to fail - - steps: - - name: checkout sources - uses: actions/checkout@v1 - - - name: add build dependencies - run: | - apt update - apt install -y \ - autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ - libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ - libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ - libtool libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make \ - pkg-config qml-module-qtlocation qml-module-qtpositioning \ - qml-module-qtquick2 qt5-default qt5-qmake qtchooser qtconnectivity5-dev \ - qtdeclarative5-dev qtdeclarative5-private-dev qtlocation5-dev \ - qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \ - qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev - - - name: store dummy version and build number for pull request - if: github.event_name == 'pull_request' - run: | - echo "6.0.100" > latest-subsurface-buildnumber - - - name: build Subsurface - env: - SUBSURFACE_REPO_PATH: ${{ github.workspace }} - run: | - cd .. - git config --global --add safe.directory ${SUBSURFACE_REPO_PATH} - git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer - bash -x subsurface/scripts/build.sh -desktop -build-with-webkit - - - name: test desktop build - run: | - # and now run the tests - with Qt 5.9 we can only run the desktop flavor - echo "------------------------------------" - echo "run tests" - cd build/tests - # xvfb-run --auto-servernum ./TestGitStorage -v2 - xvfb-run --auto-servernum make check diff --git a/.github/workflows/linux-debian-trixie-5.15.yml b/.github/workflows/linux-debian-trixie-5.15.yml new file mode 100644 index 000000000..1da921d81 --- /dev/null +++ b/.github/workflows/linux-debian-trixie-5.15.yml @@ -0,0 +1,102 @@ +name: Debian trixie / Qt 5.15-- +on: + push: + paths-ignore: + - scripts/docker/** + branches: + - master + pull_request: + paths-ignore: + - scripts/docker/** + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + container: + image: debian:trixie + + steps: + - name: checkout sources + uses: actions/checkout@v1 + + - name: get container ready for build + env: + SUBSURFACE_REPO_PATH: ${{ github.workspace }} + run: | + echo "--------------------------------------------------------------" + echo "update distro and install dependencies" + + apt-get update + apt-get dist-upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ + autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ + libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ + libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ + libtool libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make \ + pkg-config qml-module-qtlocation qml-module-qtpositioning \ + qml-module-qtquick2 qt5-qmake qtchooser qtconnectivity5-dev \ + qtdeclarative5-dev qtdeclarative5-private-dev qtlocation5-dev \ + qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \ + qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev \ + mdbtools-dev + + git config --global user.email "ci@subsurface-divelog.org" + git config --global user.name "Subsurface CI" + git config --global --add safe.directory ${SUBSURFACE_REPO_PATH} + git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer + + - name: store dummy version and build number for test build + run: | + echo "100" > latest-subsurface-buildnumber + echo "CICD-test-build" > latest-subsurface-buildnumber-extension + + - name: build subsurface-mobile + run: | + echo "--------------------------------------------------------------" + echo "building mobile" + cd .. + bash -e -x subsurface/scripts/build.sh -mobile + + - name: test mobile build + run: | + echo "--------------------------------------------------------------" + echo "running tests for mobile" + + cd build-mobile/tests + # xvfb-run --auto-servernum ./TestGitStorage -v2 + xvfb-run --auto-servernum make check + + - name: build subsurface + run: | + echo "--------------------------------------------------------------" + echo "building desktop" + + # now build for the desktop version (including WebKit) + cd .. + bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit + + - name: test desktop build + run: | + echo "--------------------------------------------------------------" + echo "running tests for desktop" + cd build/tests + # xvfb-run --auto-servernum ./TestGitStorage -v2 + xvfb-run --auto-servernum make check + + - name: build subsurface-downloader + run: | + echo "--------------------------------------------------------------" + echo "building downloader" + cd .. + bash -e -x subsurface/scripts/build.sh -downloader + + - name: build smtk2ssrf + run: | + echo "--------------------------------------------------------------" + echo "building smtk2ssrf" + + # build smtk2ssrf (needs the artefacts generated by the subsurface build + cd .. + bash -e -x subsurface/scripts/smtk2ssrf-build.sh -y diff --git a/.github/workflows/linux-fedora-qt6.yml b/.github/workflows/linux-fedora-35-qt6.yml similarity index 99% rename from .github/workflows/linux-fedora-qt6.yml rename to .github/workflows/linux-fedora-35-qt6.yml index 00ef3e250..65bf82411 100644 --- a/.github/workflows/linux-fedora-qt6.yml +++ b/.github/workflows/linux-fedora-35-qt6.yml @@ -12,7 +12,7 @@ on: - master jobs: - buildFedoraQt6: + build: runs-on: ubuntu-latest container: image: fedora:35 diff --git a/.github/workflows/linux-snap.yml b/.github/workflows/linux-snap.yml index c52113e07..293380c34 100644 --- a/.github/workflows/linux-snap.yml +++ b/.github/workflows/linux-snap.yml @@ -48,7 +48,7 @@ jobs: /snap/bin/lxc profile device add default ccache disk source=${HOME}/.ccache/ path=/root/.ccache # Patch snapcraft.yaml to enable ccache - patch -p1 < .github/workflows/linux-snap.patch + patch -p1 < .github/workflows/scripts/linux-snap.patch # Find common base between master and HEAD to use as cache key. git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules origin master @@ -73,7 +73,7 @@ jobs: - name: Upload the snap if: github.event_name == 'push' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: ${{ steps.build-snap.outputs.snap-name }} path: ${{ steps.build-snap.outputs.snap-path }} diff --git a/.github/workflows/linux-focal-5.12.yml b/.github/workflows/linux-ubuntu-20.04-5.15.yml similarity index 95% rename from .github/workflows/linux-focal-5.12.yml rename to .github/workflows/linux-ubuntu-20.04-5.15.yml index 02cdee9ed..a7c5686b6 100644 --- a/.github/workflows/linux-focal-5.12.yml +++ b/.github/workflows/linux-ubuntu-20.04-5.15.yml @@ -12,7 +12,7 @@ on: - master jobs: - buildUbuntuFocal: + build: runs-on: ubuntu-latest container: image: ubuntu:20.04 @@ -27,8 +27,8 @@ jobs: echo "update distro and install dependencies" apt-get update - apt-get upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y -q --force-yes \ + apt-get dist-upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ diff --git a/.github/workflows/linux-jammy-5.15.yml b/.github/workflows/linux-ubuntu-22.04-5.15.yml similarity index 96% rename from .github/workflows/linux-jammy-5.15.yml rename to .github/workflows/linux-ubuntu-22.04-5.15.yml index 584d61d0c..730326a42 100644 --- a/.github/workflows/linux-jammy-5.15.yml +++ b/.github/workflows/linux-ubuntu-22.04-5.15.yml @@ -12,7 +12,7 @@ on: - master jobs: - buildUbuntuJammy: + build: runs-on: ubuntu-latest container: image: ubuntu:22.04 @@ -29,8 +29,8 @@ jobs: echo "update distro and install dependencies" apt-get update - apt-get upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y -q --force-yes \ + apt-get dist-upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ diff --git a/.github/workflows/linux-ubuntu-24.04-5.15.yml b/.github/workflows/linux-ubuntu-24.04-5.15.yml new file mode 100644 index 000000000..05c7295c3 --- /dev/null +++ b/.github/workflows/linux-ubuntu-24.04-5.15.yml @@ -0,0 +1,102 @@ +name: Ubuntu 24.04 / Qt 5.15-- +on: + push: + paths-ignore: + - scripts/docker/** + branches: + - master + pull_request: + paths-ignore: + - scripts/docker/** + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ubuntu:24.04 + + steps: + - name: checkout sources + uses: actions/checkout@v1 + + - name: get container ready for build + env: + SUBSURFACE_REPO_PATH: ${{ github.workspace }} + run: | + echo "--------------------------------------------------------------" + echo "update distro and install dependencies" + + apt-get update + apt-get dist-upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ + autoconf automake cmake g++ git libcrypto++-dev libcurl4-gnutls-dev \ + libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \ + libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libssl-dev \ + libtool libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make \ + pkg-config qml-module-qtlocation qml-module-qtpositioning \ + qml-module-qtquick2 qt5-qmake qtchooser qtconnectivity5-dev \ + qtdeclarative5-dev qtdeclarative5-private-dev qtlocation5-dev \ + qtpositioning5-dev qtscript5-dev qttools5-dev qttools5-dev-tools \ + qtquickcontrols2-5-dev xvfb libbluetooth-dev libmtp-dev \ + mdbtools-dev + + git config --global user.email "ci@subsurface-divelog.org" + git config --global user.name "Subsurface CI" + git config --global --add safe.directory ${SUBSURFACE_REPO_PATH} + git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer + + - name: store dummy version and build number for test build + run: | + echo "100" > latest-subsurface-buildnumber + echo "CICD-test-build" > latest-subsurface-buildnumber-extension + + - name: build subsurface-mobile + run: | + echo "--------------------------------------------------------------" + echo "building mobile" + cd .. + bash -e -x subsurface/scripts/build.sh -mobile + + - name: test mobile build + run: | + echo "--------------------------------------------------------------" + echo "running tests for mobile" + + cd build-mobile/tests + # xvfb-run --auto-servernum ./TestGitStorage -v2 + xvfb-run --auto-servernum make check + + - name: build subsurface + run: | + echo "--------------------------------------------------------------" + echo "building desktop" + + # now build for the desktop version (including WebKit) + cd .. + bash -e -x subsurface/scripts/build.sh -desktop -build-with-webkit + + - name: test desktop build + run: | + echo "--------------------------------------------------------------" + echo "running tests for desktop" + cd build/tests + # xvfb-run --auto-servernum ./TestGitStorage -v2 + xvfb-run --auto-servernum make check + + - name: build subsurface-downloader + run: | + echo "--------------------------------------------------------------" + echo "building downloader" + cd .. + bash -e -x subsurface/scripts/build.sh -downloader + + - name: build smtk2ssrf + run: | + echo "--------------------------------------------------------------" + echo "building smtk2ssrf" + + # build smtk2ssrf (needs the artefacts generated by the subsurface build + cd .. + bash -e -x subsurface/scripts/smtk2ssrf-build.sh -y diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 9f4f85417..d60a84c5c 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -12,7 +12,7 @@ on: - master jobs: - buildMac: + build: runs-on: macOS-11 steps: - name: checkout sources diff --git a/.github/workflows/linux-snap.patch b/.github/workflows/scripts/linux-snap.patch similarity index 100% rename from .github/workflows/linux-snap.patch rename to .github/workflows/scripts/linux-snap.patch diff --git a/README.md b/README.md index 79af6420c..b739ab533 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ [![Snap](https://github.com/subsurface/subsurface/actions/workflows/linux-snap.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-snap.yml) [![Ubuntu 14.04 / Qt 5.12 for AppImage--](https://github.com/subsurface/subsurface/actions/workflows/linux-trusty-5.12.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-trusty-5.12.yml) -[![Ubuntu 22.04 / Qt 5.15--](https://github.com/subsurface/subsurface/actions/workflows/linux-jammy-5.15.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-jammy-5.15.yml) -[![Fedora 35 / Qt 6--](https://github.com/subsurface/subsurface/actions/workflows/linux-fedora-qt6.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-fedora-qt6.yml) +[![Ubuntu 24.04 / Qt 5.15--](https://github.com/subsurface/subsurface/actions/workflows/linux-ubuntu-24.04-5.15.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-ubuntu-24.04-5.15.yml) +[![Fedora 35 / Qt 6--](https://github.com/subsurface/subsurface/actions/workflows/linux-fedora-35-qt6.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-fedora-35-qt6.yml) +[![Debian trixie / Qt 5.15--](https://github.com/subsurface/subsurface/actions/workflows/linux-debian-trixie-5.15.yml/badge.svg)](https://github.com/subsurface/subsurface/actions/workflows/linux-debian-trixie-5.15.yml) [![Coverity Scan Results](https://scan.coverity.com/projects/14405/badge.svg)](https://scan.coverity.com/projects/subsurface-divelog-subsurface) diff --git a/packaging/headless/HOWTO b/packaging/headless/HOWTO index 6c077f776..7e10a9a64 100644 --- a/packaging/headless/HOWTO +++ b/packaging/headless/HOWTO @@ -18,7 +18,7 @@ trac system. * Connected network cable from Laptop (enabled Internet sharing in System Preferences) * ifconfig suggests RPi got IP address 192.168.2.2 * logged in as user pi and pw raspberry -* sudo apt-get update and upgrade +* sudo apt-get update and dist-upgrade * no space left on device. Hmm. Trying to reboot * ah running sudo rasps-config allows to extend the file system * sudo dpkg-reconfigure tzdata diff --git a/scripts/docker/android-build-container/Dockerfile b/scripts/docker/android-build-container/Dockerfile index 7d82dc216..b42959871 100644 --- a/scripts/docker/android-build-container/Dockerfile +++ b/scripts/docker/android-build-container/Dockerfile @@ -1,7 +1,7 @@ FROM ubuntu:22.04 as base RUN apt-get update && \ - apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ apt-get install -y \ unzip \ git \ diff --git a/scripts/docker/mxe-build-container/Dockerfile b/scripts/docker/mxe-build-container/Dockerfile index 2f5a0a382..cb3950f5a 100644 --- a/scripts/docker/mxe-build-container/Dockerfile +++ b/scripts/docker/mxe-build-container/Dockerfile @@ -5,7 +5,7 @@ FROM ubuntu:22.04 as base # update and set up the packages we need for the build RUN apt-get update && \ - apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ apt-get install -y \ autoconf \ automake \