Skip to content

Commit c03d5d4

Browse files
committed
first attempt at release workflow
1 parent f4f642a commit c03d5d4

File tree

2 files changed

+235
-0
lines changed

2 files changed

+235
-0
lines changed
Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
name: Upload release for tag stable
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]+'
7+
8+
jobs:
9+
10+
PC_Application_Ubuntu:
11+
runs-on: ubuntu-22.04
12+
outputs:
13+
upload_url: ${{ steps.bump_release.outputs.upload_url }}
14+
steps:
15+
- uses: actions/checkout@v3
16+
17+
- name: Install dependencies
18+
run: |
19+
sudo apt-get update
20+
sudo apt-get install -y libusb-1.0-0-dev qt6-tools-dev qt6-base-dev libqt6charts6-dev libqt6svg6-dev libgl-dev
21+
qtchooser -install qt6 $(which qmake6)
22+
23+
- name: Get app version
24+
id: id_version
25+
run: |
26+
cd Software/LibreCAL-GUI
27+
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreCAL-GUI.pro`
28+
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreCAL-GUI.pro`
29+
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreCAL-GUI.pro`
30+
echo "app_version=v$fw_major.$fw_minor.$fw_patch" >> $GITHUB_OUTPUT
31+
32+
- name: Build application
33+
run: |
34+
cd Software/LibreCAL-GUI
35+
export QT_SELECT=qt6
36+
qmake LibreCAL-GUI.pro
37+
make -j9
38+
zip LibreCAL-GUI.zip LibreCAL-GUI
39+
shell: bash
40+
41+
- name: Bump release page
42+
id: bump_release
43+
uses: actions/create-release@v1
44+
env:
45+
LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}"
46+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47+
with:
48+
tag_name: ${{env.LIBRECAL_VERSION}}
49+
release_name: ${{env.LIBRECAL_VERSION}}
50+
body: |
51+
See [CHANGELOG](https://github.com/${{github.repository}}/blob/${{env.LIBRECAL_VERSION}}/CHANGELOG.md) for more information.
52+
draft: false
53+
prerelease: false
54+
55+
- name: 'Upload release asset'
56+
uses: actions/upload-release-asset@v1
57+
env:
58+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
59+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60+
with:
61+
upload_url: ${{ steps.bump_release.outputs.upload_url }}
62+
asset_path: ./Software/LibreCAL-GUI/LibreCAL-GUI.zip
63+
asset_name: LibreCAL-GUI-Ubuntu-${{env.LIBRECAL_VERSION}}.zip
64+
asset_content_type: application/tar+gzip
65+
66+
67+
PC_Application_Windows:
68+
needs: PC_Application_Ubuntu
69+
runs-on: windows-2019
70+
steps:
71+
- uses: actions/checkout@v3
72+
- uses: msys2/setup-msys2@v2
73+
74+
- name: Install Qt
75+
uses: jurplel/install-qt-action@v3
76+
with:
77+
version: '6.2.0'
78+
arch: 'win64_mingw81'
79+
modules: 'qtcharts'
80+
81+
- name: Download libusb
82+
run: |
83+
curl -o libusb.7z -L https://github.com/libusb/libusb/releases/download/v1.0.25/libusb-1.0.25.7z
84+
7z x libusb.7z -r -olibusb
85+
Xcopy /E /I /Y libusb\include ..\Qt\6.2.0\mingw81_64\include
86+
Xcopy /E /I /Y libusb\MinGW64\static\libusb-1.0.a Software\PC_Application\LibreVNA-GUI
87+
shell: cmd
88+
89+
- name: Get app version
90+
id: id_version
91+
shell: msys2 {0}
92+
run: |
93+
cd Software/LibreCAL-GUI
94+
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreCAL-GUI.pro`
95+
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreCAL-GUI.pro`
96+
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreCAL-GUI.pro`
97+
echo "app_version=v$fw_major.$fw_minor.$fw_patch" >> $GITHUB_OUTPUT
98+
99+
- name: Build application
100+
run: |
101+
cd Software/LibreCAL-GUI
102+
qmake LibreCAL-GUI.pro
103+
make -j9
104+
shell: cmd
105+
106+
- name: Deploy application
107+
run: |
108+
cd Software/LibreCAL-GUI/release
109+
del *.o *.cpp
110+
windeployqt.exe .
111+
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libwinpthread-1.dll .
112+
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libgcc_s_seh-1.dll .
113+
copy "..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libstdc++-6.dll" .
114+
copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\Qt6OpenGL.dll .
115+
shell: cmd
116+
117+
- name: Zip app
118+
shell: cmd
119+
env:
120+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
121+
run: |
122+
7z a LibreCAL-GUI_Windows-${{env.LIBRECAL_VERSION}}.zip ./Software/LibreCAL-GUI/release
123+
124+
- name: 'Upload release asset'
125+
uses: actions/upload-release-asset@v1
126+
env:
127+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
128+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
129+
with:
130+
upload_url: ${{ needs.PC_Application_Ubuntu.outputs.upload_url }}
131+
asset_path: ./LibreCAL-GUI_Windows-${{env.LIBRECAL_VERSION}}.zip
132+
asset_name: LibreCAL-GUI_Windows-${{env.LIBRECAL_VERSION}}.zip
133+
asset_content_type: application/tar+gzip
134+
135+
PC_Application_OSX:
136+
needs: PC_Application_Ubuntu
137+
runs-on: macos-12
138+
steps:
139+
- uses: actions/checkout@v3
140+
141+
- name: Install dependencies
142+
run: |
143+
brew install qt@6 libusb pcre
144+
145+
- name: Set Environment
146+
run: |
147+
echo "/usr/local/opt/qt@6/bin" >> $GITHUB_PATH
148+
149+
- name: Get app version
150+
id: id_version
151+
run: |
152+
cd Software/LibreCAL-GUI
153+
fw_major=`pcregrep -o '(?<=FW_MAJOR=)[0-9]+' LibreCAL-GUI.pro`
154+
fw_minor=`pcregrep -o '(?<=FW_MINOR=)[0-9]+' LibreCAL-GUI.pro`
155+
fw_patch=`pcregrep -o '(?<=FW_PATCH=)[0-9]+' LibreCAL-GUI.pro`
156+
echo "app_version=v$fw_major.$fw_minor.$fw_patch" >> $GITHUB_OUTPUT
157+
158+
- name: Build application
159+
run: |
160+
cd Software/LibreCAL-GUI
161+
qmake LibreCAL-GUI.pro
162+
make -j9
163+
macdeployqt LibreCAL-GUI.app
164+
zip -ry LibreCAL-GUI.zip LibreCAL-GUI.app
165+
shell: bash
166+
167+
- name: 'Upload release asset'
168+
uses: actions/upload-release-asset@v1
169+
env:
170+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
171+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
172+
with:
173+
upload_url: ${{ needs.PC_Application_Ubuntu.outputs.upload_url }}
174+
asset_path: ./Software/LibreCAL-GUI/LibreCAL-GUI.zip
175+
asset_name: LibreCAL-GUI-OSX-${{env.LIBRECAL_VERSION}}.zip
176+
asset_content_type: application/tar+gzip
177+
178+
Embedded_Firmware:
179+
needs: PC_Application_Ubuntu
180+
runs-on: ubuntu-20.04
181+
steps:
182+
- uses: actions/checkout@v3
183+
184+
- name: Install toolchain
185+
run: |
186+
sudo apt-get update
187+
sudo apt install -y build-essential gcc-arm-none-eabi binutils-arm-none-eabi
188+
sudo git clone https://github.com/raspberrypi/pico-sdk.git /opt/pico-sdk
189+
sudo git -C /opt/pico-sdk checkout 2.0.0
190+
sudo git -C /opt/pico-sdk submodule update --init
191+
echo 'export PICO_SDK_PATH=/opt/pico-sdk' | sudo tee -a /etc/profile.d/pico-sdk.sh
192+
source /etc/profile
193+
194+
- name: Get app version
195+
id: id_version
196+
run: |
197+
cd Software/LibreCAL
198+
fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' CMakeLists.txt`
199+
fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' CMakeLists.txt`
200+
fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' CMakeLists.txt`
201+
echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT
202+
203+
- name: Build application
204+
run: |
205+
export PICO_SDK_PATH=/opt/pico-sdk
206+
cd Software/LibreCAL
207+
mkdir build && cd build
208+
cmake ..
209+
make -j9
210+
make -j9
211+
cp build/LibreCAL.uf2 ../../
212+
shell: bash
213+
214+
- name: Zip firmware
215+
env:
216+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
217+
run: |
218+
zip EmbeddedFirmware-${{env.LIBRECAL_VERSION}}.zip LibreCAL.uf2
219+
shell: bash
220+
221+
- name: 'Upload release asset'
222+
uses: actions/upload-release-asset@v1
223+
env:
224+
LIBRECAL_VERSION: "${{steps.id_version.outputs.app_version}}"
225+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
226+
with:
227+
upload_url: ${{ needs.PC_Application_Ubuntu.outputs.upload_url }}
228+
asset_path: ./EmbeddedFirmware-${{env.LIBRECAL_VERSION}}.zip
229+
asset_name: EmbeddedFirmware-${{env.LIBRECAL_VERSION}}.zip
230+
asset_content_type: application/tar+gzip

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Changelog
2+
3+
## v0.2.1
4+
5+
First public release

0 commit comments

Comments
 (0)