-
Notifications
You must be signed in to change notification settings - Fork 17
247 lines (243 loc) · 11.2 KB
/
build.yaml
File metadata and controls
247 lines (243 loc) · 11.2 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
---
#-------------------------------------------------------------------------------
# Workflow configuration
#-------------------------------------------------------------------------------
name: "Binary build"
on:
release:
types: [published]
push:
paths:
- ".github/workflows/build.yaml"
- "Cargo.toml"
- "crates/**"
- "macos/**"
- "windows/**"
- "deployments/**"
- "freedesktop/**"
pull_request_review:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
#-------------------------------------------------------------------------------
# Workflow jobs
#-------------------------------------------------------------------------------
jobs:
build-linux:
name: "Build on Linux"
runs-on: ubuntu-latest
steps:
# Checkout repository (and submodules)
- name: Checkout repository (and submodules)
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
# Get current git tag version
- name: Get git version
id: git_tag_version
run: |
export BUILD_VERSION=$(git describe --tags --abbrev=0)
echo "Build at version $BUILD_VERSION"
echo "BUILD_VERSION=$BUILD_VERSION" >> $GITHUB_OUTPUT
# Install dependencies (from package manager)
- name: Install dependencies (from package manager)
run: |
sudo apt-get install libgl1-mesa-dev libxcb1-dev libxkbcommon-x11-dev libx11-xcb-dev libxcb-cursor0 libzstd-dev fuse libfuse-dev libwayland-dev -y;
sudo apt-get install cmake ninja-build pkgconf libtool fish -y;
sudo apt-get install musl-tools musl-dev -y;
sudo apt-get install appstream -y;
# Build application
- name: Build application
run: |
rustup update stable && rustup default stable;
cargo build --release --bins;
- name: Build cli for musl
run: |
rustup target add x86_64-unknown-linux-musl;
cargo build --release -p wsrx --target x86_64-unknown-linux-musl;
# Deploy Glibc application
- name: Compress Glibc Binaries
run: tar --transform='s!.*/!!' -czvf wsrx-cli-linux-gnu-x86_64.tar.gz target/release/wsrx
# Deploy musl application
- name: Compress musl Binaries
run: tar --transform='s!.*/!!' -czvf wsrx-cli-linux-musl-x86_64.tar.gz target/x86_64-unknown-linux-musl/release/wsrx
# Build AppImage
- name: Build AppImage
run: |
./deployments/appimage.fish
# Move files
- name: move files
run: |
mv wsrx-cli-linux-gnu-x86_64.tar.gz wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.tar.gz
mv wsrx-cli-linux-musl-x86_64.tar.gz wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-musl-x86_64.tar.gz
mv WebSocketReflectorX-x86_64.AppImage WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.AppImage
# Upload Glibc cli package
- name: Upload Glibc cli package
uses: actions/upload-artifact@v4
with:
name: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.tar.gz
path: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.tar.gz
# Upload musl cli package
- name: Upload musl cli package
uses: actions/upload-artifact@v4
with:
name: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-musl-x86_64.tar.gz
path: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-musl-x86_64.tar.gz
# Upload AppImage
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.AppImage
path: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.AppImage
# Upload to github release
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-musl-x86_64.tar.gz
wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.tar.gz
WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-linux-gnu-x86_64.AppImage
build-windows:
name: "Build on Windows"
runs-on: windows-latest
steps:
# Checkout repository (and submodules)
- name: Checkout repository (and submodules)
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
# Get current git tag version
- name: Get git version
id: git_tag_version
run: |
echo BUILD_VERSION=$(git describe --tags --abbrev=0) | Out-File -FilePath $env:GITHUB_OUTPUT -Append
- name: Install NASM for aws-lc-rs on Windows
uses: ilammy/setup-nasm@v1
- name: Install ninja-build tool for aws-lc-fips-sys on Windows
uses: seanmiddleditch/gha-setup-ninja@v5
# Build application
- name: Build application
run: |
rustup update stable && rustup default stable;
cargo build --release --bins;
# Compress cli binaries
- name: Compress CLI Binaries
run: 7z a wsrx-cli-windows-msvc-x86_64.zip target/release/wsrx.exe
# Deploy application
- name: Deploy application
run: sh deployments/nsis.sh
# Move files
- name: move files
run: |
mv wsrx-cli-windows-msvc-x86_64.zip wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-windows-msvc-x86_64.zip
mv WebSocketReflectorX-installer-windows-msvc-x86_64.exe WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-installer-windows-msvc-x86_64.exe
mv WebSocketReflectorX-portable-windows-msvc-x86_64.zip WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-portable-windows-msvc-x86_64.zip
# Upload application ZIP
- name: Upload application ZIP
uses: actions/upload-artifact@v4
with:
name: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-windows-msvc-x86_64.zip
path: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-windows-msvc-x86_64.zip
# Upload NSIS installer
- name: Upload NSIS installer
uses: actions/upload-artifact@v4
with:
name: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-installer-windows-msvc-x86_64.exe
path: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-installer-windows-msvc-x86_64.exe
# Upload portable package
- name: Upload Portable package
uses: actions/upload-artifact@v4
with:
name: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-portable-windows-msvc-x86_64.zip
path: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-portable-windows-msvc-x86_64.zip
# Upload to github release
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-windows-msvc-x86_64.zip
WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-installer-windows-msvc-x86_64.exe
WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-portable-windows-msvc-x86_64.zip
build-mac:
name: "Build on MacOS"
runs-on: macos-latest
steps:
# Checkout repository (and submodules)
- name: Checkout repository (and submodules)
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
# Get current git tag version
- name: Get git version
id: git_tag_version
run: |
export BUILD_VERSION=$(git describe --tags --abbrev=0)
echo "Build at version $BUILD_VERSION"
echo "BUILD_VERSION=$BUILD_VERSION" >> $GITHUB_OUTPUT
# Build CLI binaries
- name: Build CLI binaries
run: |
rustup update stable && rustup default stable;
cargo install cargo-bundle;
cargo build --release --bins;
# Build CLI binaries for x86_64
- name: Build CLI binaries for x86_64
run: |
rustup target add x86_64-apple-darwin;
cargo build --release --bins --target x86_64-apple-darwin;
# Compress aarch64 binaries
- name: Compress Binaries for aarch64
run: zip -r -y -X wsrx-cli-macos-aarch64.zip target/release/wsrx
# Compress x86_64 binaries
- name: Compress Binaries for x86_64
run: zip -r -y -X wsrx-cli-macos-x86_64.zip target/x86_64-apple-darwin/release/wsrx
# Build OSX DMG app
- name: Build DMG
run: |
sh deployments/macos.sh
# Move files
- name: move files
run: |
mv WebSocketReflectorX.dmg WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.dmg
mv WebSocketReflectorX.app.zip WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.app.zip
mv wsrx-cli-macos-aarch64.zip wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.zip
mv wsrx-cli-macos-x86_64.zip wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-x86_64.zip
# Upload cli ZIP for aarch64
- name: Upload cli ZIP for aarch64
uses: actions/upload-artifact@v4
with:
name: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.zip
path: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.zip
# Upload cli ZIP for aarch64
- name: Upload cli ZIP for x86_64
uses: actions/upload-artifact@v4
with:
name: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-x86_64.zip
path: wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-x86_64.zip
# Upload application ZIP for aarch64
- name: Upload application ZIP for x86_64
uses: actions/upload-artifact@v4
with:
name: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.app.zip
path: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.app.zip
# Upload application DMG for aarch64
- name: Upload application DMG for x86_64
uses: actions/upload-artifact@v4
with:
name: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.dmg
path: WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.dmg
# Upload to github release
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.zip
wsrx-cli-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-x86_64.zip
WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.app.zip
WebSocketReflectorX-${{steps.git_tag_version.outputs.BUILD_VERSION}}-macos-aarch64.dmg