Skip to content

Commit 33f434e

Browse files
committed
workflow_call
Signed-off-by: Anas Nashif <[email protected]>
1 parent 04d7412 commit 33f434e

File tree

3 files changed

+238
-101
lines changed

3 files changed

+238
-101
lines changed

.github/workflows/twister-pr.yaml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
name: Prep PR
2+
3+
on:
4+
workflow_call:
5+
outputs:
6+
subset:
7+
description: subset
8+
value: ${{ jobs.prep.outputs.subset }}
9+
size:
10+
description: size
11+
value: ${{ jobs.prep.outputs.size }}
12+
fullrun:
13+
description: fullrun
14+
value: ${{ jobs.prep.outputs.fullrun }}
15+
16+
jobs:
17+
prep:
18+
if: github.repository_owner == 'zephyrproject-rtos'
19+
runs-on:
20+
group: zephyr-runner-v2-linux-x64-4xlarge
21+
container:
22+
image: ghcr.io/zephyrproject-rtos/ci-repo-cache:v0.27.4.20241026
23+
options: '--entrypoint /bin/bash'
24+
outputs:
25+
subset: ${{ steps.output-services.outputs.subset }}
26+
size: ${{ steps.output-services.outputs.size }}
27+
fullrun: ${{ steps.output-services.outputs.fullrun }}
28+
env:
29+
MATRIX_SIZE: 10
30+
PUSH_MATRIX_SIZE: 20
31+
DAILY_MATRIX_SIZE: 80
32+
BSIM_OUT_PATH: /opt/bsim/
33+
BSIM_COMPONENTS_PATH: /opt/bsim/components
34+
TESTS_PER_BUILDER: 700
35+
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
36+
BASE_REF: ${{ github.base_ref }}
37+
steps:
38+
- name: Apply container owner mismatch workaround
39+
run: |
40+
# FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
41+
# match the container user UID because of the way GitHub
42+
# Actions runner is implemented. Remove this workaround when
43+
# GitHub comes up with a fundamental fix for this problem.
44+
git config --global --add safe.directory ${GITHUB_WORKSPACE}
45+
46+
- name: Print cloud service information
47+
run: |
48+
echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}"
49+
echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}"
50+
echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}"
51+
52+
- name: Clone cached Zephyr repository
53+
continue-on-error: true
54+
run: |
55+
git clone --shared /repo-cache/zephyrproject/zephyr .
56+
git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}
57+
58+
- name: Checkout
59+
uses: actions/checkout@v4
60+
with:
61+
ref: ${{ github.event.pull_request.head.sha }}
62+
fetch-depth: 0
63+
persist-credentials: false
64+
65+
- name: Environment Setup
66+
run: |
67+
git config --global user.email "[email protected]"
68+
git config --global user.name "Zephyr Bot"
69+
rm -fr ".git/rebase-apply"
70+
git rebase origin/${BASE_REF}
71+
git clean -f -d
72+
git log --pretty=oneline | head -n 10
73+
west init -l . || true
74+
west config manifest.group-filter -- +ci,+optional
75+
west config --global update.narrow true
76+
west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /repo-cache/zephyrproject)
77+
west forall -c 'git reset --hard HEAD'
78+
79+
echo "ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-$( cat SDK_VERSION )" >> $GITHUB_ENV
80+
81+
- name: Generate Test Plan with Twister
82+
id: test-plan
83+
run: |
84+
export ZEPHYR_BASE=${PWD}
85+
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
86+
python3 ./scripts/ci/test_plan.py -c origin/${BASE_REF}.. --pull-request -t $TESTS_PER_BUILDER
87+
if [ -s .testplan ]; then
88+
cat .testplan >> $GITHUB_ENV
89+
else
90+
echo "TWISTER_NODES=${MATRIX_SIZE}" >> $GITHUB_ENV
91+
fi
92+
rm -f testplan.json .testplan
93+
94+
- name: Determine matrix size
95+
id: output-services
96+
run: |
97+
if [ "${{github.event_name}}" = "pull_request_target" ]; then
98+
if [ -n "${TWISTER_NODES}" ]; then
99+
subset="[$(seq -s',' 1 ${TWISTER_NODES})]"
100+
else
101+
subset="[$(seq -s',' 1 ${MATRIX_SIZE})]"
102+
fi
103+
size=${TWISTER_NODES}
104+
elif [ "${{github.event_name}}" = "push" ]; then
105+
subset="[$(seq -s',' 1 ${PUSH_MATRIX_SIZE})]"
106+
size=${MATRIX_SIZE}
107+
elif [ "${{github.event_name}}" = "schedule" -a "${{github.repository}}" = "zephyrproject-rtos/zephyr" ]; then
108+
subset="[$(seq -s',' 1 ${DAILY_MATRIX_SIZE})]"
109+
size=${DAILY_MATRIX_SIZE}
110+
else
111+
size=0
112+
fi
113+
echo "subset=${subset}" >> $GITHUB_OUTPUT
114+
echo "size=${size}" >> $GITHUB_OUTPUT
115+
echo "fullrun=${TWISTER_FULL}" >> $GITHUB_OUTPUT
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
name: Prep
2+
3+
on:
4+
workflow_call:
5+
outputs:
6+
subset:
7+
description: subset
8+
value: ${{ jobs.prep_push.outputs.subset }} || ${{ jobs.prep_pr.outputs.subset }}
9+
size:
10+
description: size
11+
value: ${{ jobs.prep_push.outputs.size }} || ${{ jobs.prep_pr.outputs.size }}
12+
fullrun:
13+
description: fullrun
14+
value: ${{ jobs.prep_push.outputs.fullrun }} || ${{ jobs.prep_pr.outputs.size }}
15+
16+
jobs:
17+
prep_pr:
18+
if: github.repository_owner == 'zephyrproject-rtos' && github.event_name == 'pull_request_target'
19+
runs-on: ubuntu-22.04
20+
outputs:
21+
subset: ${{ steps.output-services.outputs.subset }}
22+
size: ${{ steps.output-services.outputs.size }}
23+
fullrun: ${{ steps.output-services.outputs.fullrun }}
24+
env:
25+
MATRIX_SIZE: 10
26+
PUSH_MATRIX_SIZE: 20
27+
DAILY_MATRIX_SIZE: 80
28+
BSIM_OUT_PATH: /opt/bsim/
29+
BSIM_COMPONENTS_PATH: /opt/bsim/components
30+
TESTS_PER_BUILDER: 700
31+
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
32+
BASE_REF: ${{ github.base_ref }}
33+
steps:
34+
- name: Print cloud service information
35+
run: |
36+
echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}"
37+
echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}"
38+
echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}"
39+
40+
- name: Determine matrix size
41+
id: output-services
42+
run: |
43+
if [ "${{github.event_name}}" = "pull_request_target" ]; then
44+
if [ -n "${TWISTER_NODES}" ]; then
45+
subset="[$(seq -s',' 1 ${TWISTER_NODES})]"
46+
else
47+
subset="[$(seq -s',' 1 ${MATRIX_SIZE})]"
48+
fi
49+
size=${TWISTER_NODES}
50+
elif [ "${{github.event_name}}" = "push" ]; then
51+
subset="[$(seq -s',' 1 ${PUSH_MATRIX_SIZE})]"
52+
size=${MATRIX_SIZE}
53+
elif [ "${{github.event_name}}" = "schedule" -a "${{github.repository}}" = "zephyrproject-rtos/zephyr" ]; then
54+
subset="[$(seq -s',' 1 ${DAILY_MATRIX_SIZE})]"
55+
size=${DAILY_MATRIX_SIZE}
56+
else
57+
size=0
58+
fi
59+
echo ${subset}
60+
echo ${size}
61+
62+
echo "subset=${subset}" >> $GITHUB_OUTPUT
63+
echo "size=${size}" >> $GITHUB_OUTPUT
64+
echo "fullrun=${TWISTER_FULL}" >> $GITHUB_OUTPUT
65+
66+
prep_push:
67+
if: github.repository_owner == 'zephyrproject-rtos' && github.event_name == 'push'
68+
runs-on: ubuntu-22.04
69+
outputs:
70+
subset: ${{ steps.output-services.outputs.subset }}
71+
size: ${{ steps.output-services.outputs.size }}
72+
fullrun: ${{ steps.output-services.outputs.fullrun }}
73+
env:
74+
MATRIX_SIZE: 10
75+
PUSH_MATRIX_SIZE: 20
76+
DAILY_MATRIX_SIZE: 80
77+
BSIM_OUT_PATH: /opt/bsim/
78+
BSIM_COMPONENTS_PATH: /opt/bsim/components
79+
TESTS_PER_BUILDER: 700
80+
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
81+
BASE_REF: ${{ github.base_ref }}
82+
steps:
83+
- name: Print cloud service information
84+
run: |
85+
echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}"
86+
echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}"
87+
echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}"
88+
89+
- name: Determine matrix size
90+
id: output-services
91+
run: |
92+
if [ "${{github.event_name}}" = "pull_request_target" ]; then
93+
if [ -n "${TWISTER_NODES}" ]; then
94+
subset="[$(seq -s',' 1 ${TWISTER_NODES})]"
95+
else
96+
subset="[$(seq -s',' 1 ${MATRIX_SIZE})]"
97+
fi
98+
size=${TWISTER_NODES}
99+
elif [ "${{github.event_name}}" = "push" ]; then
100+
subset="[$(seq -s',' 1 ${PUSH_MATRIX_SIZE})]"
101+
size=${MATRIX_SIZE}
102+
elif [ "${{github.event_name}}" = "schedule" -a "${{github.repository}}" = "zephyrproject-rtos/zephyr" ]; then
103+
subset="[$(seq -s',' 1 ${DAILY_MATRIX_SIZE})]"
104+
size=${DAILY_MATRIX_SIZE}
105+
else
106+
size=0
107+
fi
108+
echo ${subset}
109+
echo ${size}
110+
111+
echo "subset=${subset}" >> $GITHUB_OUTPUT
112+
echo "size=${size}" >> $GITHUB_OUTPUT
113+
echo "fullrun=${TWISTER_FULL}" >> $GITHUB_OUTPUT
114+

