From 9f882de395bfbf43eac44f123363c382ff79a41a Mon Sep 17 00:00:00 2001 From: Christian Grasser Date: Fri, 15 Apr 2022 09:57:34 +0200 Subject: [PATCH] try to fix new build issues with 2.1.0 build - requested changes to use -B and avoid mkdir, cd - requested changes to use cmake --install - added first example of a combined action with lib and app build Fixed codeql.yml apt failure and update to v3 CI builds of desktop versions (against prebuild QT packages): - windows msvc x64 (NOK, qt build issue, commented out) - linux gcc x64 - macos clang CI builds of smartphone versions: - linux android (NOK, cmake config issue, commented out) - macos ios (NOK, cmake config issue, commented out) CI builds of openssl, qt libs: - windows msvc x64 - linux gcc x64 - macos clang CI builds of smartphone versions: - linux android - macos ios --- .github/dependabot.yml | 13 ++ .github/workflows/CI_build.yml | 214 ++++++++++++++++++++++++ .github/workflows/CI_build_combined.yml | 208 +++++++++++++++++++++++ .github/workflows/CI_build_libs.yml | 122 ++++++++++++++ .github/workflows/codeql.yml | 16 +- appveyor.yml | 4 +- 6 files changed, 571 insertions(+), 6 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/CI_build.yml create mode 100644 .github/workflows/CI_build_combined.yml create mode 100644 .github/workflows/CI_build_libs.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..2d01d71c9 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/CI_build.yml b/.github/workflows/CI_build.yml new file mode 100644 index 000000000..f8a9ab4e4 --- /dev/null +++ b/.github/workflows/CI_build.yml @@ -0,0 +1,214 @@ +name: CI_build + +on: [push, pull_request] + +jobs: + + # release build not available with active qttest + # build splitted between D: and C: drive due to disk size + build_windows: + + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + + - name: Install openssl dev + run: | + choco install openssl --version=3.1.1 + choco install ninja + + - name: Add nmake + uses: ilammy/msvc-dev-cmd@v1 + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: '6.5.*' + modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity qtimageformats' + setup-python: 'false' + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} --target package + cmake --install _build + + - name: run ctest + run: | + ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" + + build_linux: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: Install packages via apt + run: | + sudo apt update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev qt6-l10n-tools + + # ubuntu 22.04 comes just with QT 6.2.4 and Qt >= 6.4 is required + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: '6.5.*' + modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity' + setup-python: 'false' + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} --target package + sudo cmake --install _build + + - name: run ctest + run: | + ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" + + # build_linux_android: + + # runs-on: ubuntu-latest + # strategy: + # fail-fast: false + # matrix: + # build_configuration: [Release] + # build_platform: ["Unix Makefiles"] + + # steps: + # - uses: actions/checkout@v4 + + # - name: Install packages via apt + # run: | + # sudo apt update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev qt6-l10n-tools doxygen graphviz + + # - name: Install Qt + # uses: jurplel/install-qt-action@v3 + # with: + # version: '6.5.3' + # host: 'linux' + # target: 'desktop' + # arch: 'gcc_64' + # modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity' + # setup-python: 'false' + + # - name: Install Qt + # uses: jurplel/install-qt-action@v3 + # with: + # version: '6.5.*' + # host: 'linux' + # target: 'android' + # arch: 'android_x86_64' + # modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity' + # setup-python: 'false' + + # - name: generate cmake + # run: | + # cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DQT_HOST_PATH=/home/runner/work/AusweisApp/Qt/6.5.3/gcc_64 -DCMAKE_ANDROID_ARCH_ABI=x86_64 -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -B _build + + # - name: build cmake + # run: | + # cmake --build _build --config ${{ matrix.build_configuration }} + + # - name: run ctest + # run: | + # ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" + + # due to https://bugreports.qt.io/browse/QTBUG-117765 QT 6.5.2 must be used instead of 6.5.3 + build_macos: + + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: '6.5.2' + modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity qtimageformats' + setup-python: 'false' + + - name: generate cmake + run: | + export OPENSSL_ROOT=/usr/local/opt/openssl/bin + export LDFLAGS=-L/usr/local/opt/openssl/lib + export CPPFLAGS=-I/usr/local/opt/openssl/include + export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig/ + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} + + - name: run ctest + run: | + ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" + + # build_ios: + + # runs-on: macos-latest + # strategy: + # fail-fast: false + # matrix: + # build_configuration: [Release] + # build_platform: ["Unix Makefiles"] + + # steps: + # - uses: actions/checkout@v4 + + # - name: Install Qt + # uses: jurplel/install-qt-action@v3 + # with: + # version: '6.5.*' + # modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity qtimageformats qtquick3d' + # setup-python: 'false' + + # - name: Install Qt + # uses: jurplel/install-qt-action@v3 + # with: + # version: '6.5.*' + # host: 'mac' + # target: 'ios' + # modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity qtimageformats qtquick3d' + # setup-python: 'false' + + # - name: generate cmake + # run: | + # export OPENSSL_ROOT=/usr/local/opt/openssl/bin + # export LDFLAGS=-L/usr/local/opt/openssl/lib + # export CPPFLAGS=-I/usr/local/opt/openssl/include + # export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig/ + # cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DQT_HOST_PATH=/Users/runner/work/AusweisApp/Qt/6.5.3/macos -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.toolchain.cmake -B _build + + # - name: build cmake + # run: | + # cmake --build _build --config ${{ matrix.build_configuration }} + + # - name: run ctest + # run: | + # ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" diff --git a/.github/workflows/CI_build_combined.yml b/.github/workflows/CI_build_combined.yml new file mode 100644 index 000000000..97d9d7d76 --- /dev/null +++ b/.github/workflows/CI_build_combined.yml @@ -0,0 +1,208 @@ +name: CI_build_combined + +on: [push, pull_request] + +env: + BUILD_DIR_LIBS_WIN: "c:/_build_libs" + BUILD_DIR_APP_WIN: "c:/_build" + BUILD_DIR_LIBS: "_build_libs" + BUILD_DIR_APP: "_build" + + +jobs: + build_windows: + + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + + - name: Install nmake replacement jom, ninja + run: | + choco install jom ninja + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Add nmake + uses: ilammy/msvc-dev-cmd@v1 + + - name: generate cmake libs + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B "${{ env.BUILD_DIR_LIBS_WIN }}" D:\a\AusweisApp\AusweisApp\libs + + - name: build cmake libs + run: | + cmake --build "${{ env.BUILD_DIR_LIBS_WIN }}" --config ${{ matrix.build_configuration }} + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B "${{ env.BUILD_DIR_APP_WIN }}" -DCMAKE_PREFIX_PATH=c:\_build_libs\dist D:\a\AusweisApp\AusweisApp + + - name: build cmake + run: | + cmake --build "${{ env.BUILD_DIR_APP_WIN }}" --config ${{ matrix.build_configuration }} --target package + cmake --install "${{ env.BUILD_DIR_APP_WIN }}" + + - name: run ctest + run: | + ctest --test-dir "${{ env.BUILD_DIR_APP_WIN }}" --output-on-failure -C "${{ matrix.build_configuration }}" + + + + build_linux: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + - uses: actions/checkout@v4 + + - name: Install packages via apt + run: | + sudo apt-get update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev libdbus-1-dev libclang-15-dev libclang-13-dev ninja-build + + - name: generate cmake libs + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B ${{ env.BUILD_DIR_LIBS }} ./libs + + - name: build cmake libs + run: | + cmake --build ${{ env.BUILD_DIR_LIBS }} --config ${{ matrix.build_configuration }} + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B ${{ env.BUILD_DIR_APP }} -DCMAKE_PREFIX_PATH=./_build_libs/dist + + - name: build cmake + run: | + cmake --build ${{ env.BUILD_DIR_APP }} --config ${{ matrix.build_configuration }} + sudo cmake --install ${{ env.BUILD_DIR_APP }} + + - name: run ctest + run: | + ctest --test-dir ${{ env.BUILD_DIR_APP }} --output-on-failure -C "${{ matrix.build_configuration }}" + + + build_linux_android: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: Install packages via apt + run: | + sudo apt-get update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev libdbus-1-dev libclang-15-dev libclang-13-dev ninja-build + sudo apt -y remove firefox microsoft-edge-stable google-chrome-stable kotlin libmono* mono-runtime + + - name: generate cmake libs + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -B ${{ env.BUILD_DIR_LIBS }} ./libs + + - name: build cmake libs + run: | + cmake --build ${{ env.BUILD_DIR_LIBS }} --config ${{ matrix.build_configuration }} + cmake --install ${{ env.BUILD_DIR_LIBS }} + + # - name: generate cmake + # run: | + # cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_PREFIX_PATH=./_build_libs/dist -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -B ${{ env.BUILD_DIR_APP }} + + # - name: build cmake + # run: | + # cmake --build ${{ env.BUILD_DIR_APP }} --config ${{ matrix.build_configuration }} + # cmake --install ${{ env.BUILD_DIR_APP }} + + # - name: run ctest + # run: | + # ctest --test-dir ${{ env.BUILD_DIR_APP }} --output-on-failure -C "${{ matrix.build_configuration }}" + + build_macos: + + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + - uses: actions/checkout@v4 + + - name: install ninja + run: | + brew install ninja + + - name: generate cmake libs + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B ${{ env.BUILD_DIR_LIBS }} ./libs + + - name: build cmake libs + run: | + cmake --build ${{ env.BUILD_DIR_LIBS }} --config ${{ matrix.build_configuration }} + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_PREFIX_PATH=./_build_libs/dist -B ${{ env.BUILD_DIR_APP }} + + # due to https://bugreports.qt.io/browse/QTBUG-117765 QT 6.5.3 fails + # - name: build cmake + # run: | + # cmake --build ${{ env.BUILD_DIR_APP }} --config ${{ matrix.build_configuration }} + # cmake --install ${{ env.BUILD_DIR_APP }} + + # - name: run ctest + # run: | + # ctest --test-dir ${{ env.BUILD_DIR_APP }} --output-on-failure -C "${{ matrix.build_configuration }}" + + + build_ios: + + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: install ninja + run: | + brew install ninja + + - name: generate cmake libs + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.toolchain.cmake -B ${{ env.BUILD_DIR_LIBS }} ./libs + + - name: build cmake libs + run: | + cmake --build ${{ env.BUILD_DIR_LIBS }} --config ${{ matrix.build_configuration }} + + # - name: generate cmake + # run: | + # cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_PREFIX_PATH=./_build_libs/dist -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.toolchain.cmake -B ${{ env.BUILD_DIR_APP }} + + # - name: build cmake + # run: | + # cmake --build ${{ env.BUILD_DIR_APP }} --config ${{ matrix.build_configuration }} + # cmake --install ${{ env.BUILD_DIR_APP }} + + # - name: run ctest + # run: | + # ctest --test-dir ${{ env.BUILD_DIR_APP }} --output-on-failure -C "${{ matrix.build_configuration }}" diff --git a/.github/workflows/CI_build_libs.yml b/.github/workflows/CI_build_libs.yml new file mode 100644 index 000000000..149a6934e --- /dev/null +++ b/.github/workflows/CI_build_libs.yml @@ -0,0 +1,122 @@ +name: CI_build_libs + +on: [push, pull_request] + +jobs: + build_windows: + + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["NMake Makefiles"] + + steps: + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Add nmake + uses: ilammy/msvc-dev-cmd@v1 + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B c:\_build D:\a\AusweisApp\AusweisApp\libs + + - name: build cmake + run: | + cmake --build c:\_build --config ${{ matrix.build_configuration }} + + build_linux: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + - uses: actions/checkout@v4 + + - name: Install packages via apt + run: | + sudo apt-get update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev libdbus-1-dev libclang-15-dev libclang-13-dev ninja-build + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build ./libs + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} + + build_linux_android: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: Install packages via apt + run: | + sudo apt-get update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libgl1-mesa-dev libdbus-1-dev libclang-15-dev libclang-13-dev ninja-build + sudo apt -y remove firefox microsoft-edge-stable google-chrome-stable kotlin libmono* mono-runtime + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -B _build ./libs + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} + + build_macos: + + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Ninja"] + + steps: + - uses: actions/checkout@v4 + + - name: install ninja + run: | + brew install ninja + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build ./libs + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} + + build_ios: + + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_configuration: [Release] + build_platform: ["Unix Makefiles"] + + steps: + - uses: actions/checkout@v4 + + - name: generate cmake + run: | + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.toolchain.cmake -B _build ./libs + + - name: build cmake + run: | + cmake --build _build --config ${{ matrix.build_configuration }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c1de2b2a0..0e265757a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -24,10 +24,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-and-quality @@ -35,10 +35,18 @@ jobs: - name: Install dependencies run: sudo apt update -qq && sudo apt install -y cmake pkg-config libssl-dev libudev-dev libhttp-parser-dev libpcsclite-dev libqt6svg6-dev libqt6websockets6-dev qt6-base-dev qt6-base-private-dev qt6-declarative-dev qt6-connectivity-dev qt6-scxml-dev qt6-tools-dev qt6-tools-dev-tools libqt6opengl6-dev libqt6shadertools6-dev libgl1-mesa-dev qt6-l10n-tools + #QT > 6.4 is required but ubuntu 22.04 just has 6.2.4, so additional installation is needed + - name: Install Qt + uses: jurplel/install-qt-action@v3 + with: + version: '6.5.*' + modules: 'qtscxml qtwebsockets qtshadertools qtconnectivity' + setup-python: 'false' + - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{ matrix.language }}" diff --git a/appveyor.yml b/appveyor.yml index 2bd2d5429..f906bbad1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,13 +5,13 @@ environment: - PlatformToolset: mingw-w64 platform: mingw-w64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 - QTPath: C:\Qt\6.3.1\mingw_64 + QTPath: C:\Qt\6.5\mingw_64 OPENSSLPath: C:\OpenSSL-v30-Win64\bin - PlatformToolset: v142 platform: x64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 - QTPath: C:\Qt\6.3.1\msvc2019_64 + QTPath: C:\Qt\6.5\msvc2019_64 OPENSSLPath: C:\OpenSSL-v30-Win64\bin ARCHI: amd64