-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (114 loc) · 3.44 KB
/
default.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
135
136
name: Build
on: push
jobs:
lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run pre-commit
uses: pre-commit/action@v3.0.0
- name: Run commitlint
uses: wagoid/commitlint-github-action@v5
build:
name: Build
strategy:
matrix:
include:
- os: ubuntu-latest
compiler: gcc
cc: gcc
cxx: g++
- os: ubuntu-latest
compiler: clang
cc: clang
cxx: clang++
- os: windows-latest
compiler: msvc
cc: cl
cxx: cl
runs-on: ${{ matrix.os }}
needs: [lint]
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install clang
if: matrix.compiler == 'clang'
uses: egor-tensin/setup-clang@v1.4
- name: Install msbuild
if: matrix.os == 'windows-latest'
uses: ilammy/msvc-dev-cmd@v1.12.1
- name: Install meson, ninja and gcovr
run: pip install meson ninja gcovr
- name: Configure
run: meson setup build
- name: Compile
run: meson compile -C build
- name: Run tests
run: meson test -C build
test:
name: Test
runs-on: ubuntu-latest
needs: [build]
env:
SONAR_SCANNER_VERSION: 4.7.0.2747
SONAR_SERVER_URL: "https://sonarcloud.io"
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Setup Sonar Scanner
uses: SonarSource/sonarcloud-github-c-cpp@v2.0.2
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install meson, ninja and gcovr
run: pip install meson ninja gcovr
- name: Run build-wrapper
run: |
meson setup build -Db_coverage=true
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} meson compile -C build
- name: Run tests and generate coverage report
run: |
cd build
ninja test
ninja coverage
- name: Run sonar-scanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
sonar-scanner \
--define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" \
--define sonar.coverageReportPaths=build/meson-logs/sonarqube.xml \
--define sonar.coverage.exclusions=examples/*
docs:
name: Generate documentation
runs-on: ubuntu-latest
needs: [test]
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Generate documentation
uses: mattnotmitt/doxygen-action@v1.9.5
with:
working-directory: docs
doxyfile-path: Doxyfile
- name: Upload documentation as artifact
uses: actions/upload-artifact@v3
with:
name: docs
path: docs/html
- name: Deploy documentation
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: docs/html