.github/workflows/twister.yaml

Lines changed: 9 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -21,108 +21,16 @@ concurrency:
2121

2222
jobs:
2323
twister-build-prep:
24-
if: github.repository_owner == 'zephyrproject-rtos'
25-
runs-on:
26-
group: zephyr-runner-v2-linux-x64-4xlarge
27-
container:
28-
image: ghcr.io/zephyrproject-rtos/ci-repo-cache:v0.27.4.20241026
29-
options: '--entrypoint /bin/bash'
30-
outputs:
31-
subset: ${{ steps.output-services.outputs.subset }}
32-
size: ${{ steps.output-services.outputs.size }}
33-
fullrun: ${{ steps.output-services.outputs.fullrun }}
34-
env:
35-
MATRIX_SIZE: 10
36-
PUSH_MATRIX_SIZE: 20
37-
DAILY_MATRIX_SIZE: 80
38-
BSIM_OUT_PATH: /opt/bsim/
39-
BSIM_COMPONENTS_PATH: /opt/bsim/components
40-
TESTS_PER_BUILDER: 700
41-
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
42-
BASE_REF: ${{ github.base_ref }}
43-
steps:
44-
- name: Apply container owner mismatch workaround
45-
run: |
46-
# FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
47-
# match the container user UID because of the way GitHub
48-
# Actions runner is implemented. Remove this workaround when
49-
# GitHub comes up with a fundamental fix for this problem.
50-
git config --global --add safe.directory ${GITHUB_WORKSPACE}
51-
52-
- name: Print cloud service information
53-
run: |
54-
echo "ZEPHYR_RUNNER_CLOUD_PROVIDER = ${ZEPHYR_RUNNER_CLOUD_PROVIDER}"
55-
echo "ZEPHYR_RUNNER_CLOUD_NODE = ${ZEPHYR_RUNNER_CLOUD_NODE}"
56-
echo "ZEPHYR_RUNNER_CLOUD_POD = ${ZEPHYR_RUNNER_CLOUD_POD}"
57-
58-
- name: Clone cached Zephyr repository
59-
if: github.event_name == 'pull_request_target'
60-
continue-on-error: true
61-
run: |
62-
git clone --shared /repo-cache/zephyrproject/zephyr .
63-
git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}
24+
if: github.event_name == 'push'
25+
uses: ./.github/workflows/twister-push.yaml
26+
if: github.event_name == 'pushx'
27+
uses: ./.github/workflows/twister-pr.yaml
6428

