77 - ' docs'
88
99env :
10- BUILDER_VERSION : v0.9.79
10+ BUILDER_VERSION : v0.9.84
1111 BUILDER_SOURCE : releases
1212 BUILDER_HOST : https://d19elf31gohf1l.cloudfront.net
1313 PACKAGE_NAME : aws-iot-device-sdk-cpp-v2
2626 CI_IOT_CONTAINERS : arn:aws:iam::123124136734:role/CRT_IoT_Containers
2727 CI_CYCLEPUBSUB_ROLE : arn:aws:iam::180635532705:role/CI_CyclePubSub_Role
2828 CI_FLEET_PROVISIONING_ROLE : arn:aws:iam::180635532705:role/service-role/CI_FleetProvisioning_Role
29- CI_DEVICE_ADVISOR : arn:aws:iam::180635532705:role/CI_DeviceAdvisor_Role
3029 CI_DEVICE_DEFENDER : arn:aws:iam::180635532705:role/CI_DeviceDefender_Role
3130 CI_SECURE_TUNNEL : arn:aws:iam::180635532705:role/CI_SecureTunnel_Role
3231 CI_MQTT5_ROLE : arn:aws:iam::180635532705:role/CI_MQTT5_Role
3736 linux-compat :
3837 runs-on : ubuntu-22.04
3938 strategy :
39+ fail-fast : false
4040 fail-fast : false
4141 matrix :
4242 image :
@@ -56,13 +56,16 @@ jobs:
5656 with :
5757 role-to-assume : ${{ env.CI_IOT_CONTAINERS }}
5858 aws-region : ${{ env.AWS_DEFAULT_REGION }}
59+ # Bump from default 1 hour to 2 hours to allow tests to complete
60+ role-duration-seconds : 7200
5961 - name : Install qemu/docker
6062 run : docker run --privileged --rm tonistiigi/binfmt --install all
6163 - name : Build ${{ env.PACKAGE_NAME }}
6264 run : |
6365 aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
6466 ./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }} \
6567 --cmake-extra=-DAWS_CRT_DISABLE_DEPRECATION_WARNINGS=ON
68+
6669 raspberry :
6770 runs-on : ubuntu-24.04 # latest
6871 strategy :
@@ -168,27 +171,7 @@ jobs:
168171 cd ${{ env.CI_FOLDER }}
169172 python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz', 'builder.pyz')"
170173 python builder.pyz build -p ${{ env.PACKAGE_NAME }}
171- - name : Running samples in CI setup
172- run : |
173- python -m pip install boto3
174- - name : configure AWS credentials (MQTT5)
175- uses : aws-actions/configure-aws-credentials@v4
176- with :
177- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
178- aws-region : ${{ env.AWS_DEFAULT_REGION }}
179- - name : run MQTT5 PubSub sample
180- run : |
181- cd ${{ env.CI_FOLDER }}
182- python ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_windows_cfg.json
183- - name : configure AWS credentials (Device Advisor)
184- uses : aws-actions/configure-aws-credentials@v4
185- with :
186- role-to-assume : ${{ env.CI_DEVICE_ADVISOR }}
187- aws-region : ${{ env.AWS_DEFAULT_REGION }}
188- - name : run DeviceAdvisor
189- run : |
190- cd ${{ env.CI_FOLDER }}/aws-iot-device-sdk-cpp-v2
191- python ./deviceadvisor/script/DATestRun.py
174+
192175 windows-vs17 :
193176 runs-on : windows-2025
194177 strategy :
@@ -213,29 +196,28 @@ jobs:
213196 cd ${{ env.CI_FOLDER }}
214197 python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
215198 python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-Tv143 --cmake-extra=-A${{ matrix.arch }}
216- - name : Running samples in CI setup
217- run : |
218- python -m pip install boto3
219- - name : configure AWS credentials (MQTT5)
199+
200+ windows-no-cpu-extensions :
201+ runs-on : windows-latest
202+ permissions :
203+ id-token : write # This is required for requesting the JWT
204+ steps :
205+ - name : configure AWS credentials (containers)
220206 uses : aws-actions/configure-aws-credentials@v4
221207 with :
222- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
208+ role-to-assume : ${{ env.CI_IOT_CONTAINERS }}
223209 aws-region : ${{ env.AWS_DEFAULT_REGION }}
224- - name : run MQTT5 PubSub sample
210+ - name : Build ${{ env.PACKAGE_NAME }} + consumers
211+ env :
212+ CL : " /DAWS_CRT_DISABLE_DEPRECATION_WARNINGS /EHsc"
225213 run : |
214+ md ${{ env.CI_FOLDER }}
226215 cd ${{ env.CI_FOLDER }}
227- python ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_windows_cfg.json
228- - name : configure AWS credentials (Device Advisor)
229- uses : aws-actions/configure-aws-credentials@v4
230- with :
231- role-to-assume : ${{ env.CI_DEVICE_ADVISOR }}
232- aws-region : ${{ env.AWS_DEFAULT_REGION }}
233- - name : run DeviceAdvisor
234- run : |
235- cd ${{ env.CI_FOLDER }}/aws-iot-device-sdk-cpp-v2
236- python ./deviceadvisor/script/DATestRun.py
237- windows-no-cpu-extensions :
238- runs-on : windows-latest
216+ python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz', 'builder.pyz')"
217+ python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DUSE_CPU_EXTENSIONS=OFF
218+
219+ windows-app-verifier :
220+ runs-on : windows-2025
239221 permissions :
240222 id-token : write # This is required for requesting the JWT
241223 steps :
@@ -245,8 +227,6 @@ jobs:
245227 role-to-assume : ${{ env.CI_IOT_CONTAINERS }}
246228 aws-region : ${{ env.AWS_DEFAULT_REGION }}
247229 - name : Build ${{ env.PACKAGE_NAME }} + consumers
248- env :
249- CL : " /DAWS_CRT_DISABLE_DEPRECATION_WARNINGS /EHsc"
250230 run : |
251231 md ${{ env.CI_FOLDER }}
252232 cd ${{ env.CI_FOLDER }}
@@ -260,19 +240,12 @@ jobs:
260240 with :
261241 role-to-assume : ${{ env.CI_MQTT5_ROLE }}
262242 aws-region : ${{ env.AWS_DEFAULT_REGION }}
263- - name : run MQTT5 PubSub sample
243+ - name : Run and check AppVerifier
264244 run : |
265245 cd ${{ env.CI_FOLDER }}
266- python ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_windows_cfg.json
267- - name : configure AWS credentials (Device Advisor)
268- uses : aws-actions/configure-aws-credentials@v4
269- with :
270- role-to-assume : ${{ env.CI_DEVICE_ADVISOR }}
271- aws-region : ${{ env.AWS_DEFAULT_REGION }}
272- - name : run DeviceAdvisor
273- run : |
274- cd ${{ env.CI_FOLDER }}/aws-iot-device-sdk-cpp-v2
275- python ./deviceadvisor/script/DATestRun.py
246+ echo "Starting to run AppVerifier with mqtt5 pub-sub sample"
247+ python ${{ env.CI_UTILS_FOLDER }}/appverifier_launch_sample.py --sample_file ".\aws-iot-device-sdk-cpp-v2\build\samples\mqtt\mqtt5_x509\RelWithDebInfo\mqtt5_x509.exe" --sample_secret_endpoint 'ci/endpoint' --sample_secret_certificate 'ci/mqtt5/us/mqtt5_thing/cert' --sample_secret_private_key 'ci/mqtt5/us/mqtt5_thing/key'
248+
276249 windows-shared-lib :
277250 runs-on : windows-latest
278251 permissions :
@@ -313,33 +286,8 @@ jobs:
313286 run : |
314287 python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz', 'builder')"
315288 chmod a+x builder
316- ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream \
317- --cmake-extra=-DAWS_CRT_DISABLE_DEPRECATION_WARNINGS=ON
318- - name : Running samples in CI setup
319- run : |
320- python3 -m venv .venv
321- source .venv/bin/activate
322- python3 -m pip install boto3
323- - name : configure AWS credentials (MQTT5)
324- uses : aws-actions/configure-aws-credentials@v4
325- with :
326- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
327- aws-region : ${{ env.AWS_DEFAULT_REGION }}
328- - name : run MQTT5 PubSub sample
329- run : |
330- source .venv/bin/activate
331- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_cfg.json
332- - name : configure AWS credentials (Device Advisor)
333- uses : aws-actions/configure-aws-credentials@v4
334- with :
335- role-to-assume : ${{ env.CI_DEVICE_ADVISOR }}
336- aws-region : ${{ env.AWS_DEFAULT_REGION }}
337- - name : run DeviceAdvisor
338- run : |
339- source .venv/bin/activate
340- cd ./aws-iot-device-sdk-cpp-v2
341- python3 ./deviceadvisor/script/DATestRun.py
342- # Not strictly needed, but allows us to run Device Advisor and PubSub on Linux without needing to run all samples
289+ ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
290+
343291 linux-github-actions :
344292 runs-on : ubuntu-latest
345293 strategy :
@@ -356,26 +304,9 @@ jobs:
356304 run : |
357305 python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
358306 python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DAWS_CRT_DISABLE_DEPRECATION_WARNINGS=ON
359- - name : Running samples in CI setup
307+ - name : Device Defender setup
360308 run : |
361309 python3 -m pip install boto3
362- - name : configure AWS credentials (MQTT5)
363- uses : aws-actions/configure-aws-credentials@v4
364- with :
365- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
366- aws-region : ${{ env.AWS_DEFAULT_REGION }}
367- - name : run MQTT5 PubSub sample
368- run : |
369- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_cfg.json
370- - name : configure AWS credentials (Device Advisor)
371- uses : aws-actions/configure-aws-credentials@v4
372- with :
373- role-to-assume : ${{ env.CI_DEVICE_ADVISOR }}
374- aws-region : ${{ env.AWS_DEFAULT_REGION }}
375- - name : run DeviceAdvisor
376- run : |
377- cd ./aws-iot-device-sdk-cpp-v2
378- python3 ./deviceadvisor/script/DATestRun.py
379310 - name : configure AWS credentials (Device Defender)
380311 uses : aws-actions/configure-aws-credentials@v4
381312 with :
@@ -389,7 +320,7 @@ jobs:
389320 run : |
390321 cd ./aws-iot-device-sdk-cpp-v2
391322 python3 ./devicedefender/script/DDTestRun.py mqtt5
392- # Runs the samples and ensures that everything is working
323+
393324 linux-smoke-tests :
394325 runs-on : ubuntu-22.04
395326 strategy :
@@ -447,7 +378,6 @@ jobs:
447378 run : |
448379 export PYTHONPATH=${{ github.workspace }}/aws-iot-device-sdk-cpp-v2/utils
449380 python3 ./test_cases/test_fleet_provisioning.py --config-file test_cases/mqtt5_fleet_provisioning_with_csr_cfg.json --thing-name-prefix Fleet_Thing_
450-
451381 - name : configure AWS credentials (Jobs)
452382 uses : aws-actions/configure-aws-credentials@v4
453383 with :
@@ -488,28 +418,7 @@ jobs:
488418 run : |
489419 export PYTHONPATH=${{ github.workspace }}/aws-iot-device-sdk-cpp-v2/utils
490420 python3 ./test_cases/test_shadow_update.py --config-file test_cases/mqtt5_named_shadow_cfg.json
491- - name : configure AWS credentials (MQTT5)
492- uses : aws-actions/configure-aws-credentials@v4
493- with :
494- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
495- aws-region : ${{ env.AWS_DEFAULT_REGION }}
496- - name : run MQTT5 PubSub sample
497- run : |
498- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_cfg.json
499- - name : run MQTT5 Shared Subscription sample
500- run : |
501- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_shared_subscription_cfg.json
502- - name : configure AWS credentials (Secure tunneling)
503- uses : aws-actions/configure-aws-credentials@v4
504- with :
505- role-to-assume : ${{ env.CI_SECURE_TUNNEL }}
506- aws-region : ${{ env.AWS_DEFAULT_REGION }}
507- # Secure Tunneling has special requirements, so it uses a different Python file
508- - name : run Secure Tunneling sample
509- run : |
510- python3 ${{ env.CI_UTILS_FOLDER }}/run_secure_tunnel_ci.py --sample_file "./aws-iot-device-sdk-cpp-v2/build/samples/secure_tunneling/secure_tunnel/secure-tunnel" --sample_region ${{ env.AWS_DEFAULT_REGION }}
511421
512- # check that docs can still build
513422 check-docs :
514423 runs-on : ubuntu-22.04 # latest
515424 steps :
@@ -530,6 +439,7 @@ jobs:
530439 cd ../..
531440 echo "Finished compiling and installing Doxygen"
532441 ./make-docs.py
442+
533443 check-submodules :
534444 runs-on : ubuntu-latest
535445 steps :
@@ -645,23 +555,3 @@ jobs:
645555 run : |
646556 export PYTHONPATH=${{ github.workspace }}/aws-iot-device-sdk-cpp-v2/utils
647557 python3 ./test_cases/test_shadow_update.py --config-file test_cases/mqtt5_named_shadow_cfg.json
648- - name : configure AWS credentials (MQTT5)
649- uses : aws-actions/configure-aws-credentials@v4
650- with :
651- role-to-assume : ${{ env.CI_MQTT5_ROLE }}
652- aws-region : ${{ env.AWS_DEFAULT_REGION }}
653- - name : run MQTT5 PubSub sample
654- run : |
655- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_pubsub_cfg.json
656- - name : run MQTT5 Shared Subscription sample
657- run : |
658- python3 ${{ env.CI_UTILS_FOLDER }}/run_sample_ci.py --file ${{ env.CI_SAMPLES_CFG_FOLDER }}/ci_run_mqtt5_shared_subscription_cfg.json
659- - name : configure AWS credentials (Secure tunneling)
660- uses : aws-actions/configure-aws-credentials@v4
661- with :
662- role-to-assume : ${{ env.CI_SECURE_TUNNEL }}
663- aws-region : ${{ env.AWS_DEFAULT_REGION }}
664- # Secure Tunneling has special requirements, so it uses a different Python file
665- - name : run Secure Tunneling sample
666- run : |
667- python3 ${{ env.CI_UTILS_FOLDER }}/run_secure_tunnel_ci.py --sample_file "./aws-iot-device-sdk-cpp-v2/build/samples/secure_tunneling/secure_tunnel/secure-tunnel" --sample_region ${{ env.AWS_DEFAULT_REGION }}
0 commit comments