Skip to content

Commit f423b80

Browse files
committed
refact: ci build debug
Signed-off-by: fufesou <[email protected]>
1 parent e933f0b commit f423b80

File tree

3 files changed

+93
-34
lines changed

3 files changed

+93
-34
lines changed

Diff for: .github/workflows/flutter-build.yml

+8-3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ on:
99
upload-tag:
1010
type: string
1111
default: "nightly"
12+
build-debug:
13+
type: boolean
14+
default: false
1215

1316
env:
1417
WIN_RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503, also 1.78 has ABI change which causes our sciter version not working, https://blog.rust-lang.org/2024/03/30/i128-layout-update.html
@@ -34,14 +37,16 @@ env:
3437
API_SERVER: "${{ secrets.API_SERVER }}"
3538
UPLOAD_ARTIFACT: "${{ inputs.upload-artifact }}"
3639
SIGN_BASE_URL: "${{ secrets.SIGN_BASE_URL }}"
37-
40+
DEBUG_RELEASE: ${{ inputs.build-debug == true && 'debug' || 'release' }}
41+
CARGO_DEBUG_RELEASE: ${{ inputs.build-debug == true && '' || '--release' }}
42+
3843
jobs:
3944
build-RustDeskTempTopMostWindow:
4045
uses: ./.github/workflows/third-party-RustDeskTempTopMostWindow.yml
4146
with:
4247
upload-artifact: ${{ inputs.upload-artifact }}
4348
target: windows-2022
44-
configuration: Release
49+
configuration: ${{ inputs.build-debug == true && 'Debug' || 'Release' }}
4550
platform: x64
4651
target_version: Windows10
4752
strategy:
@@ -258,7 +263,7 @@ jobs:
258263
# Patch sciter x86
259264
sed -i 's/branch = "dyn"/branch = "dyn_x86"/g' ./Cargo.toml
260265
cargo build --features inline,vram,hwcodec --release --bins
261-
mkdir -p ./Release
266+
mkdir -p ./${{ env.DEBUG_RELEASE }}
262267
mv ./target/release/rustdesk.exe ./Release/rustdesk.exe
263268
curl -LJ -o ./Release/sciter.dll https://github.com/c-smile/sciter-sdk/raw/master/bin.win/x32/sciter.dll
264269
echo "output_folder=./Release" >> $GITHUB_OUTPUT

Diff for: .github/workflows/flutter-debug.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Flutter Nightly Build Debug
2+
3+
on:
4+
schedule:
5+
# schedule build every night
6+
- cron: "0 0 * * *"
7+
workflow_dispatch:
8+
9+
jobs:
10+
run-flutter-nightly-build:
11+
uses: ./.github/workflows/flutter-build.yml
12+
secrets: inherit
13+
with:
14+
upload-artifact: true
15+
upload-tag: "nightly-debug"
16+
build-debug: true

Diff for: build.py

+69-31
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,39 @@
1313
windows = platform.platform().startswith('Windows')
1414
osx = platform.platform().startswith(
1515
'Darwin') or platform.platform().startswith("macOS")
16-
hbb_name = 'rustdesk' + ('.exe' if windows else '')
17-
exe_path = 'target/release/' + hbb_name
18-
if windows:
19-
flutter_build_dir = 'build/windows/x64/runner/Release/'
20-
elif osx:
21-
flutter_build_dir = 'build/macos/Build/Products/Release/'
22-
else:
23-
flutter_build_dir = 'build/linux/x64/release/bundle/'
24-
flutter_build_dir_2 = f'flutter/{flutter_build_dir}'
16+
hbb_name = ''
17+
exe_path = ''
18+
flutter_build_dir = ''
19+
flutter_build_dir_2 = ''
2520
skip_cargo = False
21+
debug_release = ''
22+
cargo_debug_release = ''
23+
24+
def prepare_global_vars(debug):
25+
global debug_release
26+
global cargo_debug_release
27+
global exe_path
28+
global flutter_build_dir
29+
global flutter_build_dir_2
30+
31+
debug_release = 'debug' if debug else 'release'
32+
cargo_debug_release = '--release' if not debug else ''
33+
exe_path = f'target/{debug_release}/' + hbb_name
34+
if windows:
35+
flutter_build_dir = f'build/windows/x64/runner/{debug_release}/'
36+
elif osx:
37+
flutter_build_dir = f'build/macos/Build/Products/{debug_release}/'
38+
else:
39+
flutter_build_dir = f'build/linux/x64/{debug_release}/bundle/'
40+
flutter_build_dir_2 = f'flutter/{flutter_build_dir}'
2641

42+
def zip_directory(directory_path, zip_file_path):
43+
with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
44+
for root, dirs, files in os.walk(directory_path):
45+
for file in files:
46+
file_path = os.path.join(root, file)
47+
arcname = os.path.relpath(file_path, directory_path)
48+
zipf.write(file_path, arcname)
2749

