Skip to content

Commit d24a5bf

Browse files
authored
Create build_firmware.yml
1 parent 4378b60 commit d24a5bf

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

.github/workflows/build_firmware.yml

+177
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
name: Build MechWild QMK firmware
2+
on: [push, workflow_dispatch]
3+
4+
permissions: {}
5+
6+
jobs:
7+
update-mw-qmk-branch:
8+
if: github.event.sender.login == 'kylemccreery'
9+
runs-on: ubuntu-latest
10+
container: qmkfm/qmk_cli
11+
steps:
12+
- name: Generate token
13+
uses: tibdex/github-app-token@v1
14+
id: generate-token
15+
with:
16+
app_id: ${{ secrets.APP_ID }}
17+
private_key: ${{ secrets.APP_PRIVATE_KEY }}
18+
19+
- name: Set variables
20+
id: vars
21+
run: |
22+
echo cache-mw-qmk-hash=$(git -c 'versionsort.suffix=' ls-remote --exit-code --sort='-version:refname' --tags --refs https://github.com/MechWild/qmk_firmware.git experimental_firmware '*.*.*' | grep -P 'refs/tags/\d+\.\d+\.\d+' | head -n1 | cut -f1) >> $GITHUB_OUTPUT
23+
echo cache-qmk-hash=$(git -c 'versionsort.suffix=' ls-remote --exit-code --sort='-version:refname' --tags --refs https://github.com/qmk/qmk_firmware.git master '*.*.*' | grep -P 'refs/tags/\d+\.\d+\.\d+' | head -n1 | cut -f1) >> $GITHUB_OUTPUT
24+
25+
- name: Cache repos
26+
id: cache-repos
27+
uses: actions/cache@v3
28+
with:
29+
key: ${{ steps.vars.outputs.cache-mw-qmk-hash }}
30+
path: qmk_firmware
31+
32+
- name: Checkout QMK
33+
uses: actions/checkout@v3
34+
if: ${{ ! steps.cache-repos.outputs.cache-hit }}
35+
with:
36+
repository: mechwild/qmk_firmware
37+
ref: experimental_firmware
38+
submodules: recursive
39+
path: qmk_firmware
40+
token: ${{ steps.generate-token.outputs.token }}
41+
42+
- name: Merge and push into build branch
43+
if: ${{ steps.vars.outputs.cache-mw-qmk-hash != steps.vars.outputs.cache-qmk-hash }}
44+
env:
45+
UPSTREAM: https://github.com/qmk/qmk_firmware.git
46+
run: |
47+
cd qmk_firmware
48+
git config user.name "GitHub Actions Bot"
49+
git config user.email "<>"
50+
git remote add upstream $UPSTREAM
51+
echo "Fetching upstream master including tags"
52+
git fetch --tags upstream master
53+
echo "Pulling upstream master including tags"
54+
git pull --tags --no-edit -X ours upstream master --allow-unrelated-histories
55+
git push --tags
56+
57+
qmk-build:
58+
needs: update-mw-qmk-branch
59+
runs-on: ubuntu-latest
60+
container: qmkfm/qmk_cli
61+
strategy:
62+
fail-fast: false
63+
# TODO: break the matrix construction out into its own job, zmk-style?
64+
matrix:
65+
keymap: [default, via, audio]
66+
processor: [atmega32u4, STM32F401, STM32F411]
67+
keyboard: [all_mw]
68+
include:
69+
- keyboard: bde/lefty
70+
keymap: fancy
71+
processor: atmega32u4
72+
- keyboard: mercutio
73+
keymap: bongocat
74+
processor: atmega328p
75+
- keyboard: mercutio
76+
keymap: fancy
77+
processor: atmega328p
78+
steps:
79+
- name: Set variables
80+
id: vars
81+
run: |
82+
echo cache-mw-qmk-hash=$(git -c 'versionsort.suffix=' ls-remote --exit-code --sort='-version:refname' --tags --refs https://github.com/MechWild/qmk_firmware.git experimental_firmware '*.*.*' | grep -P 'refs/tags/\d+\.\d+\.\d+' | head -n1 | cut -f1) >> $GITHUB_OUTPUT
83+
echo cache-qmk-hash=$(git -c 'versionsort.suffix=' ls-remote --exit-code --sort='-version:refname' --tags --refs https://github.com/qmk/qmk_firmware.git master '*.*.*' | grep -P 'refs/tags/\d+\.\d+\.\d+' | head -n1 | cut -f1) >> $GITHUB_OUTPUT
84+
85+
- name: Cache repos
86+
id: cache-repos
87+
uses: actions/cache@v3
88+
with:
89+
key: ${{ steps.vars.outputs.cache-mw-qmk-hash }}
90+
path: qmk_firmware
91+
92+
- name: Mass-compile QMK firmware
93+
if: ${{ matrix.keyboard == 'all_mw' }}
94+
run: |
95+
cd qmk_firmware
96+
qmk mass-compile -f "manufacturer=MechWild" -f "processor=${{matrix.processor}}" -km ${{ matrix.keymap }}
97+
98+
- name: Compile individual QMK firmware
99+
if: ${{ matrix.keyboard != 'all_mw' }}
100+
run: |
101+
cd qmk_firmware
102+
qmk compile -kb mechwild/${{ matrix.keyboard }} -km ${{ matrix.keymap }}
103+
104+
- name: Move firmware files
105+
run: |
106+
for HEXFILE in qmk_firmware/*
107+
do
108+
if [ xmechwild = x"$(echo $HEXFILE | cut -c14-21)" ]; then
109+
DIRPATH=$(echo $(echo $HEXFILE | cut -d "/" -f2) | awk -F'_' '{ print $2 }')
110+
[ -d "$DIRPATH" ] || mkdir $DIRPATH
111+
mv $HEXFILE $DIRPATH/.
112+
fi
113+
done
114+
- name: Zip firmware
115+
uses: actions/upload-artifact@v3
116+
continue-on-error: false
117+
with:
118+
name: mechwild-firmware
119+
path: |
120+
*/mechwild_*.hex
121+
*/mechwild_*.bin
122+
*/mechwild_*.uf2
123+
124+
vial-build:
125+
runs-on: ubuntu-latest
126+
container: qmkfm/qmk_cli
127+
strategy:
128+
fail-fast: false
129+
matrix:
130+
keyboard: [bde/rev2, mercutio, mokulua/standard, mokulua/mirrored, murphpad, obe/f401, obe/f411, obe/f401/eeprom, obe/f411/eeprom, waka60/f401, waka60/f401/eeprom, waka60/f411, waka60/f411/eeprom]
131+
steps:
132+
- name: Set variables
133+
id: vars
134+
run: |
135+
echo cache-vial-qmk-hash=$(git ls-remote https://github.com/MechWild/vial-qmk.git experimental_firmware | cut -f1) >> $GITHUB_OUTPUT
136+
137+
- name: Cache repos
138+
id: cache-repos
139+
uses: actions/cache@v3
140+
with:
141+
key: ${{ steps.vars.outputs.cache-vial-qmk-hash }}
142+
path: vial-qmk
143+
144+
- name: Checkout Vial
145+
if: ${{ ! steps.cache-repos.outputs.cache-hit }}
146+
uses: actions/checkout@v3
147+
with:
148+
repository: mechwild/vial-qmk
149+
ref: experimental_firmware
150+
submodules: recursive
151+
path: vial-qmk
152+
153+
- name: Compile individual Vial QMK firmware
154+
if: ${{ matrix.keyboard != 'all_mw' }}
155+
run: |
156+
cd vial-qmk
157+
qmk compile -kb mechwild/${{ matrix.keyboard }} -km vial
158+
159+
- name: Move firmware files
160+
run: |
161+
for HEXFILE in vial-qmk/*
162+
do
163+
if [ xmechwild = x"$(echo $HEXFILE | cut -c10-17)" ]; then
164+
DIRPATH=$(echo $(echo $HEXFILE | cut -d "/" -f2) | awk -F'_' '{ print $2 }')
165+
[ -d "$DIRPATH" ] || mkdir $DIRPATH
166+
mv $HEXFILE $DIRPATH/.
167+
fi
168+
done
169+
- name: Zip firmware
170+
uses: actions/upload-artifact@v3
171+
continue-on-error: false
172+
with:
173+
name: mechwild-vial-firmware
174+
path: |
175+
*/mechwild_*.hex
176+
*/mechwild_*.bin
177+
*/mechwild_*.uf2

0 commit comments

Comments
 (0)