Skip to content

Commit 8213a28

Browse files
workflows: add weekly profile to build-yocto and wire up weekly builds
Extend build-yocto.yml with a new 'weekly' profile that gates the qcom-distro-multimedia-demo-image build combination, mirroring the existing pattern used for the debug and performance distros. Add weekly-build-wrynose.yml and weekly-build.yml to trigger the weekly build on wrynose and master respectively, using profile: weekly. Signed-off-by: Ashwin Prabhakar <ashwin.prabhakar@oss.qualcomm.com>
1 parent 1699c45 commit 8213a28

3 files changed

Lines changed: 166 additions & 14 deletions

File tree

.github/workflows/build-yocto.yml

Lines changed: 76 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ on:
66
profile:
77
required: false
88
type: string
9-
default: "full" # values: pr | full
9+
default: "full" # values: pr | full | weekly
10+
git_ref:
11+
required: false
12+
type: string
13+
default: ""
1014
outputs:
1115
artifacts_url:
1216
description: "URL to retrieve build artifacts"
@@ -37,8 +41,10 @@ jobs:
3741
- uses: actions/checkout@v6
3842
with:
3943
persist-credentials: false
44+
ref: ${{ inputs.git_ref }}
4045

4146
- name: Run kas lock
47+
if: ${{ hashFiles('ci/base.lock.yml') == '' }}
4248
run: |
4349
${KAS_CONTAINER} lock --update ci/base.yml:ci/qcom-distro.yml
4450
@@ -62,6 +68,7 @@ jobs:
6268
- uses: actions/checkout@v6
6369
with:
6470
persist-credentials: false
71+
ref: ${{ inputs.git_ref }}
6572

6673
- name: Download kas lockfile
6774
uses: actions/download-artifact@v7
@@ -81,14 +88,14 @@ jobs:
8188
echo "KAS_CONTAINER=$KAS_CONTAINER" >> $GITHUB_ENV
8289
chmod +x $KAS_CONTAINER
8390
84-
- name: Run yocto-check-layer
85-
run: |
86-
ci/kas-container-shell-helper.sh ci/yocto-check-layer.sh
87-
8891
- name: Run Yocto patchreview
8992
run: |
9093
ci/kas-container-shell-helper.sh ci/yocto-patchreview.sh
9194
95+
- name: Run yocto-check-layer
96+
run: |
97+
ci/kas-container-shell-helper.sh ci/yocto-check-layer.sh
98+
9299
compile_warm_up:
93100
needs: kas-setup
94101
if: github.repository_owner == 'qualcomm-linux'
@@ -101,6 +108,8 @@ jobs:
101108
- qcom-armv8a
102109
- rb3gen2-core-kit
103110
distro:
111+
- name: nodistro
112+
yamlfile: ""
104113
- name: qcom-distro
105114
yamlfile: ':ci/qcom-distro.yml'
106115
kernel:
@@ -112,9 +121,10 @@ jobs:
112121
- uses: actions/checkout@v6
113122
with:
114123
persist-credentials: false
124+
ref: ${{ inputs.git_ref }}
115125