2850
def get_arch() -> str:
2951
custom_arch = os.environ.get("ARCH")
@@ -122,11 +144,6 @@ def make_parser():
122144
action='store_true',
123145
help='Enable feature vram, only available on windows now.'
124146
)
125-
parser.add_argument(
126-
'--portable',
127-
action='store_true',
128-
help='Build windows portable'
129-
)
130147
parser.add_argument(
131148
'--unix-file-copy-paste',
132149
action='store_true',
@@ -147,6 +164,11 @@ def make_parser():
147164
"--package",
148165
type=str
149166
)
167+
parser.add_argument(
168+
"--debug",
169+
action="store_true",
170+
help="Build debug version"
171+
)
150172
return parser
151173

152174

@@ -426,15 +448,17 @@ def build_flutter_arch_manjaro(version, features):
426448

427449

428450
def build_flutter_windows(version, features, skip_portable_pack):
451+
global debug_release
452+
global cargo_debug_release
429453
if not skip_cargo:
430-
system2(f'cargo build --features {features} --lib --release')
431-
if not os.path.exists("target/release/librustdesk.dll"):
454+
system2(f'cargo build --features {features} --lib {cargo_debug_release}')
455+
if not os.path.exists(f"target/{debug_release}/librustdesk.dll"):
432456
print("cargo build failed, please check rust source code.")
433457
exit(-1)
434458
os.chdir('flutter')
435-
system2('flutter build windows --release')
459+
system2(f'flutter build windows {cargo_debug_release}')
436460
os.chdir('..')
437-
shutil.copy2('target/release/deps/dylib_virtual_display.dll',
461+
shutil.copy2(f'target/{debug_release}/deps/dylib_virtual_display.dll',
438462
flutter_build_dir_2)
439463
if skip_portable_pack:
440464
return
@@ -461,6 +485,11 @@ def main():
461485
parser = make_parser()
462486
args = parser.parse_args()
463487

488+
debug = args.debug
489+
prepare_global_vars(debug)
490+
global debug_release
491+
global cargo_debug_release
492+
464493
if os.path.exists(exe_path):
465494
os.unlink(exe_path)
466495
if os.path.isfile('/usr/bin/pacman'):
@@ -473,7 +502,6 @@ def main():
473502
print(args.skip_cargo)
474503
if args.skip_cargo:
475504
skip_cargo = True
476-
portable = args.portable
477505
package = args.package
478506
if package:
479507
build_deb_from_folder(version, package)
@@ -483,30 +511,40 @@ def main():
483511
if windows:
484512
# build virtual display dynamic library
485513
os.chdir('libs/virtual_display/dylib')
486-
system2('cargo build --release')
514+
system2(f'cargo build {cargo_debug_release}')
487515
os.chdir('../../..')
488516

489517
if flutter:
490-
build_flutter_windows(version, features, args.skip_portable_pack)
518+
skip_portable_pack = args.skip_portable_pack or debug
519+
build_flutter_windows(version, features, skip_portable_pack)
520+
if debug:
521+
system2(f'cd {flutter_build_dir_2}/..')
522+
dir_name = f'rustdesk-{version}-debug'
523+
system2(f'mv debug {dir_name}')
524+
zip_directory(dir_name, f'{dir_name}.zip')
491525
return
492-
system2('cargo build --release --features ' + features)
526+
system2(f'cargo build {cargo_debug_release} --features ' + features)
493527
# system2('upx.exe target/release/rustdesk.exe')
494-
system2('mv target/release/rustdesk.exe target/release/RustDesk.exe')
495-
pa = os.environ.get('P')
528+
system2(f'mv target/{debug_release}/rustdesk.exe target/{debug_release}/RustDesk.exe')
529+
pa = os.environ.get('P') if not debug else None
496530
if pa:
497531
# https://certera.com/kb/tutorial-guide-for-safenet-authentication-client-for-code-signing/
498532
system2(
499533
f'signtool sign /a /v /p {pa} /debug /f .\\cert.pfx /t http://timestamp.digicert.com '
500534
'target\\release\\rustdesk.exe')
501535
else:
502536
print('Not signed')
503-
system2(
504-
f'cp -rf target/release/RustDesk.exe {res_dir}')
505-
os.chdir('libs/portable')
506-
system2('pip3 install -r requirements.txt')
507-
system2(
508-
f'python3 ./generate.py -f ../../{res_dir} -o . -e ../../{res_dir}/rustdesk-{version}-win7-install.exe')
509-
system2('mv ../../{res_dir}/rustdesk-{version}-win7-install.exe ../..')
537+
if debug:
538+
system2(
539+
f'cp -rf target/{debug_release}/RustDesk.exe rustdesk-{version}-win7.exe')
540+
else:
541+
system2(
542+
f'cp -rf target/{debug_release}/RustDesk.exe {res_dir}')
543+
os.chdir('libs/portable')
544+
system2('pip3 install -r requirements.txt')
545+
system2(
546+
f'python3 ./generate.py -f ../../{res_dir} -o . -e ../../{res_dir}/rustdesk-{version}-win7-install.exe')
547+
system2('mv ../../{res_dir}/rustdesk-{version}-win7-install.exe ../..')
510548
elif os.path.isfile('/usr/bin/pacman'):
511549
# pacman -S -needed base-devel
512550
system2("sed -i 's/pkgver=.*/pkgver=%s/g' res/PKGBUILD" % version)

0 commit comments

Comments
 (0)