-
Notifications
You must be signed in to change notification settings - Fork 23
140 lines (117 loc) · 4.36 KB
/
GccDebugMemcheck.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
137
138
139
140
---
name: GccDebugMemcheck
on:
push:
branches:
- master
pull_request:
permissions: read-all
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Debug
jobs:
build:
# yamllint disable rule:line-length
# The CMake configure and build commands are platform agnostic and should
# work equally well on Windows or Mac. You can convert this to a matrix
# build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
# yamllint enable rule:line-length
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
# Version range or exact version of a Python version to use,
# using SemVer's version range syntax
- name: Update package lists
run: sudo apt-get update
- name: Install check
run: sudo apt-get install check
- name: Install Valgrind
run: sudo apt-get install valgrind
- name: Install lcov
run: sudo apt-get install lcov
- name: Lnstall libxml2
run: sudo apt-get install libxml2-dev
# open62541
- uses: actions/checkout@v4
with:
repository: open62541/open62541
ref: 1.4
submodules: recursive
path: ./openRoot
- name: Create Build Environment for open62541
shell: bash
run: cmake -E make_directory ./openRoot/build
- name: Configure open
shell: bash
working-directory: ./openRoot/build
run: |
cmake -DCMAKE_BUILD_TYPE=Debug \
-DUA_NAMESPACE_ZERO=FULL \
-DBUILD_SHARED_LIBS=ON \
-DUA_ENABLE_SUBSCRIPTIONS_EVENTS=ON \
..
- name: Build open
shell: bash
working-directory: ./openRoot/build
run: cmake --build . --config "$BUILD_TYPE"
- name: Install open
shell: bash
working-directory: ./openRoot/build
run: sudo cmake --install .
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate
# build directory We'll use this as our working directory for all
# subsequent commands
shell: bash
run: cmake -E make_directory ${{ runner.temp }}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment
# variable access regardless of the host operating system
shell: bash
working-directory: ${{ runner.temp }}/build
# Note the current convention is to use the -S and -B options here
# to specify source and build directories, but this is only
# available with CMake 3.13 and higher. The CMake binaries on the
# Github Actions machines are (as of this writing) 3.28
run: |
cmake "$GITHUB_WORKSPACE" \
-DCMAKE_BUILD_TYPE=Debug \
-DENABLE_TESTING=ON \
-DBUILD_SHARED_LIBS=ON \
-DENABLE_DATATYPEIMPORT_TEST=ON \
-DCALC_COVERAGE=ON \
..
- name: Build
shell: bash
working-directory: ${{ runner.temp }}/build
# Execute the build. You can specify a specific target
# with "--target <NAME>"
run: sudo cmake --build . --config "$BUILD_TYPE"
- name: Test
shell: bash
working-directory: ${{ runner.temp }}/build
run: make test
- name: Test with memcheck
shell: bash
working-directory: ${{ runner.temp }}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html
# for more detail
run: |
ctest \
--verbose \
--overwrite \
MemoryCheckCommandOptions="--leak-check=full --error-exitcode=100" \
-T memcheck
- name: CalculateCoverage
shell: bash
working-directory: ${{ runner.temp }}/build
run: cmake --build . --target coverage
- uses: codecov/codecov-action@v4
with:
file: ${{ runner.temp }}/build/coverage/coverage.info # optional
verbose: true # optional (default = false)