-
Notifications
You must be signed in to change notification settings - Fork 33
134 lines (116 loc) · 4.68 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# SPDX-FileCopyrightText: 2023 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
#
# SPDX-License-Identifier: LGPL-2.1-only OR LicenseRef-KDAB-KDStateMachineEditor
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
# - ubuntu-latest
- windows-latest
# - macos-latest
build_type:
- Debug
# - Release
config:
- qt_version: 5.15.2
qt_arch: win64_msvc2019_64
- qt_version: 6.6.2
qt_modules: qtscxml
qt_arch: win64_msvc2019_64
steps:
- name: Install Dependencies on Linux
if: ${{ runner.os == 'Linux' }}
run: |
sudo apt update -qq
sudo apt install -y doxygen libgtk2.0-dev
- name: Install Dependencies on macOS
if: ${{ runner.os == 'macOS' }}
run: |
brew install bison
echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
- name: Install Qt ${{ matrix.config.qt_version }} with options and default aqtversion (Linux/macOS)
if: ${{ runner.os != 'Windows' }}
uses: jurplel/install-qt-action@v3
with:
aqtversion: null # use whatever the default is
modules: ${{ matrix.config.qt_modules }}
version: ${{ matrix.config.qt_version }}
cache: true
- name: Install Qt with options and default aqtversion (Windows)
if: ${{ runner.os == 'Windows' }}
uses: jurplel/install-qt-action@v3
with:
aqtversion: null # use whatever the default is
modules: ${{ matrix.config.qt_modules }}
version: ${{ matrix.config.qt_version }}
arch: ${{ matrix.config.qt_arch }}
cache: true
- name: Install ninja-build tool (must be after Qt due PATH changes)
uses: turtlesec-no/get-ninja@main
- uses: TheMrMilchmann/setup-msvc-dev@v3
if: ${{ runner.os == 'Windows' }}
with:
arch: x64
- name: Checkout sources
uses: actions/checkout@v4
with:
submodules: recursive
- name: Configure project (Linux/macOS)
if: ${{ runner.os != 'Windows' }}
run: >
cmake -S . -B ./build -G Ninja
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DBUILD_QT6=${{ startsWith(matrix.config.qt_version, '6.') }}
-DBUILD_TESTS=${{ matrix.build_type == 'Debug' }}
-DBUILD_EXAMPLES=ON
-DBUILD_DOCS=${{ matrix.build_type == 'Debug' && runner.os == 'Linux' }}
-DWITH_INTERNAL_GRAPHVIZ=ON
- name: Configure project (Windows)
if: ${{ runner.os == 'Windows' }}
run: >
cmake -S . -B ./build -G Ninja
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DBUILD_QT6=${{ startsWith(matrix.config.qt_version, '6.') }}
-DBUILD_TESTS=${{ matrix.build_type == 'Debug' }}
-DBUILD_EXAMPLES=ON
-DBUILD_DOCS=${{ matrix.build_type == 'Debug' && runner.os == 'Linux' }}
-DWITH_INTERNAL_GRAPHVIZ=ON
-DCMAKE_PREFIX_PATH="${{github.workspace}}/3rdparty/graphviz/windows/dependencies/libraries"
-DCMAKE_PROGRAM_PATH="${{github.workspace}}/3rdparty/graphviz/windows/dependencies/graphviz-build-utilities"
-DBISON_EXECUTABLE="${{github.workspace}}/3rdparty/graphviz/windows/dependencies/graphviz-build-utilities/winflexbison/win_bison.exe"
-DFLEX_EXECUTABLE="${{github.workspace}}/3rdparty/graphviz/windows/dependencies/graphviz-build-utilities/winflexbison/win_flex.exe"
- name: Build Project
run: cmake --build ./build
- name: Run tests on Linux (offscreen)
if: ${{ matrix.build_type == 'Debug' && runner.os == 'Linux' }}
run: ctest --test-dir ./build -C ${{ matrix.build_type }} --output-on-failure
env:
QT_QPA_PLATFORM: offscreen
- name: Run tests on Windown/macOS
if: ${{ matrix.build_type == 'Debug' && runner.os != 'Linux' }}
run: ctest --test-dir ./build -C ${{ matrix.build_type }} --output-on-failure
- name: Check DLL Dependencies
if: ${{ failure() && runner.os == 'Windows' }}
run: |
ls build
ls build\bin
ls build/bin
- name: Check DLL Dependencies
if: ${{ failure() && runner.os == 'Windows' }}
run: dumpbin /DEPENDENTS build\bin\test_commands.exe
- name: Read tests log when it fails
uses: andstor/file-reader-action@v1
if: ${{ failure() && matrix.build_type == 'Debug' }}
with:
path: "./build/Testing/Temporary/LastTest.log"