116126
- name: Run kas build
117-
uses: qualcomm-linux/meta-qcom/.github/actions/compile@master
127+
uses: ./.github/actions/compile
118128
with:
119129
machine: ${{matrix.machine}}
120130
distro_yaml: ${{matrix.distro.yamlfile}}
@@ -137,6 +147,7 @@ jobs:
137147
- iq-615-evk
138148
- iq-8275-evk
139149
- iq-9075-evk
150+
- iq-x5121-evk
140151
- iq-x7181-evk
141152
- kaanapali-mtp
142153
- qcm6490-idp
@@ -148,12 +159,18 @@ jobs:
148159
- rb3gen2-core-kit
149160
- sm8750-mtp
150161
distro:
162+
- name: nodistro
163+
yamlfile: ""
151164
- name: qcom-distro
152165
yamlfile: ':ci/qcom-distro.yml'
153166
- name: qcom-distro-catchall
154167
yamlfile: ':ci/qcom-distro-catchall.yml'
168+
- name: debug
169+
yamlfile: ':ci/qcom-distro.yml:ci/debug.yml'
155170
- name: performance
156171
yamlfile: ':ci/qcom-distro.yml:ci/performance.yml'
172+
- name: qcom-distro-multimedia-demo-image
173+
yamlfile: ':ci/qcom-distro-multimedia-demo-image.yml'
157174
kernel:
158175
- type: default
159176
dirname: ""
@@ -166,16 +183,31 @@ jobs:
166183
yamlfile: ":ci/linux-qcom-rt-6.18.yml"
167184
exclude:
168185
# Exclude jobs from compile_warm_up
186+
- machine: glymur-crd
187+
distro:
188+
name: nodistro
189+
kernel:
190+
type: default
169191
- machine: glymur-crd
170192
distro:
171193
name: qcom-distro
172194
kernel:
173195
type: default
196+
- machine: qcom-armv8a
197+
distro:
198+
name: nodistro
199+
kernel:
200+
type: default
174201
- machine: qcom-armv8a
175202
distro:
176203
name: qcom-distro
177204
kernel:
178205
type: default
206+
- machine: rb3gen2-core-kit
207+
distro:
208+
name: nodistro
209+
kernel:
210+
type: default
179211
- machine: rb3gen2-core-kit
180212
distro:
181213
name: qcom-distro
@@ -199,6 +231,14 @@ jobs:
199231
type: qcom-next-rt
200232
dirname: "_linux-qcom-next-rt"
201233
yamlfile: ":ci/linux-qcom-next-rt.yml"
234+
- machine: qcom-armv7a
235+
distro:
236+
name: nodistro
237+
yamlfile: ''
238+
kernel:
239+
type: default
240+
dirname: ""
241+
yamlfile: ""
202242
- machine: qcom-armv7a
203243
distro:
204244
name: qcom-distro
@@ -209,16 +249,24 @@ jobs:
209249
yamlfile: ""
210250
- machine: qcs615-ride
211251
distro:
212-
name: qcom-distro
213-
yamlfile: ':ci/qcom-distro.yml'
252+
name: nodistro
253+
yamlfile: ''
214254
kernel:
215255
type: u-boot-qcom-6.18
216256
dirname: "_linux-qcom-6.18_u-boot-qcom"
217257
yamlfile: ":ci/linux-qcom-6.18.yml:ci/u-boot-qcom.yml"
218258
- machine: rb3gen2-core-kit
219259
distro:
220-
name: qcom-distro
221-
yamlfile: ':ci/qcom-distro.yml'
260+
name: nodistro
261+
yamlfile: ''
262+
kernel:
263+
type: u-boot-qcom-6.18
264+
dirname: "_linux-qcom-6.18_u-boot-qcom"
265+
yamlfile: ":ci/linux-qcom-6.18.yml:ci/u-boot-qcom.yml"
266+
- machine: iq-9075-evk
267+
distro:
268+
name: nodistro
269+
yamlfile: ''
222270
kernel:
223271
type: u-boot-qcom-6.18
224272
dirname: "_linux-qcom-6.18_u-boot-qcom"
@@ -231,17 +279,26 @@ jobs:
231279
type: default
232280
dirname: ""
233281
yamlfile: ""
282+
- machine: rb3gen2-core-kit
283+
distro:
284+
name: nodistro
285+
yamlfile: ':ci/meta-arm.yml:ci/capsule.yml:ci/capsule-test-keys.yml'
286+
kernel:
287+
type: capsule
288+
dirname: "_capsule"
289+
yamlfile: ""
234290
name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }}
235291
steps:
236292
- name: checkout
237-
if: inputs.profile != 'pr' || (matrix.distro.name != 'debug' && matrix.distro.name != 'performance')
293+
if: (inputs.profile != 'pr' || (matrix.distro.name != 'debug' && matrix.distro.name != 'performance')) && (inputs.profile == 'weekly' || matrix.distro.name != 'qcom-distro-multimedia-demo-image')
238294
uses: actions/checkout@v6
239295
with:
240296
persist-credentials: false
297+
ref: ${{ inputs.git_ref }}
241298

