Skip to content

Commit 51eae3f

Browse files
committed
Add release pipeline
1 parent e307d27 commit 51eae3f

File tree

2 files changed

+412
-0
lines changed

2 files changed

+412
-0
lines changed

.github/workflows/release.yml

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
name: U3A Release Pipeline
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
export-kicad:
10+
env:
11+
BaseFileName: "U3A"
12+
SchematicFileExtension: "kicad_sch"
13+
PCBFileExtension: "kicad_pcb"
14+
OutputFolder: "./output"
15+
ConfigFilePath: ".kibot/release.kibot.yaml"
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Fetch repository
19+
uses: actions/checkout@v4
20+
21+
- name: Prepare output directory
22+
run: |
23+
mkdir -p ${{ env.OutputFolder }}
24+
cp -r ./pcb ${{ env.OutputFolder }}/kicad
25+
cp ./LICENSE.md ${{ env.OutputFolder }}
26+
27+
- name: Run KiBOT
28+
uses: INTI-CMNB/KiBot@v2_dk7
29+
with:
30+
config: ${{ env.ConfigFilePath }}
31+
dir: ${{ env.OutputFolder }}
32+
schema: "./pcb/${{ env.BaseFileName }}.${{ env.SchematicFileExtension }}"
33+
board: "./pcb/${{ env.BaseFileName }}.${{ env.PCBFileExtension }}"
34+
35+
- name: Archive artifacts
36+
uses: actions/upload-artifact@v4
37+
with:
38+
name: kicad-export
39+
path: ${{ env.OutputFolder }}
40+
retention-days: 1
41+
42+
export-freecad:
43+
env:
44+
FREECADVERSION: "1.0.2"
45+
FreeCADFileName: "./mechanical/housing.FCStd"
46+
OutputFolder: "./output"
47+
PartType: "PartDesign::Body"
48+
runs-on: ubuntu-latest
49+
steps:
50+
- name: Fetch repository
51+
uses: actions/checkout@v4
52+
53+
- name: Prepare output directory
54+
run: |
55+
mkdir -p ${{ env.OutputFolder }}
56+
cp -r ./mechanical ${{ env.OutputFolder }}
57+
cp ./LICENSE.md ${{ env.OutputFolder }}
58+
59+
- name: Install FreeCAD
60+
run: |
61+
wget https://github.com/FreeCAD/FreeCAD/releases/download/${{ env.FREECADVERSION }}/FreeCAD_${{ env.FREECADVERSION }}-conda-Linux-x86_64-py311.AppImage
62+
chmod 0777 FreeCAD_${{ env.FREECADVERSION }}-conda-Linux-x86_64-py311.AppImage
63+
./FreeCAD_${{ env.FREECADVERSION }}-conda-Linux-x86_64-py311.AppImage --appimage-extract
64+
- name: Get FreeCAD Export
65+
run: |
66+
git clone https://github.com/0x007E/pyfreecadexport.git
67+
- name: Export STEP Files
68+
run: |
69+
./squashfs-root/usr/bin/python ./pyfreecadexport/src/pyfreecadexport.py -f "${{ env.FreeCADFileName }}" -p "${{ env.PartType }}" -d "${{ env.OutputFolder }}" -e "step" -l "squashfs-root/usr/lib/"
70+
./squashfs-root/usr/bin/python ./pyfreecadexport/src/pyfreecadexport.py -f "${{ env.FreeCADFileName }}" -p "${{ env.PartType }}" -d "${{ env.OutputFolder }}" -e "stl" -l "squashfs-root/usr/lib/"
71+
72+
- name: Archive artifacts
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: freecad-export
76+
path: ${{ env.OutputFolder }}
77+
retention-days: 1
78+
79+
create-release:
80+
needs: [export-kicad, export-freecad]
81+
runs-on: ubuntu-latest
82+
steps:
83+
- name: Create Release
84+
id: create_release
85+
uses: actions/create-release@v1
86+
env:
87+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
88+
with:
89+
tag_name: ${{ github.ref }}
90+
release_name: Release ${{ github.ref }}
91+
body: |
92+
Release ${{ github.ref }}
93+
draft: false
94+
prerelease: false
95+
96+
- name: Download KiCad Artifacts
97+
uses: actions/download-artifact@v4
98+
with:
99+
name: kicad-export
100+
path: ./artifact/kicad
101+
- name: Display structure
102+
run: ls -R ./artifact/kicad
103+
- name: Create Compressed File
104+
run: |
105+
cd ./artifact
106+
tar -czvf ./kicad.tar.gz ./kicad
107+
zip -r ./kicad.zip ./kicad
108+
cd ..
109+
110+
- name: Upload KiCAD Schematic
111+
uses: actions/upload-release-asset@v1
112+
env:
113+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
114+
with:
115+
upload_url: ${{ steps.create_release.outputs.upload_url }}
116+
asset_path: ./artifact/kicad/schematic/U3A-schematic.pdf
117+
asset_name: schematic.pdf
118+
asset_content_type: application/pdf
119+
120+
- name: Upload KiCAD PCB
121+
uses: actions/upload-release-asset@v1
122+
env:
123+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
124+
with:
125+
upload_url: ${{ steps.create_release.outputs.upload_url }}
126+
asset_path: ./artifact/kicad/pcb/PCB.pdf
127+
asset_name: pcb.pdf
128+
asset_content_type: application/pdf
129+
130+
- name: Upload KiCAD TOP Render
131+
uses: actions/upload-release-asset@v1
132+
env:
133+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134+
with:
135+
upload_url: ${{ steps.create_release.outputs.upload_url }}
136+
asset_path: ./artifact/kicad/blender/top.png
137+
asset_name: top.kicad.png
138+
asset_content_type: image/png
139+
140+
- name: Upload KiCAD BOTTOM Render
141+
uses: actions/upload-release-asset@v1
142+
env:
143+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
144+
with:
145+
upload_url: ${{ steps.create_release.outputs.upload_url }}
146+
asset_path: ./artifact/kicad/blender/bottom.png
147+
asset_name: bottom.kicad.png
148+
asset_content_type: image/png
149+
150+
- name: Upload KiCAD Drill PDF
151+
uses: actions/upload-release-asset@v1
152+
env:
153+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
154+
with:
155+
upload_url: ${{ steps.create_release.outputs.upload_url }}
156+
asset_path: ./artifact/kicad/drill/U3A-drill_map.pdf
157+
asset_name: drill.pdf
158+
asset_content_type: application/pdf
159+
160+
- name: Upload KiCAD Asset
161+
uses: actions/upload-release-asset@v1
162+
env:
163+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
164+
with:
165+
upload_url: ${{ steps.create_release.outputs.upload_url }}
166+
asset_path: ./artifact/kicad.tar.gz
167+
asset_name: kicad.tar.gz
168+
asset_content_type: application/gzip
169+
170+
- name: Upload KiCAD Asset
171+
uses: actions/upload-release-asset@v1
172+
env:
173+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
174+
with:
175+
upload_url: ${{ steps.create_release.outputs.upload_url }}
176+
asset_path: ./artifact/kicad.zip
177+
asset_name: kicad.zip
178+
asset_content_type: application/zip
179+
180+
- name: Download FreeCAD Artifacts
181+
uses: actions/download-artifact@v4
182+
with:
183+
name: freecad-export
184+
path: ./artifact/freecad
185+
- name: Display structure
186+
run: ls -R ./artifact/freecad
187+
- name: Create Compressed File
188+
run: |
189+
cp -r ./artifact/kicad/step ./artifact/freecad/pcb
190+
cd ./artifact
191+
tar -czvf ./freecad.tar.gz ./freecad
192+
zip -r ./freecad.zip ./freecad
193+
cd ..
194+
195+
- name: Upload FreeCAD Asset
196+
uses: actions/upload-release-asset@v1
197+
env:
198+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
199+
with:
200+
upload_url: ${{ steps.create_release.outputs.upload_url }}
201+
asset_path: ./artifact/freecad.tar.gz
202+
asset_name: freecad.tar.gz
203+
asset_content_type: application/gzip
204+
205+
- name: Upload FreeCAD Asset
206+
uses: actions/upload-release-asset@v1
207+
env:
208+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
209+
with:
210+
upload_url: ${{ steps.create_release.outputs.upload_url }}
211+
asset_path: ./artifact/freecad.zip
212+
asset_name: freecad.zip
213+
asset_content_type: application/zip

0 commit comments

Comments
 (0)