7
7
branches : ["**"]
8
8
workflow_dispatch :
9
9
10
+ env :
11
+ bashPass : \033[32;1mPASSED -
12
+ bashWarn : \033[33;1mWARNING -
13
+ bashFail : \033[31;1mFAILED -
14
+ bashEnd : \033[0m
15
+
10
16
jobs :
11
17
unittest :
12
18
runs-on : ubuntu-latest
13
19
steps :
14
20
- name : Clone This Repo
15
- uses : actions/checkout@v2
21
+ uses : actions/checkout@v3
16
22
with :
17
23
submodules : recursive
18
- - name : Build
24
+ - env :
25
+ stepName : Build Unit Tests
26
+ name : ${{ env.stepName }}
19
27
run : |
28
+ # ${{ env.stepName }}
29
+ echo "::group::Install Dependencies"
20
30
git submodule update --checkout
21
31
cd tools/CMock
22
32
git submodule update --init vendor/unity
23
33
cd ../..
24
34
sudo apt-get install -y lcov
25
35
sudo apt-get install -y unifdef
36
+ echo "::endgroup::"
37
+
38
+ echo "::group:: ${{ env.stepName }}"
26
39
cmake -S test/unit-test -B test/unit-test/build/
27
40
make -C test/unit-test/build/ all
28
- - name : Test
41
+ echo "::endgroup::"
42
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
43
+
44
+ - env :
45
+ stepName : Run Unit Tests
46
+ name : ${{ env.stepName }}
47
+ shell : bash
29
48
run : |
30
- cd test/unit-test/build/
31
- ctest -E system --output-on-failure
32
- cd ..
33
- - name : Coverage
49
+ # ${{ env.stepName }}
50
+ echo "::group:: ${{ env.stepName }}"
51
+ ctest --test-dir test/unit-test/build/ -E system --output-on-failure
52
+ echo "::endgroup::"
53
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
54
+
55
+ - env :
56
+ stepName : Test Line and Branch Coverage
57
+ name : ${{ env.stepName }}
58
+ shell : bash
34
59
run : |
60
+ # ${{ env.stepName }}
61
+ echo "::group::Build Tests"
35
62
make -C test/unit-test/build/ coverage
63
+ echo "::endgroup::"
64
+ echo -e "${{ env.bashPass }} Built Coverage Tests ${{ env.bashEnd }}"
65
+
36
66
lcov --list --rc lcov_branch_coverage=1 test/unit-test/build/coverage.info
67
+
68
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
69
+
37
70
- name : Check Coverage
38
71
uses : FreeRTOS/CI-CD-Github-Actions/coverage-cop@main
39
72
with :
@@ -42,36 +75,17 @@ jobs:
42
75
spell-check :
43
76
runs-on : ubuntu-latest
44
77
steps :
45
- - name : Checkout Parent Repo
46
- uses : actions/checkout@v2
47
- with :
48
- ref : main
49
- repository : aws/aws-iot-device-sdk-embedded-C
50
- path : main
51
78
- name : Clone This Repo
52
- uses : actions/checkout@v2
79
+ uses : actions/checkout@v3
80
+ - name : Run spellings check
81
+ uses : FreeRTOS/CI-CD-Github-Actions/spellings@main
53
82
with :
54
- path : ./tcp
55
- - name : Install spell
56
- run : |
57
- sudo apt-get install spell
58
- sudo apt-get install util-linux
59
- - name : Check spelling
60
- run : |
61
- PATH=$PATH:main/tools/spell
62
- # Make sure that the portable directory is not included in the spellcheck.
63
- sed -i 's/find $DIRNAME/find $DIRNAME -not -path '*portable*'/g' main/tools/spell/find-unknown-comment-words
64
- find-unknown-comment-words --directory tcp/ --lexicon tcp/lexicon.txt
65
- if [ "$?" = "0" ]; then
66
- exit 0
67
- else
68
- exit 1
69
- fi
83
+ path : ./
70
84
71
85
formatting :
72
86
runs-on : ubuntu-20.04
73
87
steps :
74
- - uses : actions/checkout@v2
88
+ - uses : actions/checkout@v3
75
89
- name : Check formatting
76
90
uses : FreeRTOS/CI-CD-Github-Actions/formatting@main
77
91
with :
80
94
doxygen :
81
95
runs-on : ubuntu-latest
82
96
steps :
83
- - uses : actions/checkout@v2
97
+ - uses : actions/checkout@v3
84
98
- name : Run doxygen build
85
99
uses : FreeRTOS/CI-CD-Github-Actions/doxygen@main
86
100
with :
@@ -102,56 +116,130 @@ jobs:
102
116
run : git submodule update --checkout --init --recursive
103
117
104
118
- name : Run manifest verifier
105
- uses : FreeRTOS/CI-CD-GitHub-Actions/manifest-verifier@v2
119
+ uses : FreeRTOS/CI-CD-GitHub-Actions/manifest-verifier@main
106
120
with :
107
121
path : ./
108
122
fail-on-incorrect-version : true
109
123
124
+ link-verifier :
125
+ runs-on : ubuntu-latest
126
+ steps :
127
+ - uses : actions/checkout@v3
128
+ - name : Check Links
129
+ env :
130
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
131
+ uses : FreeRTOS/CI-CD-Github-Actions/link-verifier@main
132
+
110
133
build-checks :
111
134
runs-on : ubuntu-latest
112
135
steps :
113
- - uses : actions/checkout@v2
114
- - name : Build Install Dependencies
136
+ - uses : actions/checkout@v3
137
+ - env :
138
+ stepName : Build Install Dependencies
139
+ name : ${{ env.stepName }}
115
140
run : |
141
+ # ${{ env.stepName }}
142
+ echo "::group:: ${{ env.stepName }}"
116
143
sudo apt-get install -y libpcap-dev
117
- - name : Build checks (Enable all functionalities)
144
+ echo "::endgroup::"
145
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
146
+
147
+ - env :
148
+ stepName : Build checks (Enable all functionalities)
149
+ name : ${{ env.stepName }}
118
150
run : |
151
+ # ${{ env.stepName }}
152
+ echo "::group:: ${{ env.stepName }}"
119
153
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL
120
154
cmake --build build --target freertos_plus_tcp_build_test
121
- - name : Build checks (Enable all functionalities IPv4)
155
+ echo "::endgroup::"
156
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
157
+
158
+ - env :
159
+ stepName : Build checks (Enable all functionalities IPv4)
160
+ name : ${{ env.stepName }}
122
161
run : |
162
+ # ${{ env.stepName }}
163
+ echo "::group:: ${{ env.stepName }}"
123
164
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4
124
165
cmake --build build --target clean
125
166
cmake --build build --target freertos_plus_tcp_build_test
126
- - name : Build checks (Enable all functionalities IPv6)
167
+ echo "::endgroup::"
168
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
169
+
170
+ - env :
171
+ stepName : Build checks (Enable all functionalities IPv6)
172
+ name : ${{ env.stepName }}
127
173
run : |
174
+ # ${{ env.stepName }}
175
+ echo "::group:: ${{ env.stepName }}"
128
176
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV6
129
177
cmake --build build --target freertos_plus_tcp_build_test
130
- - name : Build checks (Enable all functionalities IPv4 IPv6)
178
+ echo "::endgroup::"
179
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
180
+
181
+ - env :
182
+ stepName : Build checks (Enable all functionalities IPv4 IPv6)
183
+ name : ${{ env.stepName }}
131
184
run : |
185
+ # ${{ env.stepName }}
186
+ echo "::group:: ${{ env.stepName }}"
132
187
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4_IPV6
133
188
cmake --build build --target clean
134
189
cmake --build build --target freertos_plus_tcp_build_test
135
- - name : Build checks (Enable all functionalities IPv4 TCP)
190
+ echo "::endgroup::"
191
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
192
+
193
+ - env :
194
+ stepName : Build checks (Enable all functionalities IPv4 TCP)
195
+ name : ${{ env.stepName }}
136
196
run : |
197
+ # ${{ env.stepName }}
198
+ echo "::group:: ${{ env.stepName }}"
137
199
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV4_TCP
138
200
cmake --build build --target clean
139
201
cmake --build build --target freertos_plus_tcp_build_test
140
- - name : Build checks (Enable all functionalities IPv6 TCP)
202
+ echo "::endgroup::"
203
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
204
+
205
+ - env :
206
+ stepName : Build checks (Enable all functionalities IPv6 TCP)
207
+ name : ${{ env.stepName }}
141
208
run : |
209
+ # ${{ env.stepName }}
210
+ echo "::group:: ${{ env.stepName }}"
142
211
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=ENABLE_ALL_IPV6_TCP
143
212
cmake --build build --target freertos_plus_tcp_build_test
144
- - name : Build checks (Disable all functionalities)
213
+ echo "::endgroup::"
214
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
215
+
216
+ - env :
217
+ stepName : Build checks (Disable all functionalities)
218
+ name : ${{ env.stepName }}
145
219
run : |
220
+ # ${{ env.stepName }}
221
+ echo "::group:: ${{ env.stepName }}"
146
222
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=DISABLE_ALL
147
223
cmake --build build --target clean
148
224
cmake --build build --target freertos_plus_tcp_build_test
149
- - name : Build checks (Default configuration)
225
+ echo "::endgroup::"
226
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
227
+
228
+ - env :
229
+ stepName : Build checks (Default configuration)
230
+ name : ${{ env.stepName }}
150
231
run : |
232
+ # ${{ env.stepName }}
233
+ echo "::group:: ${{ env.stepName }}"
151
234
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=DEFAULT_CONF
152
235
cmake --build build --target clean
153
236
cmake --build build --target freertos_plus_tcp_build_test
154
- - name : Build checks (Header Self Contain)
237
+ echo "::endgroup::"
238
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
239
+
240
+ - env :
241
+ stepName : Build checks (Header Self Contain)
242
+ shell : bash
155
243
run : |
156
244
cmake -S . -B build -DFREERTOS_PLUS_TCP_TEST_CONFIGURATION=HEADER_SELF_CONTAIN
157
245
cmake --build build --target clean
@@ -167,13 +255,24 @@ jobs:
167
255
complexity :
168
256
runs-on : ubuntu-latest
169
257
steps :
170
- - uses : actions/checkout@v2
171
- - name : Setup
172
- run : sudo apt-get install complexity
173
- - name : Install Uncrustify
174
- run : sudo apt-get install uncrustify
175
- - name : Complexity
258
+ - uses : actions/checkout@v3
259
+ - env :
260
+ stepName : Setup
261
+ name : ${{ env.stepName }}
262
+ run : |
263
+ # ${{ env.stepName }}
264
+ echo "::group:: ${{ env.stepName }}"
265
+ sudo apt-get install complexity
266
+ sudo apt-get install uncrustify
267
+ echo "::endgroup::"
268
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
269
+
270
+ - env :
271
+ stepName : Complexity
272
+ name : ${{ env.stepName }}
176
273
run : |
274
+ # ${{ env.stepName }}
275
+ echo "::group:: ${{ env.stepName }}"
177
276
COMPLEXITY_PARAMS="--scores --threshold=10 --horrid-threshold=283"
178
277
TEMP_DIR=./temp
179
278
mkdir -p ${TEMP_DIR}
@@ -187,44 +286,71 @@ jobs:
187
286
find ${TEMP_DIR} -iname '*.c' | xargs complexity ${COMPLEXITY_PARAMS}
188
287
RESULT=$?
189
288
rm -rf ${TEMP_DIR}
289
+ echo "::endgroup::"
190
290
if [ "${RESULT}" = "0" ]; then
191
- echo "All is good. "
291
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} "
192
292
exit 0
193
293
else
194
- echo "Sources are too complex, rc = " ${RESULT}
294
+ echo -e "${{ env.bashFail }} Sources are too complex, rc = ${RESULT} ${{ env.bashEnd }}"
295
+ echo -e "${{ env.bashFail }} ${{ env.stepName }} ${{ env.bashEnd }}"
195
296
exit 1
196
297
fi
197
298
198
299
git-secrets :
199
300
runs-on : ubuntu-latest
200
301
steps :
201
- - uses : actions/checkout@v2
302
+ - uses : actions/checkout@v3
202
303
with :
203
304
submodules : recursive
204
305
- name : Checkout awslabs/git-secrets
205
- uses : actions/checkout@v2
306
+ uses : actions/checkout@v3
206
307
with :
207
308
repository : awslabs/git-secrets
208
309
ref : master
209
310
path : git-secrets
210
- - name : Install git-secrets
211
- run : cd git-secrets && sudo make install && cd ..
212
- - name : Run git-secrets
311
+ - env :
312
+ stepName : Install git-secrets
313
+ name : ${{ env.stepName }}
314
+ run : |
315
+ # ${{ env.stepName }}
316
+ echo "::group:: ${{ env.stepName }}"
317
+ cd git-secrets && sudo make install && cd ..
318
+ echo "::endgroup::"
319
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
320
+
321
+ - env :
322
+ stepName : Run git-secrets
323
+ name : ${{ env.stepName }}
213
324
run : |
325
+ # ${{ env.stepName }}
326
+ echo "::group:: ${{ env.stepName }}"
214
327
git-secrets --register-aws
215
328
git-secrets --scan
329
+ echo "::endgroup::"
330
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
216
331
217
332
proof_ci :
333
+ if : ${{ github.event.pull_request }}
218
334
runs-on : cbmc_ubuntu-latest_16-core
219
335
steps :
220
336
- name : Set up CBMC runner
221
337
uses : FreeRTOS/CI-CD-Github-Actions/set_up_cbmc_runner@main
222
338
with :
223
339
cbmc_version : " 5.61.0"
224
- - run : |
340
+
341
+ - env :
342
+ stepName : Install Dependencies
343
+ name : ${{ env.stepName }}
344
+ shell : bash
345
+ run : |
346
+ # ${{ env.stepName }}
347
+ echo "::group:: ${{ env.stepName }}"
225
348
git submodule update --init --checkout --recursive
226
349
sudo apt-get update
227
350
sudo apt-get install --yes --no-install-recommends gcc-multilib
351
+ echo "::endgroup::"
352
+ echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
353
+
228
354
- name : Run CBMC
229
355
uses : FreeRTOS/CI-CD-Github-Actions/run_cbmc@main
230
356
with :
0 commit comments