From 057bddfb06fc64156abe5230adb2fb5723f3ceb1 Mon Sep 17 00:00:00 2001 From: Christian Grasser Date: Fri, 15 Apr 2022 09:57:34 +0200 Subject: [PATCH] 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 | 235 ++++++++++++++++++++++++++++ .github/workflows/CI_build_libs.yml | 137 ++++++++++++++++ .github/workflows/codeql.yml | 16 +- appveyor.yml | 6 +- 5 files changed, 400 insertions(+), 7 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/CI_build.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..a7294236b --- /dev/null +++ b/.github/workflows/CI_build.yml @@ -0,0 +1,235 @@ +name: CI_build + +on: [push, pull_request] + +jobs: + + # failing with D:\a\AusweisApp\AusweisApp\test\helper\common\MockReleaseInformation.cpp(42,35): error C2248: 'QString::QString': cannot access private member declared in class 'QString' [C:\_build\test\helper\common\AusweisAppTestHelperCommon.vcxproj] + #build_windows: + + + # runs-on: windows-latest + # strategy: + # fail-fast: false + # matrix: + # build_configuration: [Release] + # build_platform: [x64] + + # steps: + + # - name: Install openssl dev + # run: | + # choco install openssl + # dir "C:\Program Files" + + # - name: Checkout repo + # uses: actions/checkout@v4 + + # - name: Add msbuild to PATH + # uses: microsoft/setup-msbuild@v1 + + # - 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: | + # mkdir c:\_build + # cd c:\_build + # cmake -G "Visual Studio 17 2022" -A ${{ matrix.build_platform }} -T "v143" D:\a\AusweisApp\AusweisApp + + # - name: build cmake + # run: | + # cd c:\_build + # cmake --build . --config ${{ matrix.build_configuration }} --target package + + # - name: run ctest + # run: | + # cd c:\_build + # ctest --output-on-failure -C "${{ matrix.build_configuration }}" + + # ubuntu 22.04 comes just with QT 6.2.4 and Qt >= 6.4 is required + build_linux_cmake: + + 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 + + - 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: | + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" .. + + - name: build cmake + run: | + cd _build + cmake --build . --config ${{ matrix.build_configuration }} --target package + sudo make install + + - name: run ctest + run: | + cd _build + ctest --output-on-failure -C "${{ matrix.build_configuration }}" + + # failing in cmake generation step: Could NOT find OpenGL (missing: OPENGL_INCLUDE_DIR) + # build_linux_android_cmake: + + # 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: | + # mkdir _build + # cd _build + # 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 .. + + # - name: build cmake + # run: | + # cd _build + # cmake --build . --config ${{ matrix.build_configuration }} + + # - name: run ctest + # run: | + # cd _build + # ctest --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_cmake: + + 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/ + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" .. + + - name: build cmake + run: | + cd _build + cmake --build . --config ${{ matrix.build_configuration }} + + - name: run ctest + run: | + cd _build + ctest --output-on-failure -C "${{ matrix.build_configuration }}" + + # failing in cmake generation step: Could NOT find OpenGL (missing: OPENGL_INCLUDE_DIR) + # build_ios_cmake: + + # 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/ + # mkdir _build + # cd _build + # 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 .. + + # - name: build cmake + # run: | + # cd _build + # cmake --build . --config ${{ matrix.build_configuration }} + + # - name: run ctest + # run: | + # cd _build + # ctest --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..e550f5b8d --- /dev/null +++ b/.github/workflows/CI_build_libs.yml @@ -0,0 +1,137 @@ +name: CI_build_libs + +on: [push, pull_request] + +jobs: + build: + + 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: | + mkdir c:\_build + cd c:\_build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" D:\a\AusweisApp\AusweisApp\libs + + - name: build cmake + run: | + cd c:\_build + cmake --build . --config ${{ matrix.build_configuration }} + + build_linux_cmake: + + 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-13-dev ninja-build + + - name: generate cmake + run: | + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" ../libs + + - name: build cmake + run: | + cd _build + cmake --build . --config ${{ matrix.build_configuration }} + + build_linux_android_cmake: + + 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-13-dev ninja-build + sudo apt -y remove firefox microsoft-edge-stable google-chrome-stable kotlin libmono* mono-runtime + + - name: generate cmake + run: | + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake ../libs + + - name: build cmake + run: | + cd _build + cmake --build . --config ${{ matrix.build_configuration }} + + build_macos_cmake: + + 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: | + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" ../libs + + - name: build cmake + run: | + cd _build + cmake --build . --config ${{ matrix.build_configuration }} + + build_ios_cmake: + + 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: | + mkdir _build + cd _build + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.toolchain.cmake ../libs + + - name: build cmake + run: | + cd _build + cmake --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 022dffb4b..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 @@ -81,6 +81,6 @@ on_finish: - cd "%APPVEYOR_BUILD_FOLDER%" - ps: | - $version = Select-String -Path .\CMakeLists.txt -Pattern "AusweisApp2 VERSION ([0-9.]+)" | % { $_.Matches[0].Groups[1].Value } + $version = Select-String -Path .\CMakeLists.txt -Pattern "AusweisApp VERSION ([0-9.]+)" | % { $_.Matches[0].Groups[1].Value } Update-AppveyorBuild -Version "$version-$env:APPVEYOR_BUILD_NUMBER"