diff --git a/.github/workflows/sel4test-hw.yml b/.github/workflows/sel4test-hw.yml new file mode 100644 index 00000000..af102b5b --- /dev/null +++ b/.github/workflows/sel4test-hw.yml @@ -0,0 +1,98 @@ +# 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@v3 + with: + name: images-${{ matrix.march }}-${{ matrix.compiler }} + path: '*-images.tar.gz' + + the_matrix: + name: Matrix + needs: hw-build + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + steps: + - id: matrix + uses: seL4/ci-actions/sel4test-hw-matrix@master + + hw-run: + name: HW Run + runs-on: ubuntu-latest + needs: the_matrix + 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: ${{ fromJson(needs.the_matrix.outputs.matrix) }} + steps: + - name: Get machine queue + uses: actions/checkout@v3 + with: + repository: seL4/machine_queue + path: machine_queue + token: ${{ secrets.PRIV_REPO_TOKEN }} + - name: Download image + uses: actions/download-artifact@v3 + with: + name: images-${{ matrix.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 }}