Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI build by github actions #42

Open
wants to merge 1 commit into
base: community
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -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"
120 changes: 120 additions & 0 deletions .github/workflows/CI_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: CI_build

on: [push, pull_request]

jobs:

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'
Comment on lines +66 to +71
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to use the built libs from below as another matrix job?

Copy link
Contributor Author

@chcg chcg Feb 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@misery I added another workflow which combines the build of the libs and the direct use of it for the app. I think with that the extra workflow of the lib build is obsolete. What do you think?
The build of the app with pre build QT installations might be still of some interest for testing of newer QT versions..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used unix makefiles for android and ios as with ninja build the error:


Run cmake --build _build_libs --config Release
ninja: error: build.ninja:313: multiple rules generate download/qt-everywhere-src-6.6.1.tar.xz [-w dupbuild=err]

appears.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, if we use a combined build there is no need for a separate lib build job.

Strange error. Did you just Multi-Config Ninja Genereator somewhere? Maybe you could remove --config Release as it is needed for Multi-Config only.


- 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 }}"

# 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 }}"
171 changes: 171 additions & 0 deletions .github/workflows/CI_build_combined.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
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-14-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-14-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 }}

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 }}

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 }}
16 changes: 12 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,29 @@ 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

- 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 }}"
4 changes: 2 additions & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
misery marked this conversation as resolved.
Show resolved Hide resolved
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
chcg marked this conversation as resolved.
Show resolved Hide resolved
OPENSSLPath: C:\OpenSSL-v30-Win64\bin
ARCHI: amd64

Expand Down