summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 36bca31df7b00b53d3780c39337fac6ce816910e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: Build

on:
  push:
    paths:
      - ".github/workflows/build.yml"
      - "app/**"
  pull_request:
    paths:
      - ".github/workflows/build.yml"
      - "app/**"

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: zmkfirmware/zmk-build-arm:2.5
    strategy:
      matrix:
        board:
          - bluemicro840_v1
          - nice_nano
          - nice_nano_v2
          - nrfmicro_13
          - proton_c
        shield:
          - bfo9000_left
          - bfo9000_right
          - boardsource3x4
          - corne_left
          - corne_right
          - cradio_left
          - cradio_right
          - crbn
          - eek
          - helix_left
          - helix_right
          - iris_left
          - iris_right
          - jian_left
          - jian_right
          - jorne_left
          - jorne_right
          - kyria_left
          - kyria_right
          - lily58_left
          - lily58_right
          - microdox_left
          - microdox_right
          - nibble
          - qaz
          - quefrency_left
          - quefrency_right
          - reviung41
          - romac
          - romac_plus
          - settings_reset
          - sofle_left
          - sofle_right
          - splitreus62_left
          - splitreus62_right
          - tg4x
          - tidbit
        cmake-args: [""]
        include:
          - board: bdn9_rev2
          - board: dz60rgb_rev1
          - board: nrf52840_m2
            shield: m60
          - board: planck_rev6
          - board: proton_c
            shield: clueboard_california
          - board: nice_nano_v2
            shield: kyria_left
            cmake-args: -DCONFIG_ZMK_DISPLAY=y
            skip-archive: true
          - board: nice_nano_v2
            shield: kyria_right
            cmake-args: -DCONFIG_ZMK_DISPLAY=y
            skip-archive: true
    steps:
      - 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/
          key: 4-${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('app/west.yml') }}
          restore-keys: |
            4-${{ runner.os }}-build-${{ env.cache-name }}-
            4-${{ runner.os }}-build-
            4-${{ runner.os }}-
        timeout-minutes: 2
        continue-on-error: true
      - name: Initialize workspace (west init)
        run: west init -l app
      - name: Update modules (west update)
        run: west update
      - name: Export Zephyr CMake package (west zephyr-export)
        run: west zephyr-export
      - name: Prepare variables
        id: variables
        run: |
          SHIELD_ARG=
          ARTIFACT_NAME="${{ matrix.board }}"

          if [ -n "${{ matrix.shield }}" ]; then
            SHIELD_ARG="-DSHIELD=${{ matrix.shield }}"
            ARTIFACT_NAME="${ARTIFACT_NAME}-${{ matrix.shield }}"
          fi

          ARTIFACT_NAME="${ARTIFACT_NAME}-zmk"

          echo ::set-output name=shield-arg::${SHIELD_ARG}
          echo ::set-output name=artifact-name::${ARTIFACT_NAME}
      - name: Build (west build)
        run: west build -s app -b ${{ matrix.board }} -- ${{ steps.variables.outputs.shield-arg }} ${{ matrix.cmake-args }}
      - name: Archive artifacts
        if: ${{ !matrix.skip-archive }}
        uses: actions/upload-artifact@v2
        with:
          name: "${{ steps.variables.outputs.artifact-name }}"
          path: |
            build/zephyr/zmk.hex
            build/zephyr/zmk.uf2
        continue-on-error: true