| # 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' |
| |
| 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@v2 |
| with: |
| repository: seL4/machine_queue |
| path: machine_queue |
| token: ${{ secrets.PRIV_REPO_TOKEN }} |
| - name: Download image |
| uses: actions/download-artifact@v2 |
| 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 }} |