-
Notifications
You must be signed in to change notification settings - Fork 0
75 lines (62 loc) · 2.74 KB
/
treadmill-ci-test.yml
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
name: treadmill-ci-test
env:
TERM: xterm # Makes tput work in actions output
# Controls when the action will run. Triggers the workflow on pull request and
# merge group checks:
#
# KEEP IN SYNC WITH `environment:` ATTRIBUTE BELOW:
on:
push:
branches:
- main
- dev/test_ci_branch
# Pull requests from forks will not have access to the required GitHub API
# secrets below, even if they are using an appropriate deployment environment
# and the workflow runs have been approved according to this environment's
# rules. We don't know whether this is a bug on GitHub's end or deliberate.
# Either way, for now we disable this workflow to run on PRs until we have
# an API proxy that securely performs these GitHub API calls (adding runners
# and starting Treadmill jobs with those runner registration tokens), which
# allows this workflow to run without access to repository secrets.
#pull_request:
merge_group: # Run CI for the GitHub merge queue
permissions:
contents: read
jobs:
analyze-changes:
runs-on: ubuntu-latest
outputs:
hwci-tests-json: ${{ steps.analyze-changes.outputs.hwci-tests-json }}
steps:
# This is not run within the context of a repository that contains actual
# kernel / userspace code, so there is nothing for us to analyze. Instead
# we clone this very repository and select all test definitions:
- name: Checkout the tock-hardware-ci repository
uses: actions/checkout@v4
- name: Select all defined tests
id: analyze-changes
run: |
pushd hwci/
HWCI_TESTS_JSON="$(jq -c -n '$ARGS.positional' --args tests/*.py)"
echo "Selected HWCI tests: $(echo "${HWCI_TESTS_JSON}" | jq .)"
echo "hwci-tests-json=${HWCI_TESTS_JSON}" >> "$GITHUB_OUTPUT"
popd
run-treadmill-ci:
needs: [analyze-changes]
uses: ./.github/workflows/treadmill-ci.yml
with:
# Only run on a specific repository, as others will not have the right
# environments set up and secrets configured. Forks may want to change
# this parameter.
repository-filter: 'tock/tock-hardware-ci'
# Provide access to the required Treadmill secrets by running in the
# appropriate environment (depending on the on: triggers above)
job-environment: ${{ github.event_name == 'pull_request' && 'treadmill-ci' || 'treadmill-ci-merged' }}
# This workflow tests the tock-hardware-ci scripts itself, so take the
# current GITHUB_SHA:
tock-hardware-ci-ref: ${{ github.sha }}
# Use the latest upstream Tock kernel / userspace components:
tock-kernel-ref: 'master'
libtock-c-ref: 'master'
tests-json: ${{ needs.analyze-changes.outputs.hwci-tests-json }}
secrets: inherit