diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2a3439a370..6c28bbb39a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,26 +1,102 @@
name: CI
+on: [ pull_request, push, workflow_dispatch ]
-on:
- push:
- workflow_dispatch:
- pull_request:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
+ cancel-in-progress: true
+
+env:
+ REGEX_ANSI_COLOR: 's/\x1b\[[0-9;]*[mGKHF]//g'
+ REGEX_MAKE_OUTPUT: '/^g*make\[1]: \(Enter\|Leav\)ing directory ''/d'
+
+permissions: {}
jobs:
- build:
+ check-uid:
+ name: Check Vial UIDs
runs-on: ubuntu-latest
- container: qmkfm/qmk_cli
-
steps:
- - uses: actions/checkout@v2
+ - name: (actions) Checkout Vial repo
+ uses: actions/checkout@v3
with:
- fetch-depth: 0
+ persist-credentials: false
- - name: Verify Vial UID is unique
+ - name: Verify Vial UID is unique per-keyboard
run: python3 util/ci_vial_verify_uid.py
- - name: Compile Vial keyboards
+ build-default:
+ name: Build default keymaps for Vial
+ runs-on: ubuntu-latest
+ container: ghcr.io/qmk/qmk_cli
+ env:
+ KEYMAP: default
+
+ steps:
+ - name: (actions) Checkout Vial repo
+ uses: actions/checkout@v3
+ with:
+ persist-credentials: false
+ submodules: recursive
+
+ - name: Build
+ id: build
run: |
git config --global --add safe.directory $(pwd)
- make git-submodule
- python3 util/ci_compile_vial_keyboards.py
+ if ! qmk mass-compile -j $(nproc) $(qmk find -km vial | sed "s/:vial$/:${KEYMAP}/");
+ then
+ echo "::error::$(ls -1 .build/failed.log.* | wc -l) keymaps failed to build. See logs and/or job summary for details."
+ exit 1
+ fi
+
+ - name: Dump failure logs
+ if: ${{ failure() && steps.build.conclusion == 'failure' }}
+ run: |
+ echo '### Failure logs' | tee -a "${GITHUB_STEP_SUMMARY}"
+
+ cd .build || exit 1
+ for log in failed.log.*; do
+ pretty_logname="$(echo "${log}" | sed "s/^failed\.log\.[0-9]\+\.// ; s/\.${KEYMAP}$//")"
+
+ printf '\n::group::%s\n%s\n::endgroup::\n' "${pretty_logname}" "$(sed "${REGEX_MAKE_OUTPUT}" < "${log}")"
+ printf '\n\n%s
\n\n```\n%s\n```\n\n \n' \
+ "${pretty_logname}" "$(sed "${REGEX_MAKE_OUTPUT} ; ${REGEX_ANSI_COLOR}" < "${log}")" >> "${GITHUB_STEP_SUMMARY}"
+ done
+
+ build-vial:
+ name: Build Vial keymaps
+ runs-on: ubuntu-latest
+ container: ghcr.io/qmk/qmk_cli
+ env:
+ KEYMAP: vial
+
+ steps:
+ - name: (actions) Checkout Vial repo
+ uses: actions/checkout@v3
+ with:
+ persist-credentials: false
+ submodules: recursive
+
+ - name: Build
+ id: build
+ run: |
+ git config --global --add safe.directory $(pwd)
+ if ! qmk mass-compile -km "${KEYMAP}" -j $(nproc);
+ then
+ echo "::error::$(ls -1 .build/failed.log.* | wc -l) keymaps failed to build. See logs and/or job summary for details."
+ exit 1
+ fi
+
+ - name: Dump failure logs
+ if: ${{ failure() && steps.build.conclusion == 'failure' }}
+ run: |
+ echo '### Failure logs' | tee -a "${GITHUB_STEP_SUMMARY}"
+
+ cd .build || exit 1
+ for log in failed.log.*; do
+ pretty_logname="$(echo "${log}" | sed "s/^failed\.log\.[0-9]\+\.// ; s/\.${KEYMAP}$//")"
+
+ printf '\n::group::%s\n%s\n::endgroup::\n' "${pretty_logname}" "$(sed "${REGEX_MAKE_OUTPUT}" < "${log}")"
+ printf '\n\n%s
\n\n```\n%s\n```\n\n \n' \
+ "${pretty_logname}" "$(sed "${REGEX_MAKE_OUTPUT} ; ${REGEX_ANSI_COLOR}" < "${log}")" >> "${GITHUB_STEP_SUMMARY}"
+ done