Skip to content

Commit 4378b60

Browse files
committed
adding workflow to main
1 parent b121a94 commit 4378b60

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed

.github/build_firmware.yml

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

0 commit comments

Comments
 (0)