Generate matrix from directory

This commit is contained in:
Yethal
2023-03-29 14:09:16 +02:00
committed by Jeremy Soller
parent fe6faa21fc
commit faede6264a
2 changed files with 25 additions and 49 deletions

View File

@ -7,6 +7,8 @@ on:
jobs:
lint:
runs-on: ubuntu-22.04
outputs:
boards: ${{ steps.board-matrix.outputs.boards }}
steps:
- uses: actions/checkout@v3
@ -22,6 +24,10 @@ jobs:
- name: Check shell scripts
run: ./scripts/lint/03-shellcheck.sh
- name: Generate board matrix
id: board-matrix
run: ./scripts/boards.sh >> $GITHUB_OUTPUT
tool:
strategy:
matrix:
@ -41,57 +47,11 @@ jobs:
ec:
runs-on: ubuntu-22.04
needs: lint
strategy:
matrix:
# TODO: Generate matrix from directory?
boards: ${{ fromJson(needs.lint.outputs.boards )}}
# TODO: Conditionally build based on files changed?
include:
- vendor: arduino
board: mega2560
- vendor: system76
board: addw1
- vendor: system76
board: addw2
- vendor: system76
board: bonw14
- vendor: system76
board: darp5
- vendor: system76
board: darp7
- vendor: system76
board: darp8
- vendor: system76
board: galp3-c
- vendor: system76
board: galp5
- vendor: system76
board: galp6
- vendor: system76
board: gaze15
- vendor: system76
board: gaze16-3050
- vendor: system76
board: gaze16-3060
- vendor: system76
board: gaze17-3050
- vendor: system76
board: gaze17-3060-b
- vendor: system76
board: lemp9
- vendor: system76
board: lemp10
- vendor: system76
board: lemp11
- vendor: system76
board: oryp5
- vendor: system76
board: oryp6
- vendor: system76
board: oryp7
- vendor: system76
board: oryp8
- vendor: system76
board: oryp9
steps:
- uses: actions/checkout@v3
@ -100,4 +60,4 @@ jobs:
run: ./scripts/deps.sh
- name: Build firmware
run: make BOARD=${{ matrix.vendor}}/${{ matrix.board }} VERBOSE=1
run: make BOARD=${{ matrix.boards.vendor}}/${{ matrix.boards.board }} VERBOSE=1

16
scripts/boards.sh Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-only
set -eE
EXCLUDED_BOARDS=(
"system76/common"
"arduino/uno"
"arduino/micro"
)
BOARDS=$(find src/board -type d -maxdepth 2 -mindepth 2 2>/dev/null \
| grep -vFf <(printf '%s\n' "${EXCLUDED_BOARDS[@]}") \
| jq -sRc 'split("\n")[:-1] | map(split("/")) | map({vendor: .[2], board: .[3]})'
)
echo "boards=${BOARDS}"