From e60a2bdda7625f0da791158960c124fcde45ee07 Mon Sep 17 00:00:00 2001 From: Christian Grasser Date: Thu, 1 Feb 2024 19:02:08 +0100 Subject: [PATCH] - 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 --- .github/workflows/CI_build.yml | 121 ++++++-------- .github/workflows/CI_build_combined.yml | 208 ++++++++++++++++++++++++ .github/workflows/CI_build_libs.yml | 49 ++---- 3 files changed, 275 insertions(+), 103 deletions(-) create mode 100644 .github/workflows/CI_build_combined.yml diff --git a/.github/workflows/CI_build.yml b/.github/workflows/CI_build.yml index a7294236..d98a2d8d 100644 --- a/.github/workflows/CI_build.yml +++ b/.github/workflows/CI_build.yml @@ -4,55 +4,51 @@ 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: + # 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: [Debug] + build_platform: [x64] - # runs-on: windows-latest - # strategy: - # fail-fast: false - # matrix: - # build_configuration: [Release] - # build_platform: [x64] - - # steps: + steps: - # - name: Install openssl dev - # run: | - # choco install openssl - # dir "C:\Program Files" + - name: Install openssl dev + run: | + choco install openssl --version=3.1.1 + dir "C:\Program Files" - # - name: Checkout repo - # uses: actions/checkout@v4 + - name: Checkout repo + uses: actions/checkout@v4 - # - name: Add msbuild to PATH - # uses: microsoft/setup-msbuild@v1 + - 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: 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: | - # mkdir c:\_build - # cd c:\_build - # cmake -G "Visual Studio 17 2022" -A ${{ matrix.build_platform }} -T "v143" D:\a\AusweisApp\AusweisApp + - name: generate cmake + run: | + cmake -G "Visual Studio 17 2022" -A ${{ matrix.build_platform }} -T "v143" D:\a\AusweisApp\AusweisApp -B c:\_build - # - name: build cmake - # run: | - # cd c:\_build - # cmake --build . --config ${{ matrix.build_configuration }} --target package + - name: build cmake + run: | + cmake --build c:\_build --config ${{ matrix.build_configuration }} --target package + # cmake --install c:\_build # - name: run ctest # run: | - # cd c:\_build - # ctest --output-on-failure -C "${{ matrix.build_configuration }}" + # ctest --test-dir c:\_build --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: + build_linux: runs-on: ubuntu-latest strategy: @@ -68,6 +64,7 @@ jobs: 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: @@ -77,23 +74,18 @@ jobs: - name: generate cmake run: | - mkdir _build - cd _build - cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" .. + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build - name: build cmake run: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} --target package - sudo make install + cmake --build _build --config ${{ matrix.build_configuration }} --target package + sudo cmake --install _build - name: run ctest run: | - cd _build - ctest --output-on-failure -C "${{ matrix.build_configuration }}" + ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" - # failing in cmake generation step: Could NOT find OpenGL (missing: OPENGL_INCLUDE_DIR) - # build_linux_android_cmake: + # build_linux_android: # runs-on: ubuntu-latest # strategy: @@ -131,22 +123,18 @@ jobs: # - 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 .. + # 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: | - # cd _build - # cmake --build . --config ${{ matrix.build_configuration }} + # cmake --build _build --config ${{ matrix.build_configuration }} # - name: run ctest # run: | - # cd _build - # ctest --output-on-failure -C "${{ matrix.build_configuration }}" + # 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_cmake: + build_macos: runs-on: macos-latest strategy: @@ -171,22 +159,17 @@ jobs: 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 }}" .. + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build - name: build cmake run: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build _build --config ${{ matrix.build_configuration }} - name: run ctest run: | - cd _build - ctest --output-on-failure -C "${{ matrix.build_configuration }}" + ctest --test-dir _build --output-on-failure -C "${{ matrix.build_configuration }}" - # failing in cmake generation step: Could NOT find OpenGL (missing: OPENGL_INCLUDE_DIR) - # build_ios_cmake: + # build_ios: # runs-on: macos-latest # strategy: @@ -220,16 +203,12 @@ jobs: # 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 .. + # 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: | - # cd _build - # cmake --build . --config ${{ matrix.build_configuration }} + # cmake --build _build --config ${{ matrix.build_configuration }} # - name: run ctest # run: | - # cd _build - # ctest --output-on-failure -C "${{ matrix.build_configuration }}" + # 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 00000000..f9cea47d --- /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 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 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 index e550f5b8..b8b371bf 100644 --- a/.github/workflows/CI_build_libs.yml +++ b/.github/workflows/CI_build_libs.yml @@ -3,7 +3,7 @@ name: CI_build_libs on: [push, pull_request] jobs: - build: + build_windows: runs-on: windows-latest strategy: @@ -22,16 +22,13 @@ jobs: - 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 + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B c:\_build D:\a\AusweisApp\AusweisApp\libs - name: build cmake run: | - cd c:\_build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build c:\_build --config ${{ matrix.build_configuration }} - build_linux_cmake: + build_linux: runs-on: ubuntu-latest strategy: @@ -45,20 +42,17 @@ jobs: - 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-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 ninja-build - name: generate cmake run: | - mkdir _build - cd _build - cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" ../libs + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build ./libs - name: build cmake run: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build _build --config ${{ matrix.build_configuration }} - build_linux_android_cmake: + build_linux_android: runs-on: ubuntu-latest strategy: @@ -72,21 +66,18 @@ jobs: - 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-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 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 + 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: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build _build --config ${{ matrix.build_configuration }} - build_macos_cmake: + build_macos: runs-on: macos-latest strategy: @@ -104,16 +95,13 @@ jobs: - name: generate cmake run: | - mkdir _build - cd _build - cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" ../libs + cmake -G "${{ matrix.build_platform }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_configuration }}" -B _build ./libs - name: build cmake run: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build _build --config ${{ matrix.build_configuration }} - build_ios_cmake: + build_ios: runs-on: macos-latest strategy: @@ -127,11 +115,8 @@ jobs: - 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 + 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: | - cd _build - cmake --build . --config ${{ matrix.build_configuration }} + cmake --build _build --config ${{ matrix.build_configuration }}