-
Notifications
You must be signed in to change notification settings - Fork 0
144 lines (121 loc) · 5.18 KB
/
release.yml
File metadata and controls
144 lines (121 loc) · 5.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: Release Build
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Go 1.26
uses: actions/setup-go@v5
with:
go-version: "1.26"
- name: Extract version from tag
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Install Vosk library (Linux)
run: |
VOSK_LIB_VERSION="0.3.45"
wget -q "https://github.com/alphacep/vosk-api/releases/download/v${VOSK_LIB_VERSION}/vosk-linux-x86_64-${VOSK_LIB_VERSION}.zip" -O /tmp/libvosk.zip
unzip -q /tmp/libvosk.zip -d /tmp/libvosk
# Sudo benötigt, da wir auf dem GitHub Runner keine Root-Rechte haben
sudo cp /tmp/libvosk/vosk-linux-x86_64-${VOSK_LIB_VERSION}/libvosk.so /usr/local/lib/
sudo cp /tmp/libvosk/vosk-linux-x86_64-${VOSK_LIB_VERSION}/vosk_api.h /usr/local/include/
sudo ldconfig
- name: Build Linux binary
run: go build -o omnipanel-go-linux-amd64 .
- name: Package Linux ZIP
run: |
# zip ist auf ubuntu-latest vorinstalliert
cp /usr/local/lib/libvosk.so .
zip -r omnipanel-go-linux-amd64-${{ env.VERSION }}.zip omnipanel-go-linux-amd64 user config.json libvosk.so
- name: Upload Linux artifact
uses: actions/upload-artifact@v4
with:
name: omnipanel-go-linux-archive
path: omnipanel-go-linux-amd64-${{ env.VERSION }}.zip
build-windows:
runs-on: docker # (ubuntu-latest für GitHub)
steps:
- name: Checkout code
uses: https://code.forgejo.org/actions/checkout@v4 # (actions/checkout@v4 für GitHub)
- name: Setup Go 1.24
uses: https://code.forgejo.org/actions/setup-go@v5 # (actions/setup-go@v5 für GitHub)
with:
go-version: "1.24"
- name: Install MinGW and zip
run: apt-get update && apt-get install -y gcc-mingw-w64 zip
- name: Install Vosk library (Windows)
run: |
VOSK_LIB_VERSION="0.3.45"
wget -q "https://github.com/alphacep/vosk-api/releases/download/v${VOSK_LIB_VERSION}/vosk-win64-${VOSK_LIB_VERSION}.zip" -O /tmp/libvosk-win.zip
unzip -q /tmp/libvosk-win.zip -d /tmp/libvosk-win
mkdir -p $GITHUB_WORKSPACE/vosk-win
find /tmp/libvosk-win -name "*.dll" -exec cp {} $GITHUB_WORKSPACE/vosk-win/ \;
find /tmp/libvosk-win -name "vosk_api.h" -exec cp {} $GITHUB_WORKSPACE/vosk-win/ \;
if [ -f "$GITHUB_WORKSPACE/vosk-win/vosk.dll" ] && [ ! -f "$GITHUB_WORKSPACE/vosk-win/libvosk.dll" ]; then
cp $GITHUB_WORKSPACE/vosk-win/vosk.dll $GITHUB_WORKSPACE/vosk-win/libvosk.dll
fi
- name: Build Windows binary (CGO Cross-compile)
run: go build -o omnipanel-go-windows-amd64.exe .
env:
CGO_ENABLED: 1
GOOS: windows
GOARCH: amd64
CC: x86_64-w64-mingw32-gcc
CGO_CFLAGS: "-I${{ github.workspace }}/vosk-win"
CGO_LDFLAGS: "-L${{ github.workspace }}/vosk-win -lvosk"
- name: Collect MinGW runtime DLLs
run: |
# MinGW runtime DLLs die die .exe zur Laufzeit benötigt
MINGW_LIB_PATH=$(x86_64-w64-mingw32-gcc --print-file-name=libgcc_s_seh-1.dll)
MINGW_LIB_DIR=$(dirname $MINGW_LIB_PATH)
cp $MINGW_LIB_DIR/libgcc_s_seh-1.dll . 2>/dev/null || true
cp $MINGW_LIB_DIR/libwinpthread-1.dll . 2>/dev/null || true
cp $MINGW_LIB_DIR/libstdc++-6.dll . 2>/dev/null || true
echo "Collected DLLs:"
ls -lh *.dll 2>/dev/null || true
- name: Package Windows ZIP
run: |
cp $GITHUB_WORKSPACE/vosk-win/libvosk.dll .
# Alle DLLs + Binary + user-Daten einpacken
zip -r omnipanel-go-windows-amd64-${VERSION}.zip \
omnipanel-go-windows-amd64.exe \
user config.json \
libvosk.dll \
libgcc_s_seh-1.dll \
libwinpthread-1.dll \
libstdc++-6.dll 2>/dev/null || \
zip -r omnipanel-go-windows-amd64-${VERSION}.zip \
omnipanel-go-windows-amd64.exe \
user config.json \
libvosk.dll
- name: Upload Windows artifact
uses: https://code.forgejo.org/actions/upload-artifact@v3
with:
name: omnipanel-go-windows-archive
path: omnipanel-go-windows-amd64-${{ env.GIT_HASH }}.zip
create-release:
runs-on: ubuntu-latest
needs: [build-linux, build-windows]
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create Release and Upload Assets
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
draft: false
prerelease: false
files: |
artifacts/omnipanel-go-linux-archive/omnipanel-go-linux-amd64-*.zip
artifacts/omnipanel-go-windows-archive/omnipanel-go-windows-amd64-*.zip