forked from mendersoftware/mender-mcu
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
194 lines (176 loc) · 5.82 KB
/
Copy path.gitlab-ci.yml
File metadata and controls
194 lines (176 loc) · 5.82 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
include:
- project: Northern.tech/Mender/mendertesting
file:
- qa-common/runner.yml
- qa-common/retry.yml
- component: gitlab.com/Northern.tech/Mender/mendertesting/commit-lint@master
- project: 'Northern.tech/Mender/mendertesting'
file:
- '.gitlab-ci-github-status-updates.yml'
- local: "/.gitlab/release.yaml"
- component: gitlab.com/Northern.tech/Mender/mendertesting/publish-codecov@master
inputs:
coverage_file: coverage.lcov
flag: unit-tests
- component: gitlab.com/renovate-bot/renovate-runner/renovate.gitlab-ci@main
stages:
- test
- changelog
- release
- trigger
- publish
- .post
variables:
# mender-artifact version for tests
MENDER_ARTIFACT_VERSION:
description: "mender-artifact version for tests"
value: 4.4.0
MENDER_MCU_INTEGRATION_REVISION:
description: |
Revision of mender-mcu-integration to trigger.
Should correspond to the gitlab branch: `pr_XXX`
value: main
# Renovate required variables
RENOVATE_PLATFORM: github
RENOVATE_ENDPOINT: "https://api.github.com"
RENOVATE_GIT_AUTHOR: "mender-test-bot <mender@northern.tech>"
RENOVATE_TOKEN: $GITHUB_BOT_TOKEN_REPO_FULL
RENOVATE_GITHUB_COM_TOKEN: $GITHUB_BOT_TOKEN_REPO_FULL
RENOVATE_REPOSITORIES: "mendersoftware/$CI_PROJECT_NAME"
RENOVATE_REQUIRE_CONFIG: "optional"
RENOVATE_ONBOARDING: "false"
RENOVATE_GIT_PRIVATE_KEY: $SSH_PRIVATE_KEY
RENOVATE_CONFIG_FILE: "$CI_PROJECT_DIR/renovate.json5"
FORCE_RENOVATE_RUN:
description: "Force a renovate bot run"
value: "false"
options:
- "true"
- "false"
default:
tags:
- hetzner-podman
retry: !reference [.qa-common-default-retry, retry]
# Override rules
renovate:
needs: []
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
- if: '$CI_PIPELINE_SOURCE == "web" && $FORCE_RENOVATE_RUN == "true"'
stage: test
tags:
- k8s-small
.test:static:
stage: test
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/ubuntu:24.04
needs: []
before_script:
- !reference [.qa-common-network-apt-retry, before_script]
- apt-get update && apt-get install -y git clang-format pcregrep
test:static:license:
extends: .test:static
script:
- ./.github/workflows/check_headers.sh
test:static:code:
extends: .test:static
script:
- ./.github/workflows/check_include_guards.sh
- ./.github/workflows/check_equivalence_tests.sh
- ./.github/workflows/check_code_format.sh
- ./.github/workflows/check_allocations.sh
test:smoke-build:posix:
stage: test
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/debian:12-slim
needs: []
before_script:
- !reference [.qa-common-network-apt-retry, before_script]
- apt-get update && apt-get install -yqq
cmake git make pkg-config python3
libcurl4-openssl-dev libcjson-dev
script:
- cmake -C cmake/CMake_posix_defaults.txt -B build tests/smoke
- cmake --build build --parallel $(nproc --all)
- ./build/mender-mcu-client.elf --help
test:smoke-build:weak:
stage: test
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/debian:12-slim
needs: []
before_script:
- !reference [.qa-common-network-apt-retry, before_script]
- apt-get update && apt-get install -yqq
cmake git make pkg-config python3
libcjson-dev
script:
- cmake -C cmake/CMake_weak_defaults.txt -B build tests/smoke
- cmake --build build --parallel $(nproc --all)
- ./build/mender-mcu-client.elf --help
test:unit:
stage: test
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/debian:12-slim
before_script:
- !reference [.qa-common-network-apt-retry, before_script]
- apt update && apt install -yyq
cmake git make pkg-config python3
libcurl4-openssl-dev libcjson-dev
g++ lcov wget
# Fetch and install mender-artifact
- wget "https://downloads.mender.io/repos/workstation-tools/pool/main/m/mender-artifact/mender-artifact_${MENDER_ARTIFACT_VERSION}-1+debian+bookworm_amd64.deb"
-O mender-artifact.deb &&
apt install -yyq ./mender-artifact.deb
script:
- cmake -D COVERAGE=ON tests/unit/
- make --jobs=$(nproc --all) --keep-going coverage
artifacts:
expire_in: 2w
reports:
junit: /tests/unit/reports/*.xml
paths:
- coverage.lcov
.test:static:template:
stage: test
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/ubuntu:24.04
before_script:
- !reference [.qa-common-network-apt-retry, before_script]
- apt update && apt install -yyq
cmake git make pkg-config python3
libcurl4-openssl-dev libcjson-dev
clang wget
# Fetch and install mender-artifact
- wget "https://downloads.mender.io/repos/workstation-tools/pool/main/m/mender-artifact/mender-artifact_${MENDER_ARTIFACT_VERSION}-1+ubuntu+noble_amd64.deb"
-O mender-artifact.deb &&
apt install -yyq ./mender-artifact.deb
- export CC=$(which clang)
- export CXX=$(which clang++)
script:
- cmake -D CMAKE_BUILD_TYPE=${BUILD_TYPE} tests/unit
- make --jobs=$(nproc --all) --keep-going check
test:static:asan:
extends: .test:static:template
variables:
BUILD_TYPE: ASan
test:static:threadsan:
extends: .test:static:template
tags:
# Hetzner Podman fails with Result: Segmentation fault
# Falling back to GCP runners
- mender-qa-worker-generic-light
variables:
BUILD_TYPE: ThreadSan
test:static:undefinedsan:
extends: .test:static:template
variables:
BUILD_TYPE: UndefSan
test:static:release:
extends: .test:static:template
variables:
BUILD_TYPE: Release
trigger:mender-mcu-integration:
stage: trigger
trigger:
project: Northern.tech/Mender/mender-mcu-integration
branch: ${MENDER_MCU_INTEGRATION_REVISION}
strategy: depend
variables:
MENDER_MCU_REVISION: $CI_COMMIT_SHA
PARENT_MENDER_MCU_PIPELINE_ID: $CI_PIPELINE_ID
PARENT_MENDER_MCU_COMMIT_BRANCH: $CI_COMMIT_BRANCH