Repository navigation
152 lines (145 loc) · 6.41 KB
/
Copy pathrelease.yaml
File metadata and controls
152 lines (145 loc) · 6.41 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
name: LabStreamGate Release
on:
push:
tags:
- "v*"
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
jobs:
linux-cli:
name: Linux CLI packages
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-unknown-linux-musl
- name: Install musl toolchain
run: sudo apt-get update && sudo apt-get install -y musl-tools
- name: Build CLI
run: |
cargo build --locked --release -p wsrx --bin labstreamgate
cargo build --locked --release -p wsrx --bin labstreamgate --target x86_64-unknown-linux-musl
- name: Package CLI
run: |
tar -C target/release -czf "labstreamgate-cli-${GITHUB_REF_NAME}-linux-gnu-x86_64.tar.gz" labstreamgate
tar -C target/x86_64-unknown-linux-musl/release -czf "labstreamgate-cli-${GITHUB_REF_NAME}-linux-musl-x86_64.tar.gz" labstreamgate
- uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: |
labstreamgate-cli-${{ github.ref_name }}-linux-gnu-x86_64.tar.gz
labstreamgate-cli-${{ github.ref_name }}-linux-musl-x86_64.tar.gz
linux-desktop:
name: Linux desktop package
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y appstream cmake fish fuse libasound2-dev libfontconfig1-dev libfuse-dev libgl1-mesa-dev libssl-dev libtool libwayland-dev libx11-xcb-dev libxcb-cursor0 libxcb-shape0-dev libxcb-xfixes0-dev libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev libzstd-dev ninja-build pkgconf
- name: Build desktop
run: |
set +e
cargo build --locked --release -p wsrx-desktop --bin labstreamgate-desktop 2>&1 | tee /tmp/labstreamgate-desktop-build.log
build_code=${PIPESTATUS[0]}
if [ "$build_code" -ne 0 ]; then
build_detail="$(tail -n 30 /tmp/labstreamgate-desktop-build.log | tr '\n' '|' | sed 's/%/%25/g; s/\r/%0D/g; s/|/%0A/g')"
echo "::error title=Linux desktop build failed::${build_detail}"
exit "$build_code"
fi
- name: Package desktop AppImage
run: |
fish deployments/appimage.fish
appimage="$(find . -maxdepth 1 -type f -name '*.AppImage' -print -quit)"
test -n "$appimage"
mv "$appimage" "LabStreamGate-${GITHUB_REF_NAME}-linux-x86_64.AppImage"
- uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: |
LabStreamGate-${{ github.ref_name }}-linux-x86_64.AppImage
windows:
name: Windows packages
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: ilammy/setup-nasm@v1
- uses: seanmiddleditch/gha-setup-ninja@v6
- name: Build desktop and CLI
run: cargo build --locked --release --bins
- name: Package CLI
shell: pwsh
run: 7z a "labstreamgate-cli-${env:GITHUB_REF_NAME}-windows-x86_64.zip" target/release/labstreamgate.exe
- name: Package desktop
shell: bash
run: |
set +e
deployments/nsis.sh 2>&1 | tee /tmp/labstreamgate-windows-package.log
package_code=${PIPESTATUS[0]}
if [ "$package_code" -ne 0 ]; then
package_detail="$(tail -n 30 /tmp/labstreamgate-windows-package.log | tr '\n' '|' | sed 's/%/%25/g; s/\r/%0D/g; s/|/%0A/g')"
echo "::error title=Windows desktop packaging failed::${package_detail}"
exit "$package_code"
fi
- name: Name desktop packages
shell: bash
run: |
mv LabStreamGate-installer-windows-msvc-x86_64.exe "LabStreamGate-${GITHUB_REF_NAME}-installer-windows-x86_64.exe"
mv LabStreamGate-portable-windows-msvc-x86_64.zip "LabStreamGate-${GITHUB_REF_NAME}-portable-windows-x86_64.zip"
- uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: |
labstreamgate-cli-${{ github.ref_name }}-windows-x86_64.zip
LabStreamGate-${{ github.ref_name }}-installer-windows-x86_64.exe
LabStreamGate-${{ github.ref_name }}-portable-windows-x86_64.zip
macos:
name: macOS packages
runs-on: macos-14
strategy:
fail-fast: false
matrix:
target:
- x86_64-apple-darwin
- aarch64-apple-darwin
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build desktop and CLI
run: cargo build --locked --release --bins --target "${{ matrix.target }}"
- name: Bundle desktop
run: |
version="${GITHUB_REF_NAME#v}"
app="target/${{ matrix.target }}/release/bundle/osx/LabStreamGate.app"
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
cp "target/${{ matrix.target }}/release/labstreamgate-desktop" "$app/Contents/MacOS/labstreamgate-desktop"
cp macos/LabStreamGate.icns "$app/Contents/Resources/LabStreamGate.icns"
sed "s/@VERSION@/${version}/g" macos/Info.plist > "$app/Contents/Info.plist"
chmod 0755 "$app/Contents/MacOS/labstreamgate-desktop"
plutil -lint "$app/Contents/Info.plist"
codesign --force --deep --sign - "$app"
codesign --verify --deep --strict "$app"
- name: Package
run: |
arch="${{ matrix.target }}"
arch="${arch%%-*}"
app="target/${{ matrix.target }}/release/bundle/osx/LabStreamGate.app"
test -d "$app"
ditto -c -k --sequesterRsrc --keepParent "$app" "LabStreamGate-${GITHUB_REF_NAME}-macos-${arch}.app.zip"
hdiutil create "LabStreamGate-${GITHUB_REF_NAME}-macos-${arch}.dmg" -ov -volname LabStreamGate -fs HFS+ -srcfolder "$app"
ditto -c -k --keepParent "target/${{ matrix.target }}/release/labstreamgate" "labstreamgate-cli-${GITHUB_REF_NAME}-macos-${arch}.zip"
- uses: softprops/action-gh-release@v3
with:
generate_release_notes: true
files: |
LabStreamGate-${{ github.ref_name }}-macos-*.app.zip
LabStreamGate-${{ github.ref_name }}-macos-*.dmg
labstreamgate-cli-${{ github.ref_name }}-macos-*.zip