65-
- name: Checkout
66-
if: github.event_name == 'pull_request_target'
67-
uses: actions/checkout@v4
68-
with:
69-
ref: ${{ github.event.pull_request.head.sha }}
70-
fetch-depth: 0
71-
persist-credentials: false
72-
73-
- name: Environment Setup
74-
if: github.event_name == 'pull_request_target'
75-
run: |
76-
git config --global user.email "[email protected]"
77-
git config --global user.name "Zephyr Bot"
78-
rm -fr ".git/rebase-apply"
79-
git rebase origin/${BASE_REF}
80-
git clean -f -d
81-
git log --pretty=oneline | head -n 10
82-
west init -l . || true
83-
west config manifest.group-filter -- +ci,+optional
84-
west config --global update.narrow true
85-
west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || west update --path-cache /repo-cache/zephyrproject 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /repo-cache/zephyrproject)
86-
west forall -c 'git reset --hard HEAD'
87-
88-
echo "ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-$( cat SDK_VERSION )" >> $GITHUB_ENV
89-
90-
- name: Generate Test Plan with Twister
91-
if: github.event_name == 'pull_request_target'
92-
id: test-plan
93-
run: |
94-
export ZEPHYR_BASE=${PWD}
95-
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
96-
python3 ./scripts/ci/test_plan.py -c origin/${BASE_REF}.. --pull-request -t $TESTS_PER_BUILDER
97-
if [ -s .testplan ]; then
98-
cat .testplan >> $GITHUB_ENV
99-
else
100-
echo "TWISTER_NODES=${MATRIX_SIZE}" >> $GITHUB_ENV
101-
fi
102-
rm -f testplan.json .testplan
103-
104-
- name: Determine matrix size
105-
id: output-services
106-
run: |
107-
if [ "${{github.event_name}}" = "pull_request_target" ]; then
108-
if [ -n "${TWISTER_NODES}" ]; then
109-
subset="[$(seq -s',' 1 ${TWISTER_NODES})]"
110-
else
111-
subset="[$(seq -s',' 1 ${MATRIX_SIZE})]"
112-
fi
113-
size=${TWISTER_NODES}
114-
elif [ "${{github.event_name}}" = "push" ]; then
115-
subset="[$(seq -s',' 1 ${PUSH_MATRIX_SIZE})]"
116-
size=${MATRIX_SIZE}
117-
elif [ "${{github.event_name}}" = "schedule" -a "${{github.repository}}" = "zephyrproject-rtos/zephyr" ]; then
118-
subset="[$(seq -s',' 1 ${DAILY_MATRIX_SIZE})]"
119-
size=${DAILY_MATRIX_SIZE}
120-
else
121-
size=0
122-
fi
123-
echo "subset=${subset}" >> $GITHUB_OUTPUT
124-
echo "size=${size}" >> $GITHUB_OUTPUT
125-
echo "fullrun=${TWISTER_FULL}" >> $GITHUB_OUTPUT
29+
check:
30+
runs-on: ubuntu-22.04
31+
needs: twister-build-prep
32+
steps:
33+
- run: echo ${{needs.twister-build-prep.outputs.subset}}
12634

12735
twister-build:
12836
runs-on:

0 commit comments

Comments
 (0)