From faede6264aafb0d89940273c21ba58a8b09e954a Mon Sep 17 00:00:00 2001 From: Yethal Date: Wed, 29 Mar 2023 14:09:16 +0200 Subject: [PATCH] Generate matrix from directory --- .github/workflows/ci.yml | 58 +++++++--------------------------------- scripts/boards.sh | 16 +++++++++++ 2 files changed, 25 insertions(+), 49 deletions(-) create mode 100755 scripts/boards.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74f18c3..0292b83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 diff --git a/scripts/boards.sh b/scripts/boards.sh new file mode 100755 index 0000000..8ffe121 --- /dev/null +++ b/scripts/boards.sh @@ -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}" \ No newline at end of file