242299
- name: Run kas build
243-
if: inputs.profile != 'pr' || (matrix.distro.name != 'debug' && matrix.distro.name != 'performance')
244-
uses: qualcomm-linux/meta-qcom/.github/actions/compile@master
300+
if: (inputs.profile != 'pr' || (matrix.distro.name != 'debug' && matrix.distro.name != 'performance')) && (inputs.profile == 'weekly' || matrix.distro.name != 'qcom-distro-multimedia-demo-image')
301+
uses: ./.github/actions/compile
245302
id: compile_kas
246303
with:
247304
machine: ${{matrix.machine}}
@@ -256,7 +313,12 @@ jobs:
256313
if: ${{ always() && github.repository_owner == 'qualcomm-linux' }}
257314
runs-on: ubuntu-latest
258315
steps:
259-
- uses: qualcomm-linux/meta-qcom/.github/actions/print-build-output@master
316+
- uses: actions/checkout@v6
317+
with:
318+
persist-credentials: false
319+
ref: ${{ inputs.git_ref }}
320+
321+
- uses: ./.github/actions/print-build-output
260322
with:
261323
github-token: ${{ secrets.GITHUB_TOKEN }}
262324
pattern: build-url*
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Weekly Build (wrynose)
2+
3+
on:
4+
schedule:
5+
# NOTE - changes to the cron spec should be pushed by https://github.com/quic-yocto-ci
6+
# so that build notification emails will be sent out properly.
7+
# At 23:33 UTC every Sunday - picked a random "minute" as top of hour can be busy in github
8+
- cron: "33 23 * * 0"
9+
10+
permissions:
11+
checks: write
12+
pull-requests: write
13+
contents: read
14+
packages: read
15+
16+
jobs:
17+
# Resolve wrynose to a single SHA so all downstream jobs build the same commit,
18+
# and so test results are attributed to the correct wrynose commit (not master's
19+
# github.sha, which is what scheduled workflows expose by default).
20+
resolve-ref:
21+
runs-on: ubuntu-latest
22+
outputs:
23+
sha: ${{ steps.get-sha.outputs.sha }}
24+
steps:
25+
- name: Resolve wrynose SHA
26+
id: get-sha
27+
env:
28+
GH_TOKEN: ${{ github.token }}
29+
run: |
30+
SHA=$(gh api repos/${{ github.repository }}/git/ref/heads/wrynose --jq '.object.sha')
31+
echo "sha=$SHA" >> $GITHUB_OUTPUT
32+
33+
build-weekly:
34+
needs: resolve-ref
35+
uses: ./.github/workflows/build-yocto.yml
36+
with:
37+
profile: weekly
38+
git_ref: ${{ needs.resolve-ref.outputs.sha }}
39+
40+
test-weekly:
41+
uses: ./.github/workflows/test.yml
42+
needs: [resolve-ref, build-weekly]
43+
secrets: inherit
44+
with:
45+
build_id: ${{ github.run_id }}
46+
47+
publish-test-results:
48+
uses: ./.github/workflows/publish-results.yml
49+
needs: [resolve-ref, test-weekly]
50+
secrets: inherit
51+
with:
52+
workflow_id: ${{ github.run_id }}
53+
event_name: ${{ github.event_name }}
54+
event_file: ${{ github.event_path }}
55+
commit: ${{ needs.resolve-ref.outputs.sha }}

.github/workflows/weekly-build.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Weekly Build (master)
2+
3+
on:
4+
schedule:
5+
# NOTE - changes to the cron spec should be pushed by https://github.com/quic-yocto-ci
6+
# so that build notification emails will be sent out properly.
7+
# At 0:33 UTC every Sunday - picked a random "minute" as top of hour can be busy in github
8+
- cron: "33 0 * * 0"
9+
10+
permissions:
11+
checks: write
12+
pull-requests: write
13+
contents: read
14+
packages: read
15+
16+
jobs:
17+
build-weekly:
18+
uses: ./.github/workflows/build-yocto.yml
19+
with:
20+
profile: weekly
21+
test-weekly:
22+
uses: ./.github/workflows/test.yml
23+
needs: build-weekly
24+
secrets: inherit
25+
with:
26+
build_id: ${{ github.run_id }}
27+
publish-test-results:
28+
uses: ./.github/workflows/publish-results.yml
29+
needs: test-weekly
30+
secrets: inherit
31+
with:
32+
workflow_id: ${{ github.run_id }}
33+
event_name: ${{ github.event_name }}
34+
event_file: ${{ github.event_path }}
35+
commit: ${{ github.sha }}

0 commit comments

Comments
 (0)