seL4/.github/workflows/sel4test-hw.yml
Gerwin Klein e5791a76cb github: run actions with secrets only in seL4 org
Some of the Github actions in this repository require secrets for
access to hardware test or other compute infrastructure, or for
deployment. When these are run in a fork on GitHub they are safe,
but generate annoying error messages.

This commit adds tests in the relevant actions whether they are run
from the seL4 org or not, and skips the action when they are run
outside. This should make the remaining actions more useful on forks.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-10-18 14:47:07 +11:00

121 lines
3.7 KiB
YAML

# Copyright 2021, Proofcraft Pty Ltd
#
# SPDX-License-Identifier: BSD-2-Clause
# sel4test hardware builds and runs
#
# See sel4test-hw/builds.yml in the repo seL4/ci-actions for configs.
name: seL4Test HW
on:
# needs PR target for secrets access; guard by requiring label
pull_request_target:
types: [opened, reopened, synchronize, labeled]
# downgrade permissions to read-only as you would have in a standard PR action
permissions:
contents: read
jobs:
hw-build:
name: HW Build
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' ||
github.event_name == 'pull_request_target' &&
github.event.action != 'labeled' &&
(contains(github.event.pull_request.labels.*.name, 'hw-build') ||
contains(github.event.pull_request.labels.*.name, 'hw-test')) ||
github.event_name == 'pull_request_target' &&
github.event.action == 'labeled' &&
(github.event.label.name == 'hw-build' ||
github.event.label.name == 'hw-test') }}
strategy:
fail-fast: false
matrix:
march: [armv7a, armv8a, nehalem]
compiler: [gcc, clang]
include:
- march: rv64imac
compiler: gcc
steps:
- name: Build
uses: seL4/ci-actions/sel4test-hw@master
with:
march: ${{ matrix.march }}
compiler: ${{ matrix.compiler }}
sha: ${{ github.event.pull_request.head.sha }}
- name: Upload images
uses: actions/upload-artifact@v2
with:
name: images-${{ matrix.march }}-${{ matrix.compiler }}
path: '*-images.tar.gz'
hw-run:
name: HW Run
runs-on: ubuntu-latest
needs: hw-build
if: ${{ github.repository_owner == 'seL4' &&
(github.event_name == 'push' ||
github.event_name == 'pull_request_target' &&
github.event.action != 'labeled' &&
contains(github.event.pull_request.labels.*.name, 'hw-test') ||
github.event_name == 'pull_request_target' &&
github.event.action == 'labeled' &&
github.event.label.name == 'hw-test') }}
strategy:
fail-fast: false
matrix:
# commented-out platforms hopefully available soon
platform:
- sabre
# - hikey
- imx8mm_evk
- odroid_c2
# - odroid_xu4
- am335x_boneblack
- tx2
# - rpi3
- zynqmp
compiler: [gcc, clang]
include:
- platform: pc99
compiler: gcc
mode: 32
- platform: pc99
compiler: gcc
mode: 64
- platform: pc99
compiler: clang
mode: 32
- platform: pc99
compiler: clang
mode: 64
# include:
# - platform: hifive
# compiler: gcc
steps:
- name: Get machine queue
uses: actions/checkout@v2
with:
repository: seL4/machine_queue
path: machine_queue
token: ${{ secrets.PRIV_REPO_TOKEN }}
- name: Get march
id: plat
uses: seL4/ci-actions/march-of-platform@master
with:
platform: ${{ matrix.platform }}
- name: Download image
uses: actions/download-artifact@v2
with:
name: images-${{ steps.plat.outputs.march }}-${{ matrix.compiler }}
- name: Run
uses: seL4/ci-actions/sel4test-hw-run@master
with:
platform: ${{ matrix.platform }}
compiler: ${{ matrix.compiler }}
mode: ${{ matrix.mode }}
index: $${{ strategy.job-index }}
env:
HW_SSH: ${{ secrets.HW_SSH }}