summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-01-08 10:31:44 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-01-08 10:31:44 -0500
commit63927325857f1336be13b8d3ff9ddc549f95ae22 (patch)
treed12d4748af84a1b16da6d93ef4606f421c6242a6 /.github/workflows
Initial User Config.
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml95
1 files changed, 95 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..4b57c4f
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,95 @@
+on: [push, pull_request, workflow_dispatch]
+
+name: Build
+
+jobs:
+ matrix:
+ runs-on: ubuntu-latest
+ name: Fetch Build Keyboards
+ outputs:
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install yaml2json
+ run: python3 -m pip install remarshal
+ - id: set-matrix
+ name: Fetch Build Matrix
+ run: |
+ matrix=$(yaml2json build.yaml | jq -c .)
+ yaml2json build.yaml
+ echo "::set-output name=matrix::${matrix}"
+ build:
+ runs-on: ubuntu-latest
+ container:
+ image: zmkfirmware/zmk-build-arm:2.5
+ needs: matrix
+ name: Build
+ strategy:
+ fail-fast: false
+ matrix: ${{fromJson(needs.matrix.outputs.matrix)}}
+ steps:
+ - name: Prepare variables
+ id: variables
+ run: |
+ if [ -n "${{ matrix.shield }}" ]; then
+ EXTRA_CMAKE_ARGS="-DSHIELD=${{ matrix.shield }}"
+ ARTIFACT_NAME="${{ matrix.shield }}-${{ matrix.board }}-zmk"
+ DISPLAY_NAME="${{ matrix.shield }} - ${{ matrix.board }}"
+ else
+ EXTRA_CMAKE_ARGS=
+ DISPLAY_NAME="${{ matrix.board }}"
+ ARTIFACT_NAME="${{ matrix.board }}-zmk"
+ fi
+ echo ::set-output name=extra-cmake-args::${EXTRA_CMAKE_ARGS}
+ echo ::set-output name=artifact-name::${ARTIFACT_NAME}
+ echo ::set-output name=display-name::${DISPLAY_NAME}
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Cache west modules
+ uses: actions/cache@v2
+ env:
+ cache-name: cache-zephyr-modules
+ with:
+ path: |
+ modules/
+ tools/
+ zephyr/
+ bootloader/
+ zmk/
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('manifest-dir/west.yml') }}
+ restore-keys: |
+ ${{ runner.os }}-build-${{ env.cache-name }}-
+ ${{ runner.os }}-build-
+ ${{ runner.os }}-
+ - name: West Init
+ run: west init -l config
+ - name: West Update
+ run: west update
+ - name: West Zephyr export
+ run: west zephyr-export
+ - name: West Build (${{ steps.variables.outputs.display-name }})
+ run: |
+ west build -s zmk/app -b ${{ matrix.board }} -- -DZMK_CONFIG=${GITHUB_WORKSPACE}/config ${{ steps.variables.outputs.extra-cmake-args }} ${{ matrix.cmake-args }}
+ - name: ${{ steps.variables.outputs.display-name }} DTS File
+ if: ${{ always() }}
+ run: |
+ if [ -f "build/zephyr/${{ matrix.board }}.dts.pre.tmp" ]; then cat -n build/zephyr/${{ matrix.board }}.dts.pre.tmp; fi
+ if [ -f "build/zephyr/zephyr.dts" ]; then cat -n build/zephyr/zephyr.dts; fi
+ - name: ${{ steps.variables.outputs.display-name }} Kconfig file
+ run: cat build/zephyr/.config | grep -v "^#" | grep -v "^$"
+ - name: Rename artifacts
+ run: |
+ mkdir build/artifacts
+ if [ -f build/zephyr/zmk.uf2 ]
+ then
+ cp build/zephyr/zmk.uf2 "build/artifacts/${{ steps.variables.outputs.artifact-name }}.uf2"
+ elif [ -f build/zephyr/zmk.hex ]
+ then
+ cp build/zephyr/zmk.hex "build/artifacts/${{ steps.variables.outputs.artifact-name }}.hex"
+ fi
+ - name: Archive (${{ steps.variables.outputs.display-name }})
+ uses: actions/upload-artifact@v2
+ with:
+ name: firmware
+ path: build/artifacts