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