Skip to content

Commit ee2f1e9

Browse files
committed
first main merge attempt
2 parents 1518b40 + 53dd4d6 commit ee2f1e9

112 files changed

Lines changed: 4211 additions & 5358 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.builder/actions/build_samples.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,34 @@ def run(self, env):
1919

2020
steps = []
2121
samples = [
22-
'samples/commands/commands-sandbox',
22+
'samples/service_clients/commands/commands-sandbox',
2323
'samples/greengrass/basic_discovery',
2424
'samples/greengrass/ipc',
25-
'samples/fleet_provisioning/provision-basic',
26-
'samples/fleet_provisioning/provision-csr',
27-
'samples/jobs/jobs-sandbox',
28-
'samples/mqtt5/mqtt5_pubsub',
29-
'samples/mqtt5/mqtt5_shared_subscription',
30-
'samples/secure_tunneling/secure_tunnel',
31-
'samples/secure_tunneling/tunnel_notification',
32-
'samples/shadow/shadow-sandbox',
25+
'samples/service_clients/fleet_provisioning/provision-basic',
26+
'samples/service_clients/fleet_provisioning/provision-csr',
27+
'samples/service_clients/jobs/jobs-sandbox',
28+
'samples/mqtt/mqtt5_x509',
29+
'samples/mqtt/mqtt5_aws_websocket',
30+
'samples/mqtt/mqtt5_custom_auth_signed',
31+
'samples/mqtt/mqtt5_custom_auth_unsigned',
32+
'samples/mqtt/mqtt5_pkcs11',
33+
'samples/others/secure_tunneling/secure_tunnel',
34+
'samples/others/secure_tunneling/tunnel_notification',
35+
'samples/service_clients/shadow/shadow-sandbox',
3336
]
3437

3538
defender_samples = []
3639
# Linux only builds
3740
if sys.platform == "linux" or sys.platform == "linux2":
38-
defender_samples.append('samples/device_defender/basic_report')
39-
defender_samples.append('samples/device_defender/mqtt5_basic_report')
40-
41-
da_samples = [
42-
'deviceadvisor/tests/mqtt_connect',
43-
'deviceadvisor/tests/mqtt_publish',
44-
'deviceadvisor/tests/mqtt_subscribe',
45-
'deviceadvisor/tests/shadow_update'
46-
]
41+
defender_samples.append('samples/others/device_defender/mqtt5_basic_report')
4742

4843
servicetests = [
4944
'servicetests/tests/JobsExecution/',
5045
'servicetests/tests/FleetProvisioning/',
5146
'servicetests/tests/ShadowUpdate/',
5247
]
5348

54-
for sample_path in itertools.chain(samples, servicetests, da_samples, defender_samples):
49+
for sample_path in itertools.chain(samples, servicetests, defender_samples):
5550
build_path = os.path.join('build', sample_path)
5651
steps.append(['cmake',
5752
f'-B{build_path}',

.github/workflows/ci.yml

Lines changed: 32 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
- 'docs'
88

99
env:
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
@@ -26,7 +26,6 @@ env:
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
@@ -37,6 +36,7 @@ jobs:
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 }}

.github/workflows/ci_run_greengrass_discovery_cfg.json

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)