1- name : tardigrade
1+ name : OTA resilience canary
22
33on :
4- pull_request :
54 push :
6- branches : [main]
5+ branches :
6+ - main
7+ paths :
8+ - .github/workflows/tardigrade.yaml
9+ - boot/**
10+ - scripts/**
11+ - zephyr/**
12+ - root-rsa-2048.pem
13+ schedule :
14+ - cron : ' 0 8 * * 1'
715 workflow_dispatch :
16+ inputs :
17+ zephyr_ref :
18+ description : ' Which Zephyr ref should be used?'
19+ required : true
20+ default : ' main'
21+
22+ permissions :
23+ contents : read
824
925concurrency :
1026 group : ${{ github.workflow }}-${{ github.ref }}
1127 cancel-in-progress : true
1228
29+ env :
30+ ZEPHYR_VERSION : main
31+
1332jobs :
14- swap-move :
33+ swap-move-canary :
1534 runs-on : ubuntu-24.04
1635 container :
1736 image : zephyrprojectrtos/ci-base:v0.28.4
@@ -22,11 +41,16 @@ jobs:
2241 shell : bash
2342
2443 steps :
44+ - name : Set Zephyr version for manual runs
45+ if : github.event_name == 'workflow_dispatch'
46+ run : |
47+ echo "ZEPHYR_VERSION=${{ github.event.inputs.zephyr_ref }}" >> $GITHUB_ENV
48+
2549 - name : Checkout Zephyr
2650 uses : actions/checkout@v4
2751 with :
2852 repository : zephyrproject-rtos/zephyr
29- ref : main
53+ ref : ${{ env.ZEPHYR_VERSION }}
3054 path : repos/zephyr
3155
3256 - name : Install Zephyr Python requirements
4266 west-project-filter : -.*,+cmsis,+cmsis_6,+hal_nordic,+mbedtls,+mcuboot,+tinycrypt,+zcbor
4367 ccache-max-size : 256MB
4468
45- - name : Checkout MCUboot (PR HEAD)
69+ - name : Checkout MCUboot
4670 uses : actions/checkout@v4
4771 with :
4872 fetch-depth : 0
91115
92116 ls -la slot0.bin slot1.bin
93117
94- - name : Write tardigrade profile
118+ - name : Write canary profile
95119 working-directory : repos
96120 run : |
97121 BOOT_ELF="$(realpath build_boot/zephyr/zephyr.elf)"
@@ -100,11 +124,11 @@ jobs:
100124
101125 cat > tardigrade_profile.yaml << YAML
102126 schema_version: 1
103- name: mcuboot_swap_move_ci
127+ name: mcuboot_swap_move_canary
104128 description: >
105- MCUboot swap-using-move on nrf52840dk, built from PR HEAD.
106- Upgrade scenario: slot0 has confirmed v1, slot1 has pending v2.
107- After swap, exec slot should contain the v2 image.
129+ Post-merge OTA resilience canary for MCUboot swap-using-move on
130+ nrf52840dk. Upgrade scenario: slot0 has confirmed v1, slot1 has
131+ pending v2. After swap, exec slot should contain the v2 image.
108132
109133 platform: platforms/cortex_m4_flash_fast.repl
110134 bootloader:
@@ -139,9 +163,9 @@ jobs:
139163 sed -i 's/^ //' tardigrade_profile.yaml
140164 cat tardigrade_profile.yaml
141165
142- - name : Run tardigrade fault injection
166+ - name : Run OTA resilience sweep
143167 id : tardigrade
144- uses : neilberkman/tardigrade@v1
168+ uses : neilberkman/tardigrade@052e70add7c987f667cf4de9ea22e54d7ac7bddf
145169 with :
146170 profile : repos/tardigrade_profile.yaml
147171 quick : " false"
@@ -151,7 +175,8 @@ jobs:
151175 if : always()
152176 uses : actions/upload-artifact@v4
153177 with :
154- name : tardigrade-swap-move
178+ name : ota-resilience-swap-move
179+ if-no-files-found : ignore
155180 path : |
156181 repos/tardigrade_profile.yaml
157182 ${{ steps.tardigrade.outputs.report-path }}
0 commit comments