Skip to content

Commit ff49426

Browse files
committed
build overlay server seperately
1 parent 3db6344 commit ff49426

3 files changed

Lines changed: 107 additions & 101 deletions

File tree

.github/workflows/build_overlay_server.yml

Lines changed: 81 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
name: Build Overlay Server
22

3+
# Builds the Rust gsm_overlay_server binaries and publishes them to a single
4+
# rolling "overlay-server" release that the app release workflows pull from,
5+
# so they don't have to set up Rust and rebuild it every run.
36
on:
7+
push:
8+
branches:
9+
- main
10+
paths:
11+
- GSM_Overlay/input_server/**
412
workflow_dispatch:
513

14+
concurrency:
15+
group: build-overlay-server-${{ github.ref }}
16+
cancel-in-progress: true
17+
618
jobs:
719
build-windows:
820
runs-on: windows-latest
@@ -51,13 +63,25 @@ jobs:
5163
wait-for-completion: true
5264
output-artifact-directory: signed_output
5365

54-
- name: Upload signed binary
55-
if: steps.sign.outcome == 'success'
66+
- name: Stage binary for release (prefer signed)
67+
shell: pwsh
68+
run: |
69+
New-Item -ItemType Directory -Force -Path staging | Out-Null
70+
$signed = Get-ChildItem -Path signed_output -Recurse -File -Filter gsm_overlay_server.exe -ErrorAction SilentlyContinue | Select-Object -First 1
71+
if ($signed) {
72+
Write-Host "Using signed binary: $($signed.FullName)"
73+
Copy-Item $signed.FullName staging/gsm_overlay_server-win32.exe -Force
74+
} else {
75+
Write-Warning "Signed binary not available; falling back to unsigned."
76+
Copy-Item GSM_Overlay/input_server/target/release/gsm_overlay_server.exe staging/gsm_overlay_server-win32.exe -Force
77+
}
78+
79+
- name: Upload windows artifact
5680
uses: actions/upload-artifact@v4
5781
with:
58-
name: gsm-overlay-server-signed-windows
59-
path: signed_output
60-
if-no-files-found: warn
82+
name: overlay-server-win32
83+
path: staging/gsm_overlay_server-win32.exe
84+
if-no-files-found: error
6185

6286
build-linux:
6387
runs-on: ubuntu-latest
@@ -91,11 +115,16 @@ jobs:
91115
- name: Build gamepad server (Linux)
92116
run: cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
93117

94-
- name: Upload binary
118+
- name: Stage binary for release
119+
run: |
120+
mkdir -p staging
121+
cp GSM_Overlay/input_server/target/release/gsm_overlay_server staging/gsm_overlay_server-linux
122+
123+
- name: Upload linux artifact
95124
uses: actions/upload-artifact@v4
96125
with:
97-
name: gsm-overlay-server-linux
98-
path: GSM_Overlay/input_server/target/release/gsm_overlay_server
126+
name: overlay-server-linux
127+
path: staging/gsm_overlay_server-linux
99128
if-no-files-found: error
100129

101130
build-mac-arm64:
@@ -121,9 +150,50 @@ jobs:
121150
- name: Build gamepad server (macOS)
122151
run: cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
123152

124-
- name: Upload binary
153+
- name: Stage binary for release
154+
run: |
155+
mkdir -p staging
156+
cp GSM_Overlay/input_server/target/release/gsm_overlay_server staging/gsm_overlay_server-darwin
157+
158+
- name: Upload mac artifact
125159
uses: actions/upload-artifact@v4
126160
with:
127-
name: gsm-overlay-server-mac-arm64
128-
path: GSM_Overlay/input_server/target/release/gsm_overlay_server
161+
name: overlay-server-darwin
162+
path: staging/gsm_overlay_server-darwin
129163
if-no-files-found: error
164+
165+
publish:
166+
runs-on: ubuntu-latest
167+
needs:
168+
- build-windows
169+
- build-linux
170+
- build-mac-arm64
171+
permissions:
172+
contents: write
173+
steps:
174+
- name: Download platform binaries
175+
uses: actions/download-artifact@v4
176+
with:
177+
pattern: overlay-server-*
178+
path: staging
179+
merge-multiple: true
180+
181+
- name: Publish to rolling overlay-server release
182+
uses: softprops/action-gh-release@v2
183+
with:
184+
tag_name: overlay-server
185+
name: Overlay Server Binaries
186+
body: |
187+
Prebuilt `gsm_overlay_server` binaries consumed by the app release
188+
workflows. Auto-updated whenever `GSM_Overlay/input_server` changes.
189+
Not a user-facing release.
190+
prerelease: true
191+
make_latest: false
192+
overwrite_files: true
193+
fail_on_unmatched_files: true
194+
files: |
195+
staging/gsm_overlay_server-win32.exe
196+
staging/gsm_overlay_server-linux
197+
staging/gsm_overlay_server-darwin
198+
env:
199+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/dev_release_exe.yml

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,6 @@ jobs:
7171
package-lock.json
7272
GSM_Overlay/package-lock.json
7373
74-
- name: Set up Rust
75-
uses: dtolnay/rust-toolchain@stable
76-
77-
- name: Cache Rust build
78-
uses: Swatinem/rust-cache@v2
79-
with:
80-
workspaces: |
81-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
82-
8374
- name: Cache Electron binaries
8475
uses: actions/cache@v4
8576
with:
@@ -93,11 +84,13 @@ jobs:
9384
- name: Stamp version into package.json
9485
run: npm version ${{ needs.compute-version.outputs.PACKAGE_VERSION }} --no-git-tag-version --allow-same-version
9586

96-
- name: Build gamepad server (Windows)
87+
- name: Fetch prebuilt overlay server (Windows)
88+
shell: pwsh
89+
env:
90+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9791
run: |
98-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
9992
New-Item -ItemType Directory -Force -Path GSM_Overlay/input_server/bin/win32 | Out-Null
100-
Copy-Item GSM_Overlay/input_server/target/release/gsm_overlay_server.exe GSM_Overlay/input_server/bin/win32/gsm_overlay_server.exe -Force
93+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-win32.exe --output GSM_Overlay/input_server/bin/win32/gsm_overlay_server.exe --clobber
10194
10295
- name: Write prerelease metadata
10396
run: |
@@ -306,15 +299,6 @@ jobs:
306299
package-lock.json
307300
GSM_Overlay/package-lock.json
308301
309-
- name: Set up Rust
310-
uses: dtolnay/rust-toolchain@stable
311-
312-
- name: Cache Rust build
313-
uses: Swatinem/rust-cache@v2
314-
with:
315-
workspaces: |
316-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
317-
318302
- name: Cache Electron binaries
319303
uses: actions/cache@v4
320304
with:
@@ -328,20 +312,12 @@ jobs:
328312
- name: Stamp version into package.json
329313
run: npm version ${{ needs.compute-version.outputs.PACKAGE_VERSION }} --no-git-tag-version --allow-same-version
330314

331-
- name: Install Linux native build deps
332-
run: |
333-
sudo apt-get update
334-
sudo apt-get install -y \
335-
pkg-config \
336-
libudev-dev \
337-
libx11-dev \
338-
libxtst-dev
339-
340-
- name: Build gamepad server (Linux)
315+
- name: Fetch prebuilt overlay server (Linux)
316+
env:
317+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
341318
run: |
342-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
343319
mkdir -p GSM_Overlay/input_server/bin/linux
344-
cp GSM_Overlay/input_server/target/release/gsm_overlay_server GSM_Overlay/input_server/bin/linux/gsm_overlay_server
320+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-linux --output GSM_Overlay/input_server/bin/linux/gsm_overlay_server --clobber
345321
chmod +x GSM_Overlay/input_server/bin/linux/gsm_overlay_server
346322
347323
- name: Write prerelease metadata
@@ -400,15 +376,6 @@ jobs:
400376
package-lock.json
401377
GSM_Overlay/package-lock.json
402378
403-
- name: Set up Rust
404-
uses: dtolnay/rust-toolchain@stable
405-
406-
- name: Cache Rust build
407-
uses: Swatinem/rust-cache@v2
408-
with:
409-
workspaces: |
410-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
411-
412379
- name: Cache Electron binaries
413380
uses: actions/cache@v4
414381
with:
@@ -422,11 +389,12 @@ jobs:
422389
- name: Stamp version into package.json
423390
run: npm version ${{ needs.compute-version.outputs.PACKAGE_VERSION }} --no-git-tag-version --allow-same-version
424391

425-
- name: Build gamepad server (macOS)
392+
- name: Fetch prebuilt overlay server (macOS)
393+
env:
394+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
426395
run: |
427-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
428396
mkdir -p GSM_Overlay/input_server/bin/darwin
429-
cp GSM_Overlay/input_server/target/release/gsm_overlay_server GSM_Overlay/input_server/bin/darwin/gsm_overlay_server
397+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-darwin --output GSM_Overlay/input_server/bin/darwin/gsm_overlay_server --clobber
430398
chmod +x GSM_Overlay/input_server/bin/darwin/gsm_overlay_server
431399
432400
- name: Write prerelease metadata

.github/workflows/release_exe.yml

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,6 @@ jobs:
176176
package-lock.json
177177
GSM_Overlay/package-lock.json
178178
179-
- name: Set up Rust
180-
uses: dtolnay/rust-toolchain@stable
181-
182-
- name: Cache Rust build
183-
uses: Swatinem/rust-cache@v2
184-
with:
185-
workspaces: |
186-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
187-
188179
- name: Cache Electron binaries
189180
uses: actions/cache@v4
190181
with:
@@ -195,11 +186,13 @@ jobs:
195186
restore-keys: |
196187
${{ runner.os }}-electron-cache-
197188
198-
- name: Build gamepad server (Windows)
189+
- name: Fetch prebuilt overlay server (Windows)
190+
shell: pwsh
191+
env:
192+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
199193
run: |
200-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
201194
New-Item -ItemType Directory -Force -Path GSM_Overlay/input_server/bin/win32 | Out-Null
202-
Copy-Item GSM_Overlay/input_server/target/release/gsm_overlay_server.exe GSM_Overlay/input_server/bin/win32/gsm_overlay_server.exe -Force
195+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-win32.exe --output GSM_Overlay/input_server/bin/win32/gsm_overlay_server.exe --clobber
203196
204197
- name: Convert Handlebar files to LF line endings
205198
run: |
@@ -466,15 +459,6 @@ jobs:
466459
package-lock.json
467460
GSM_Overlay/package-lock.json
468461
469-
- name: Set up Rust
470-
uses: dtolnay/rust-toolchain@stable
471-
472-
- name: Cache Rust build
473-
uses: Swatinem/rust-cache@v2
474-
with:
475-
workspaces: |
476-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
477-
478462
- name: Cache Electron binaries
479463
uses: actions/cache@v4
480464
with:
@@ -485,20 +469,12 @@ jobs:
485469
restore-keys: |
486470
${{ runner.os }}-electron-cache-
487471
488-
- name: Install Linux native build deps
489-
run: |
490-
sudo apt-get update
491-
sudo apt-get install -y \
492-
pkg-config \
493-
libudev-dev \
494-
libx11-dev \
495-
libxtst-dev
496-
497-
- name: Build gamepad server (Linux)
472+
- name: Fetch prebuilt overlay server (Linux)
473+
env:
474+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
498475
run: |
499-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
500476
mkdir -p GSM_Overlay/input_server/bin/linux
501-
cp GSM_Overlay/input_server/target/release/gsm_overlay_server GSM_Overlay/input_server/bin/linux/gsm_overlay_server
477+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-linux --output GSM_Overlay/input_server/bin/linux/gsm_overlay_server --clobber
502478
chmod +x GSM_Overlay/input_server/bin/linux/gsm_overlay_server
503479
504480
- name: Build Overlay
@@ -561,15 +537,6 @@ jobs:
561537
package-lock.json
562538
GSM_Overlay/package-lock.json
563539
564-
- name: Set up Rust
565-
uses: dtolnay/rust-toolchain@stable
566-
567-
- name: Cache Rust build
568-
uses: Swatinem/rust-cache@v2
569-
with:
570-
workspaces: |
571-
GSM_Overlay/input_server -> GSM_Overlay/input_server/target
572-
573540
- name: Cache Electron binaries
574541
uses: actions/cache@v4
575542
with:
@@ -580,11 +547,12 @@ jobs:
580547
restore-keys: |
581548
${{ runner.os }}-electron-cache-
582549
583-
- name: Build gamepad server (macOS)
550+
- name: Fetch prebuilt overlay server (macOS)
551+
env:
552+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
584553
run: |
585-
cargo build --release --manifest-path GSM_Overlay/input_server/Cargo.toml
586554
mkdir -p GSM_Overlay/input_server/bin/darwin
587-
cp GSM_Overlay/input_server/target/release/gsm_overlay_server GSM_Overlay/input_server/bin/darwin/gsm_overlay_server
555+
gh release download overlay-server --repo ${{ github.repository }} --pattern gsm_overlay_server-darwin --output GSM_Overlay/input_server/bin/darwin/gsm_overlay_server --clobber
588556
chmod +x GSM_Overlay/input_server/bin/darwin/gsm_overlay_server
589557
590558
- name: Build Overlay

0 commit comments

Comments
 (0)