-
Notifications
You must be signed in to change notification settings - Fork 33
152 lines (146 loc) · 5.16 KB
/
build-and-target-test.yml
File metadata and controls
152 lines (146 loc) · 5.16 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
name: Build and Test
on:
workflow_dispatch:
inputs:
device_thingy91x:
description: 'Test thingy91x'
type: boolean
required: false
default: false
device_nrf9151dk:
description: 'Test nrf9151dk'
type: boolean
required: false
default: false
device_ppk_thingy91x:
description: 'Test ppk_thingy91x'
type: boolean
required: false
default: false
device_gnss_nrf9151dk:
description: 'Test gnss_nrf9151dk'
type: boolean
required: false
default: false
device_prov_thingy91x:
description: 'Test prov_thingy91x'
type: boolean
required: false
default: false
run_nightly_tests:
description: 'Include slow tests for the selected boards'
type: boolean
required: false
default: false
workflow_call:
inputs:
build_type:
description: 'Override build scope (leave empty to auto-derive from selected devices)'
type: string
required: false
default: ""
schedule:
- cron: "0 0 * * *"
push:
branches:
- main
paths-ignore:
- "docs/**"
jobs:
setup:
runs-on: ubuntu-latest
outputs:
devices: ${{ steps.setup.outputs.devices }}
build_type: ${{ steps.setup.outputs.build_type }}
push_memory_badges: ${{ steps.setup.outputs.push_memory_badges == 'true' }}
run_nightly_tests: ${{ steps.setup.outputs.run_nightly_tests == 'true' }}
steps:
- name: Setup
id: setup
run: |
SCHEDULED=${{ github.event_name == 'schedule' }}
PUSH=${{ github.event_name == 'push' }}
push_memory_badges=false
if [[ $SCHEDULED == true ]]; then
devices="thingy91x nrf9151dk ppk_thingy91x gnss_nrf9151dk prov_thingy91x"
push_memory_badges=true
run_nightly_tests=true
elif [[ $PUSH == true ]]; then
devices="thingy91x"
build_type=all
else
# Build devices list from selected checkboxes
devices=""
if [[ "${{ inputs.device_thingy91x }}" == "true" ]]; then
devices="$devices thingy91x"
fi
if [[ "${{ inputs.device_nrf9151dk }}" == "true" ]]; then
devices="$devices nrf9151dk"
fi
if [[ "${{ inputs.device_ppk_thingy91x }}" == "true" ]]; then
devices="$devices ppk_thingy91x"
fi
if [[ "${{ inputs.device_gnss_nrf9151dk }}" == "true" ]]; then
devices="$devices gnss_nrf9151dk"
fi
if [[ "${{ inputs.device_prov_thingy91x }}" == "true" ]]; then
devices="$devices prov_thingy91x"
fi
# Trim leading space
devices=$(echo "$devices" | xargs)
if [[ -z "$devices" ]]; then
echo "ERROR: At least one device must be selected"
exit 1
fi
run_nightly_tests=${{ inputs.run_nightly_tests }}
fi
# Derive build_type unless explicitly overridden via workflow_call input.
# minimal: thingy91x base firmware only (sufficient when only thingy91x-family devices selected)
# release: only set explicitly via workflow_call (e.g. release workflow)
# all: builds everything
only_thingy91x_family=false
for d in $devices; do
if [[ "$d" == "thingy91x" || "$d" == "ppk_thingy91x" || "$d" == "prov_thingy91x" ]]; then
only_thingy91x_family=true
else
only_thingy91x_family=false
break
fi
done
if [[ -n "${build_type:-}" ]]; then
: # build_type already set (e.g. push or schedule)
elif [[ -n "${{ inputs.build_type }}" ]]; then
build_type=${{ inputs.build_type }}
elif [[ "$only_thingy91x_family" == "true" && "${run_nightly_tests:-false}" != "true" ]]; then
build_type=minimal
else
build_type=all
fi
echo "devices=$devices"
echo "build_type=$build_type"
echo "push_memory_badges=$push_memory_badges"
echo "run_nightly_tests=${run_nightly_tests:-false}"
echo "devices=$devices" >> $GITHUB_OUTPUT
echo "build_type=$build_type" >> $GITHUB_OUTPUT
echo "push_memory_badges=$push_memory_badges" >> $GITHUB_OUTPUT
echo "run_nightly_tests=${run_nightly_tests:-false}" >> $GITHUB_OUTPUT
build:
needs: setup
uses: ./.github/workflows/build.yml
secrets: inherit
with:
build_type: ${{ needs.setup.outputs.build_type }}
push_memory_badges: ${{ needs.setup.outputs.push_memory_badges == 'true' }}
test:
permissions:
actions: read
contents: write
packages: read
uses: ./.github/workflows/target-test.yml
needs: [build, setup]
secrets: inherit
with:
artifact_fw_version: ${{ needs.build.outputs.version }}
artifact_run_id: ${{ needs.build.outputs.run_id }}
devices: ${{ needs.setup.outputs.devices }}
run_nightly_tests: ${{ needs.setup.outputs.run_nightly_tests == 'true' }}