1
1
---
2
2
name : CI
3
+ permissions :
4
+ contents : read
3
5
4
6
on :
5
7
pull_request :
6
- branches : [master]
7
- types : [opened, synchronize, reopened]
8
+ branches :
9
+ - master
10
+ types :
11
+ - opened
12
+ - synchronize
13
+ - reopened
8
14
push :
9
- branches : [master]
15
+ branches :
16
+ - master
10
17
workflow_dispatch :
11
18
12
19
concurrency :
17
24
github_env :
18
25
name : GitHub Env Debug
19
26
runs-on : ubuntu-latest
20
-
21
27
steps :
22
28
- name : Dump github context
23
29
run : echo "$GITHUB_CONTEXT"
@@ -46,12 +52,12 @@ jobs:
46
52
github_token : ${{ secrets.GITHUB_TOKEN }}
47
53
48
54
build_linux_flatpak :
55
+ name : Linux Flatpak
49
56
env :
50
57
APP_ID : dev.lizardbyte.app.Sunshine
51
58
NODE_VERSION : " 20"
52
59
PLATFORM_VERSION : " 23.08"
53
- name : Linux Flatpak
54
- needs : [setup_release]
60
+ needs : setup_release
55
61
runs-on : ${{ matrix.runner }}
56
62
strategy :
57
63
fail-fast : false # false to test all, true to fail entire job if any fail
61
67
runner : ubuntu-22.04
62
68
- arch : aarch64
63
69
runner : ubuntu-22.04-arm
64
-
65
70
steps :
66
71
- name : Maximize build space
67
72
uses : easimon/maximize-build-space@v10
@@ -85,12 +90,10 @@ jobs:
85
90
node-version : ${{ env.NODE_VERSION }}
86
91
87
92
- name : Install npm dependencies
88
- run : |
89
- npm install --package-lock-only
93
+ run : npm install --package-lock-only
90
94
91
95
- name : Debug package-lock.json
92
- run : |
93
- cat package-lock.json
96
+ run : cat package-lock.json
94
97
95
98
- name : Setup python
96
99
id : python
@@ -121,12 +124,10 @@ jobs:
121
124
122
125
- name : flatpak node generator
123
126
# https://github.com/flatpak/flatpak-builder-tools/blob/master/node/README.md
124
- run : |
125
- flatpak-node-generator npm package-lock.json
127
+ run : flatpak-node-generator npm package-lock.json
126
128
127
129
- name : Debug generated-sources.json
128
- run : |
129
- cat generated-sources.json
130
+ run : cat generated-sources.json
130
131
131
132
- name : Cache Flatpak build
132
133
uses : actions/cache@v4
@@ -171,8 +172,7 @@ jobs:
171
172
172
173
- name : Debug Manifest
173
174
working-directory : build
174
- run : |
175
- cat ${APP_ID}.yml
175
+ run : cat ${APP_ID}.yml
176
176
177
177
- name : Build Linux Flatpak
178
178
working-directory : build
@@ -225,7 +225,7 @@ jobs:
225
225
226
226
- name : Package Flathub repo archive
227
227
# copy files required to generate the Flathub repo
228
- if : ${{ matrix.arch == 'x86_64' }}
228
+ if : matrix.arch == 'x86_64'
229
229
run : |
230
230
mkdir -p flathub/modules
231
231
cp ./build/generated-sources.json ./flathub/
@@ -245,9 +245,10 @@ jobs:
245
245
with :
246
246
name : sunshine-linux-flatpak-${{ matrix.arch }}
247
247
path : artifacts/
248
+ if-no-files-found : error
248
249
249
250
- name : Create/Update GitHub Release
250
- if : ${{ needs.setup_release.outputs.publish_release == 'true' }}
251
+ if : needs.setup_release.outputs.publish_release == 'true'
251
252
uses : LizardByte/create-release-action@v2025.102.13208
252
253
with :
253
254
allowUpdates : true
@@ -261,15 +262,14 @@ jobs:
261
262
build_linux :
262
263
name : Linux ${{ matrix.type }}
263
264
runs-on : ubuntu-${{ matrix.dist }}
264
- needs : [ setup_release]
265
+ needs : setup_release
265
266
strategy :
266
267
fail-fast : false # false to test all, true to fail entire job if any fail
267
268
matrix :
268
269
include : # package these differently
269
270
- type : AppImage
270
271
EXTRA_ARGS : ' --appimage-build'
271
272
dist : 22.04
272
-
273
273
steps :
274
274
- name : Maximize build space
275
275
uses : easimon/maximize-build-space@v10
@@ -344,14 +344,13 @@ jobs:
344
344
--ubuntu-test-repo ${{ matrix.EXTRA_ARGS }}
345
345
346
346
- name : Set AppImage Version
347
- if : |
348
- matrix.type == 'AppImage'
347
+ if : matrix.type == 'AppImage'
349
348
run : |
350
349
version=${{ needs.setup_release.outputs.release_tag }}
351
350
echo "VERSION=${version}" >> $GITHUB_ENV
352
351
353
352
- name : Package Linux - AppImage
354
- if : ${{ matrix.type == 'AppImage' }}
353
+ if : matrix.type == 'AppImage'
355
354
working-directory : build
356
355
run : |
357
356
# install sunshine to the DESTDIR
@@ -396,7 +395,7 @@ jobs:
396
395
rm -rf ./build/cuda
397
396
398
397
- name : Verify AppImage
399
- if : ${{ matrix.type == 'AppImage' }}
398
+ if : matrix.type == 'AppImage'
400
399
run : |
401
400
wget https://github.com/TheAssassin/appimagelint/releases/download/continuous/appimagelint-x86_64.AppImage
402
401
chmod +x appimagelint-x86_64.AppImage
@@ -408,6 +407,7 @@ jobs:
408
407
with :
409
408
name : sunshine-linux-${{ matrix.type }}-${{ matrix.dist }}
410
409
path : artifacts/
410
+ if-no-files-found : error
411
411
412
412
- name : Install test deps
413
413
run : |
@@ -431,9 +431,9 @@ jobs:
431
431
./test_sunshine --gtest_color=yes
432
432
433
433
- name : Generate gcov report
434
+ id : test_report
434
435
# any except canceled or skipped
435
436
if : always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure')
436
- id : test_report
437
437
working-directory : build
438
438
run : |
439
439
${{ steps.python.outputs.python-path }} -m pip install gcovr
@@ -461,7 +461,7 @@ jobs:
461
461
verbose : true
462
462
463
463
- name : Create/Update GitHub Release
464
- if : ${{ needs.setup_release.outputs.publish_release == 'true' }}
464
+ if : needs.setup_release.outputs.publish_release == 'true'
465
465
uses : LizardByte/create-release-action@v2025.102.13208
466
466
with :
467
467
allowUpdates : true
@@ -473,7 +473,8 @@ jobs:
473
473
token : ${{ secrets.GH_BOT_TOKEN }}
474
474
475
475
build_homebrew :
476
- needs : [setup_release]
476
+ name : Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }})
477
+ needs : setup_release
477
478
strategy :
478
479
fail-fast : false # false to test all, true to fail entire job if any fail
479
480
matrix :
@@ -489,9 +490,7 @@ jobs:
489
490
- os_version : " latest" # this job will only configure the formula for release, no validation
490
491
os_name : " ubuntu"
491
492
release : true
492
- name : Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }})
493
493
runs-on : ${{ matrix.os_name }}-${{ matrix.os_version }}
494
-
495
494
steps :
496
495
- name : Checkout
497
496
uses : actions/checkout@v4
@@ -579,16 +578,15 @@ jobs:
579
578
cat ./homebrew/sunshine.rb
580
579
581
580
- name : Upload Artifacts
582
- if : ${{ matrix.release }}
581
+ if : matrix.release
583
582
uses : actions/upload-artifact@v4
584
583
with :
585
584
name : sunshine-homebrew
586
585
path : homebrew/
586
+ if-no-files-found : error
587
587
588
588
- name : Setup Xvfb
589
- if : |
590
- matrix.release != true &&
591
- runner.os == 'Linux'
589
+ if : matrix.release != true && runner.os == 'Linux'
592
590
run : |
593
591
sudo apt-get update -y
594
592
sudo apt-get install -y \
@@ -601,8 +599,7 @@ jobs:
601
599
602
600
- name : Validate Homebrew Formula
603
601
id : test
604
- if : |
605
- matrix.release != true
602
+ if : matrix.release != true
606
603
uses : LizardByte/homebrew-release-action@v2024.1115.14934
607
604
with :
608
605
formula_file : ${{ github.workspace }}/homebrew/sunshine.rb
@@ -613,6 +610,7 @@ jobs:
613
610
validate : true
614
611
615
612
- name : Generate gcov report
613
+ id : test_report
616
614
# any except canceled or skipped
617
615
# TODO: fix coverage, no .gcno files are being created
618
616
# TODO: .gcno files are supposed to be created next to .o files
@@ -621,7 +619,6 @@ jobs:
621
619
# always() &&
622
620
# matrix.release != true &&
623
621
# (steps.test.outcome == 'success' || steps.test.outcome == 'failure')
624
- id : test_report
625
622
run : |
626
623
# if linux
627
624
if [ "${{ runner.os }}" == "Linux" ]; then
@@ -680,8 +677,7 @@ jobs:
680
677
- name : Patch homebrew formula
681
678
# create beta version of the formula
682
679
# don't run this on macOS, as the sed command fails
683
- if : >-
684
- matrix.release
680
+ if : matrix.release
685
681
run : |
686
682
# variables
687
683
formula_file="homebrew/sunshine-beta.rb"
@@ -713,9 +709,8 @@ jobs:
713
709
714
710
build_win :
715
711
name : Windows
712
+ needs : setup_release
716
713
runs-on : windows-2019
717
- needs : [setup_release]
718
-
719
714
steps :
720
715
- name : Checkout
721
716
uses : actions/checkout@v4
@@ -931,9 +926,9 @@ jobs:
931
926
./test_sunshine.exe --gtest_color=yes
932
927
933
928
- name : Generate gcov report
929
+ id : test_report
934
930
# any except canceled or skipped
935
931
if : always() && (steps.test.outcome == 'success' || steps.test.outcome == 'failure')
936
- id : test_report
937
932
shell : msys2 {0}
938
933
working-directory : build
939
934
run : |
@@ -979,9 +974,10 @@ jobs:
979
974
with :
980
975
name : sunshine-windows
981
976
path : artifacts/
977
+ if-no-files-found : error
982
978
983
979
- name : Create/Update GitHub Release
984
- if : ${{ needs.setup_release.outputs.publish_release == 'true' }}
980
+ if : needs.setup_release.outputs.publish_release == 'true'
985
981
uses : LizardByte/create-release-action@v2025.102.13208
986
982
with :
987
983
allowUpdates : true
0 commit comments