Skip to content

staging/multi_board: added serial no 000683188086 to supervisor 0679b… #243

staging/multi_board: added serial no 000683188086 to supervisor 0679b…

staging/multi_board: added serial no 000683188086 to supervisor 0679b… #243

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
- staging/**
# CI requested by the GitHub Merge Queue
merge_group:
branches: [main]
types: [checks_requested]
# 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.
#
# However, because GitHub's merge queues don't allow to differentiate required
# checks for *entering* the merge queue from those that are required to *pass*
# it, we also can't disable this trigger entirely. Instead, we use a selector
# to avoid running any actual checks on this trigger, while still technically
# succeeding for PRs.
pull_request:
workflow_dispatch:
inputs:
tock-kernel-ref:
description: 'Ref (revision/branch/tag) of the upstream Tock repo to test'
required: true
default: 'master'
libtock-c-ref:
description: 'Ref (revision/branch/tag) of the upstream libtock-c repo to test'
required: true
default: 'master'
tests-json:
description: 'tests-json value passed to HWCI workflow (if empty, output from hwci-determine-tests step is used)'
required: false
permissions:
contents: read
jobs:
hwci-determine-tests:
runs-on: ubuntu-latest
# Don't run on a pull request, as explained above.
if: github.event_name != 'pull_request'
outputs:
hwci-tests-json: ${{ steps.determine-tests.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
with:
path: tock-hardware-ci
- name: Checkout the tock/tock repository
uses: actions/checkout@v4
with:
# Checkout the repository at the commit that triggered the workflow
repository: tock/tock
path: tock-tock
- name: Select all defined tests
id: determine-tests
run: |
# Run the select_tests.py script
python3 tock-hardware-ci/hwci/select_tests.py \
--repo-path tock-tock \
--hwci-path tock-hardware-ci/hwci \
--output selected_tests.json
echo "Selected HWCI tests:"
cat selected_tests.json
# Output the tests JSON
hwci_tests_json=$(cat selected_tests.json | jq -c '.')
echo "hwci-tests-json=${hwci_tests_json}" >> "$GITHUB_OUTPUT"
hwci-treadmill-dispatch:
needs: [hwci-determine-tests]
uses: ./.github/workflows/treadmill-ci.yml
# This checks whether there is at least one test to run, see
# https://github.com/orgs/community/discussions/27125#discussioncomment-3254720
#
# Don't run on a pull request, as explained above.
if: github.event_name != 'pull_request' && (fromJSON(needs.hwci-determine-tests.outputs.hwci-tests-json)[0] != null || github.event_name == 'workflow_dispatch')
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 == 'workflow_dispatch' && '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: ${{ github.event_name == 'workflow_dispatch' && inputs.tock-kernel-ref || 'master' }}
libtock-c-ref: ${{ github.event_name == 'workflow_dispatch' && inputs.libtock-c-ref || 'master' }}
tests-json: ${{ (github.event_name == 'workflow_dispatch' && inputs.tests-json != '') && inputs.tests-json || needs.hwci-determine-tests.outputs.hwci-tests-json }}
secrets: inherit
# We cannot depend on *all* test-execute jobs of hwci-treadmill-dispatch as
# required checks for pull requests and merge queues. Thus, we run another
# single dummy step here that waits for all the hwci-treadmill-dispatch jobs
# to complete and report success.
#
# We also use this to report a "dummy" success value for the "pull_request"
# trigger, as explained in the comment of the "on:" parameters above.
hwci-report-success:
needs: [hwci-determine-tests, hwci-treadmill-dispatch]
if: always()
runs-on: ubuntu-latest
steps:
- name: Fail if any of the 'hwci-treadmill-dispatch' jobs failed
if: contains(needs.*.result, 'failure')
run: exit 1