Skip to content

Commit

Permalink
use a matrix strategy to build with Qt 5.14 (#41416)
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Feb 9, 2021
1 parent 76cc050 commit aa2689a
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 55 deletions.
83 changes: 42 additions & 41 deletions .docker/docker-qgis-build.sh
Expand Up @@ -33,49 +33,50 @@ echo "::group::cmake"
export CC=/usr/lib/ccache/clang
export CXX=/usr/lib/ccache/clang++

HANA_TESTS_ENABLED=OFF
if [ ${HANA_TESTS} == "true" ] ; then
HANA_TESTS_ENABLED=ON
CMAKE_ARGS=(
"-GNinja"
"-DUSE_CCACHE=OFF"
"-DWITH_QUICK=OFF"
"-DWITH_3D=ON"
"-DWITH_STAGED_PLUGINS=ON"
"-DWITH_GRASS=OFF"
"-DSUPPRESS_QT_WARNINGS=ON"
"-DENABLE_TESTS=ON"
"-DENABLE_MODELTEST=ON"
"-DENABLE_PGTEST=ON"
"-DENABLE_SAGA_TESTS=ON"
"-DENABLE_MSSQLTEST=ON"
"-DENABLE_HANATEST=${HANA_TESTS_ENABLED}"
"-DENABLE_ORACLETEST=ON"
"-DPUSH_TO_CDASH=${PUSH_TO_CDASH}"
"-DWITH_HANA=ON"
"-DWITH_QSPATIALITE=ON"
"-DWITH_QWTPOLAR=OFF"
"-DWITH_APIDOC=OFF"
"-DWITH_ASTYLE=OFF"
"-DWITH_DESKTOP=ON"
"-DWITH_BINDINGS=ON"
"-DWITH_SERVER=ON"
"-DWITH_ORACLE=ON"
"-DORACLE_INCLUDEDIR=/instantclient_19_9/sdk/include/"
"-DORACLE_LIBDIR=/instantclient_19_9/"
"-DDISABLE_DEPRECATED=ON"
"-DPYTHON_TEST_WRAPPER=\"timeout -sSIGSEGV 55s\""
"-DCXX_EXTRA_FLAGS=\"${CLANG_WARNINGS}\""
"-DWERROR=TRUE"
"-DADD_CLAZY_CHECKS=ON"
)
if [[ ${PATCH_QT_3D} == "true" ]]; then
CMAKE_ARGS+=(
"-DQT5_3DEXTRA_LIBRARY=/usr/lib/x86_64-linux-gnu/libQt53DExtras.so"
"-DQT5_3DEXTRA_INCLUDE_DIR=/root/QGIS/external/qt3dextra-headers"
"-DCMAKE_PREFIX_PATH=/root/QGIS/external/qt3dextra-headers/cmake"
"-DQt53DExtras_DIR=/root/QGIS/external/qt3dextra-headers/cmake/Qt53DExtras"
)
fi

cmake \
-GNinja \
-DUSE_CCACHE=OFF \
-DWITH_QUICK=OFF \
-DWITH_3D=ON \
-DWITH_STAGED_PLUGINS=ON \
-DWITH_GRASS=OFF \
-DSUPPRESS_QT_WARNINGS=ON \
-DENABLE_TESTS=ON \
-DENABLE_MODELTEST=ON \
-DENABLE_PGTEST=ON \
-DENABLE_SAGA_TESTS=ON \
-DENABLE_MSSQLTEST=ON \
-DENABLE_HANATEST=$HANA_TESTS_ENABLED \
-DENABLE_ORACLETEST=ON \
-DPUSH_TO_CDASH=${PUSH_TO_CDASH} \
-DWITH_HANA=ON \
-DWITH_QSPATIALITE=ON \
-DWITH_QWTPOLAR=OFF \
-DWITH_APIDOC=OFF \
-DWITH_ASTYLE=OFF \
-DWITH_DESKTOP=ON \
-DWITH_BINDINGS=ON \
-DWITH_SERVER=ON \
-DWITH_ORACLE=ON \
-DORACLE_INCLUDEDIR="/instantclient_19_9/sdk/include/" \
-DORACLE_LIBDIR="/instantclient_19_9/" \
-DDISABLE_DEPRECATED=ON \
-DPYTHON_TEST_WRAPPER="timeout -sSIGSEGV 55s"\
-DCXX_EXTRA_FLAGS="${CLANG_WARNINGS}" \
-DWERROR=TRUE \
-DADD_CLAZY_CHECKS=ON \
-DQT5_3DEXTRA_LIBRARY="/usr/lib/x86_64-linux-gnu/libQt53DExtras.so" \
-DQT5_3DEXTRA_INCLUDE_DIR="/root/QGIS/external/qt3dextra-headers" \
-DCMAKE_PREFIX_PATH="/root/QGIS/external/qt3dextra-headers/cmake" \
-DQt53DExtras_DIR="/root/QGIS/external/qt3dextra-headers/cmake/Qt53DExtras" \
..

echo "Running cmake ${CMAKE_ARGS[*]} .."
cmake ${CMAKE_ARGS[*]} ..
echo "::endgroup::"

#######
Expand Down
2 changes: 1 addition & 1 deletion .docker/docker-qgis-test.sh
Expand Up @@ -9,7 +9,7 @@ set -e
# Prepare HANA database connection
##################################

if [ ${HANA_TESTS:-"false"} == "true" ] ; then
if [ ${HANA_TESTS_ENABLED:-"OFF"} == "ON" ] ; then
echo "::group::hana"
echo "${bold}Load HANA database...${endbold}"

Expand Down
6 changes: 5 additions & 1 deletion .docker/docker-variables.env
Expand Up @@ -8,8 +8,12 @@ CTEST_BUILD_DIR=/root/QGIS
# CTEST vars defined in workflow
CTEST_BUILD_NAME

# Other var
# Other vars
QGIS_NO_OVERRIDE_IMPORT=1
HANA_TESTS_ENABLED=OFF

# Defined in workflow
PATCH_QT_3D

# This is used in some tests to be skipped
QGIS_CONTINUOUS_INTEGRATION_RUN=true
Expand Down
5 changes: 4 additions & 1 deletion .docker/qgis3-build-deps.dockerfile
@@ -1,4 +1,7 @@
FROM ubuntu:20.04

ARG UBUNTU_BASE=20.04

FROM ubuntu:${UBUNTU_BASE}
MAINTAINER Denis Rouzaud <denis@opengis.ch>

LABEL Description="Docker container with QGIS dependencies" Vendor="QGIS.org" Version="1.0"
Expand Down
36 changes: 25 additions & 11 deletions .github/workflows/run-tests.yml
Expand Up @@ -34,9 +34,16 @@ jobs:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
GH_WORKSPACE: ${{ github.workspace }} # used in docker compose
DEFAULT_UBUNTU_BASE: '20.04'

runs-on: ubuntu-latest

strategy:
matrix:
# tests run on 20.04 (Qt 5.12), compile test on 20.10 (Qt 5.14)
ubuntu-base: ['20.04', '20.10']
fail-fast: false

outputs:
compile_outcome: ${{ steps.compile.outcome }}
tests_failing: ${{ steps.tests.outputs.TESTS_FAILING }}
Expand All @@ -52,16 +59,20 @@ jobs:
GITHUB_EVENT_NAME: ${{ github.event_name }}
GITHUB_REF: ${{ github.ref }}
GITHUB_PR_NUMBER: ${{github.event.number}}
UBUNTU_BASE: ${{ matrix.ubuntu-base }}
run: |
DOCKER_TAG=$(echo $( [[ ${GITHUB_EVENT_NAME} =~ ^pull_request$ ]] && echo ${GITHUB_BASE_REF} || echo ${GITHUB_REF##*/} ) | sed 's/^master$/latest/')
DOCKER_TAG=$(echo $( [[ ${GITHUB_EVENT_NAME} =~ ^pull_request$ ]] && echo ${GITHUB_BASE_REF} || echo ${GITHUB_REF##*/} ) | sed 's/^master$/latest/')$( [[ ${UBUNTU_BASE} != ${DEFAULT_UBUNTU_BASE} ]] && echo "_${UBUNTU_BASE}" || echo "" )
CTEST_BUILD_NAME=$( [[ ${GITHUB_EVENT_NAME} =~ ^pull_request$ ]] && echo "PR${GITHUB_PR_NUMBER}" || echo ${GITHUB_REF##*/} )"_${GITHUB_SHA}"
[[ ${UBUNTU_BASE} == "20.04" ]] && PATCH_QT_3D=true || PATCH_QT_3D=false
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
echo "CTEST_BUILD_NAME=${CTEST_BUILD_NAME}" >> $GITHUB_ENV
echo "PATCH_QT_3D=${PATCH_QT_3D}" >> $GITHUB_ENV
- name: Print vars
run: |
echo DOCKER_TAG: ${DOCKER_TAG}
echo CTEST_BUILD_NAME: ${CTEST_BUILD_NAME}
echo PATCH_QT_3D: ${PATCH_QT_3D}
# - name: Increase Docker base image size
# # https://stackoverflow.com/questions/50140939/increase-docker-container-size-from-default-10gb-on-rhel7
Expand All @@ -71,10 +82,12 @@ jobs:
# sudo service docker restart

- name: Build deps
env:
UBUNTU_BASE: ${{ matrix.ubuntu-base }}
run: |
pushd .docker
docker pull qgis/qgis3-build-deps:${DOCKER_TAG}
docker build --cache-from qgis/qgis3-build-deps:${DOCKER_TAG} -t qgis/qgis3-build-deps:${DOCKER_TAG} -f qgis3-build-deps.dockerfile .
docker pull qgis/qgis3-build-deps:${DOCKER_TAG} || true
docker build --build-arg UBUNTU_BASE=${UBUNTU_BASE} --cache-from qgis/qgis3-build-deps:${DOCKER_TAG} -t qgis/qgis3-build-deps:${DOCKER_TAG} -f qgis3-build-deps.dockerfile .
popd
- name: Push deps image
Expand All @@ -88,13 +101,13 @@ jobs:
if: github.event_name == 'pull_request'
with:
path: /home/runner/QGIS/.ccache
key: build-ccache-${{ github.head_ref }}-${{ github.sha }}
key: build-ccache-${{ matrix.ubuntu-base }}-${{ github.actor }}-${{ github.head_ref }}-${{ github.sha }}
# The head_ref or source branch of the pull request in a workflow run.
# The base_ref or target branch of the pull request in a workflow run.
restore-keys: |
build-ccache-${{ github.head_ref }}-
build-ccache-${{ github.base_ref }}-
build-ccache-refs/heads/master-
build-ccache-${{ matrix.ubuntu-base }}-${{ github.actor }}-${{ github.head_ref }}-
build-ccache-${{ matrix.ubuntu-base }}-${{ github.base_ref }}-
build-ccache-${{ matrix.ubuntu-base }}-refs/heads/master-
- name: Prepare build cache for branch/tag
# use a fork of actions/cache@v2 to upload cache even when the build or test failed
Expand All @@ -103,10 +116,10 @@ jobs:
with:
path: /home/runner/QGIS/.ccache
# The branch or tag ref that triggered the workflow run. For branches this in the format refs/heads/<branch_name>, and for tags it is refs/tags/<tag_name>
key: build-ccache-${{ github.ref }}-${{ github.sha }}
key: build-ccache-${{ matrix.ubuntu-base }}-${{ github.ref }}-${{ github.sha }}
restore-keys: |
build-ccache-${{ github.ref }}-
build-ccache-refs/heads/master-
build-ccache-${{ matrix.ubuntu-base }}-${{ github.ref }}-
build-ccache-${{ matrix.ubuntu-base }}-refs/heads/master-
- name: Compile QGIS
id: compile
Expand All @@ -131,10 +144,12 @@ jobs:
- name: Run unit tests
id: tests
if: ${{ matrix.ubuntu-base == env.DEFAULT_UBUNTU_BASE }}
run: docker-compose -f .docker/docker-compose-testing.yml run qgis-deps /root/QGIS/.docker/docker-qgis-test.sh

# - name: Test QGIS runners
# id: runners
# if: ${{ matrix.ubuntu-base == env.DEFAULT_UBUNTU_BASE }}
# run: |
# docker run -d --name qgis-testing-environment \
# -v $(pwd):/root/QGIS \
Expand Down Expand Up @@ -173,7 +188,6 @@ jobs:
# docker stop qgis-testing-environment



# tests-report-comment:
# name: Write tests report in a comment
# needs: build
Expand Down

0 comments on commit aa2689a

Please sign in to comment.