Skip to content

Commit 03c2704

Browse files
Automativ release build and creation
1 parent 1261502 commit 03c2704

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed

.github/workflows/make-release.yml

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
name: Build All and Make Release
2+
on: [workflow_dispatch]
3+
jobs:
4+
build-linux:
5+
runs-on: ubuntu-20.04
6+
steps:
7+
- uses: actions/checkout@v4
8+
with:
9+
submodules: true
10+
- name: Install cross compilation tools
11+
run: |
12+
sudo apt-get install -y gcc g++ make git gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu zip gcc-i686-linux-gnu g++-i686-linux-gnu
13+
14+
- name: Build mklittlefs x86-64
15+
run: |
16+
tgt=linux pfx=x86_64-linux-gnu exe="" AHOST="x86_64-pc-linux-gnu" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
17+
name=mklittlefs-$(git rev-parse --short HEAD)
18+
mkdir -p tmp/mklittlefs
19+
mv mklittlefs tmp/mklittlefs/.
20+
cd tmp
21+
zip -rq ../x86_64-linux-gnu-${name}.zip mklittlefs
22+
cd ..
23+
rm -rf tmp
24+
make clean
25+
- name: Build mklittlefs aarch64
26+
run: |
27+
tgt=linux pfx=aarch64-linux-gnu exe="" AHOST="aarch64-linux-gnu" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
28+
name=mklittlefs-$(git rev-parse --short HEAD)
29+
mkdir -p tmp/mklittlefs
30+
mv mklittlefs tmp/mklittlefs/.
31+
cd tmp
32+
zip -rq ../aarch64-linux-gnu-${name}.zip mklittlefs
33+
cd ..
34+
rm -rf tmp
35+
make clean
36+
- name: Build mklittlefs arm
37+
run: |
38+
tgt=linux pfx=arm-linux-gnueabihf exe="" AHOST="arm-linux-gnueabihf" TARGET_OS=${tgt} CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=${pfx}-strip make clean mklittlefs${exe} BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
39+
name=mklittlefs-$(git rev-parse --short HEAD)
40+
mkdir -p tmp/mklittlefs
41+
mv mklittlefs tmp/mklittlefs/.
42+
cd tmp
43+
zip -rq ../arm-linux-gnueabihf-${name}.zip mklittlefs
44+
cd ..
45+
rm -rf tmp
46+
make clean
47+
48+
- name: Upload mklittlefs x86-64
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: x86_64-linux-gnu-mklittlefs.zip
52+
path: x86_64-linux-gnu-mklittlefs-*.zip
53+
- name: Upload mklittlefs aarch64
54+
uses: actions/upload-artifact@v4
55+
with:
56+
name: aarch64-linux-gnu-mklittlefs.zip
57+
path: aarch64-linux-gnu-mklittlefs-*.zip
58+
- name: Upload mklittlefs arm-linux-gnueabihf
59+
uses: actions/upload-artifact@v4
60+
with:
61+
name: arm-linux-gnueabihf-mklittlefs.zip
62+
path: arm-linux-gnueabihf-mklittlefs-*.zip
63+
64+
build-mac-arm:
65+
runs-on: macos-14
66+
steps:
67+
- uses: maxim-lobanov/setup-xcode@v1
68+
with:
69+
xcode-version: '14.3.1'
70+
- uses: actions/checkout@v4
71+
with:
72+
submodules: true
73+
74+
- name: Build mklittlefs MacARM
75+
run: |
76+
rm -f *.json *.gz *.zip
77+
pfx=aarch64-apple-darwin20
78+
AHOST=aarch64-apple-darwin TARGET_OS=osx CC=gcc CXX=g++ STRIP=strip make clean mklittlefs BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
79+
- name: Package mklittlefs MacARM
80+
run: |
81+
name=mklittlefs-$(git rev-parse --short HEAD)
82+
mkdir -p tmp/mklittlefs
83+
mv mklittlefs tmp/mklittlefs/.
84+
cd tmp
85+
zip -rq ../aarch64-apple-darwin-${name}.zip mklittlefs
86+
cd ..
87+
rm -rf tmp
88+
- name: Upload mklittlefs MacARM
89+
uses: actions/upload-artifact@v4
90+
with:
91+
name: aarch64-apple-darwin-mklittlefs.zip
92+
path: aarch64-apple-darwin-mklittlefs-*.zip
93+
94+
build-mac:
95+
runs-on: macos-12
96+
steps:
97+
- uses: maxim-lobanov/setup-xcode@v1
98+
with:
99+
xcode-version: '13.1.0'
100+
- uses: actions/checkout@v4
101+
with:
102+
submodules: true
103+
104+
- name: Build mklittlefs Mac86
105+
run: |
106+
rm -f *.json *.gz *.zip
107+
pfx=x86_64-apple-darwin20
108+
AHOST=x86_64-apple-darwin TARGET_OS=osx CC=gcc CXX=g++ STRIP=strip make clean mklittlefs BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
109+
- name: Package mklittlefs Mac86
110+
run: |
111+
name=mklittlefs-$(git rev-parse --short HEAD)
112+
mkdir -p tmp/mklittlefs
113+
mv mklittlefs tmp/mklittlefs/.
114+
cd tmp
115+
zip -rq ../x86_64-apple-darwin-${name}.zip mklittlefs
116+
cd ..
117+
rm -rf tmp
118+
- name: Upload mklittlefs Mac86
119+
uses: actions/upload-artifact@v4
120+
with:
121+
name: x86_64-apple-darwin-mklittlefs.zip
122+
path: x86_64-apple-darwin-mklittlefs-*.zip
123+
124+
build-windows:
125+
runs-on: windows-latest
126+
defaults:
127+
run:
128+
shell: msys2 {0}
129+
strategy:
130+
matrix:
131+
include:
132+
- { sys: mingw64, env: x86_64 }
133+
- { sys: mingw32, env: i686 }
134+
steps:
135+
- uses: msys2/setup-msys2@v2
136+
with:
137+
msystem: ${{matrix.sys}}
138+
install: development mingw-w64-${{matrix.env}}-make git mingw-w64-${{matrix.env}}-toolchain zip
139+
- uses: actions/checkout@v4
140+
with:
141+
submodules: true
142+
- name: Build mklittlefs ${{matrix.env}}
143+
run: |
144+
rm -f *.json *.gz *.zip
145+
pfx=${{matrix.env}}-w64-mingw32
146+
AHOST=${{matrix.env}}-mingw32 TARGET_OS=windows CC=${pfx}-gcc CXX=${pfx}-g++ STRIP=strip mingw32-make clean mklittlefs.exe BUILD_CONFIG_NAME="-arduino" CPPFLAGS=""
147+
- name: Package mklittlefs ${{matrix.env}}
148+
run: |
149+
name=mklittlefs-$(git rev-parse --short HEAD)
150+
mkdir -p tmp/mklittlefs
151+
mv mklittlefs.exe tmp/mklittlefs/.
152+
cd tmp
153+
zip -rq ../${{matrix.env}}-w64-mingw32-${name}.zip mklittlefs
154+
cd ..
155+
rm -rf tmp
156+
- name: Upload mklittlefs ${{matrix.env}}
157+
uses: actions/upload-artifact@v4
158+
with:
159+
name: ${{matrix.env}}-w64-mingw32-mklittlefs.zip
160+
path: ${{matrix.env}}-w64-mingw32-mklittlefs-*.zip
161+
162+
make-release:
163+
needs: [build-linux, build-mac-arm, build-mac, build-windows]
164+
runs-on: ubuntu-latest
165+
permissions:
166+
contents: write
167+
steps:
168+
- uses: actions/checkout@v4
169+
with:
170+
submodules: true
171+
- name: Download all artifacts
172+
uses: actions/download-artifact@v4
173+
- name: Renaming artifacts
174+
run: |
175+
rev=$(git rev-parse --short HEAD)
176+
mkdir release
177+
mkdir tmp && unzip ../x86_64-apple-darwin-mklittlefs.zip && unzip *zip && tar zcvf ../release/x86_64-apple-darwin-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
178+
mkdir tmp && unzip ../aarch64-apple-darwin-mklittlefs.zip && unzip *zip && tar zcvf ../release/aarch64-apple-darwin-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
179+
mv i686-w64-mingw32-mklittlefs.zip ./release/i686-w64-mingw32-mklittlefs-${rev}.zip
180+
mv x86_64-w64-mingw32-mklittlefs.zip ./release/x86_64-w64-mingw32-mklittlefs-${rev}.zip
181+
mkdir tmp && unzip ../x86_64-linux-gnu-mklittlefs.zip && unzip *zip && tar zcvf ../release/x86_64-linux-gnu-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
182+
mkdir tmp && unzip ../aarch64-linux-gnu-mklittlefs.zip && unzip *zip && tar zcvf ../release/aarch64-linux-gnu-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
183+
mkdir tmp && unzip ../arm-linux-gnueabihf-mklittlefs.zip && unzip *zip && tar zcvf ../release/arm-linux-gnueabihf-mklittlefs-${rev}.tar.gz mklittlefs && cd .. && rm -rf tmp
184+
ls -l release
185+
- name: Drafting release
186+
- uses: ncipollo/release-action@v1
187+
with:
188+
artifacts: "release/*"
189+
draft: true
190+
body: "Draft release"
191+
tag: "test"

0 commit comments

Comments
 (0)