-
-
Notifications
You must be signed in to change notification settings - Fork 55
158 lines (131 loc) · 5.72 KB
/
windows_special.yml
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
name: Windows Non avx2, cuda, portable
on:
workflow_dispatch:
inputs:
skip-publish:
required: false
default: '0'
debug:
required: false
default: '0'
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
# Windows no AVX2
- platform: "windows-latest"
args: '--features="opencl"'
pre-build-args: "--older-cpu --opencl"
name: "older-cpu"
rust-version: "stable"
# Windows cuda 12.5.0
- platform: "windows-latest"
args: '--features="cuda"'
pre-build-args: "--cuda"
name: 'nvidia-12.5.0'
cuda-verison: '12.5.0'
rust-version: "stable"
# Windows cuda 11.8.0
- platform: "windows-latest"
args: '--features="cuda"'
pre-build-args: "--cuda"
name: 'nvidia-11.8.0'
cuda-verison: '11.8.0'
rust-version: "stable"
# Windows portable
- platform: "windows-latest" # Windows x86_64
args: '--features="opencl"'
pre-build-args: "--portable --opencl"
name: portable
rust-version: "stable"
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Setup CUDA Toolkit
if: contains(matrix.args, 'cuda')
id: cuda-toolkit
shell: pwsh
run: scripts/setup_cuda.ps1
env:
INPUT_CUDA_VERSION: ${{ matrix.cuda-verison }}
- name: setup Bun
uses: oven-sh/setup-bun@v1
- name: Rust cache
uses: swatinem/rust-cache@v2
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Install frontend dependencies
run: bun install
working-directory: ./desktop
# Run pre build
- name: Run pre_build.js
run: bun scripts/pre_build.js ${{ matrix.pre-build-args }}
- name: Build
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
BUILD_DEBUG: ${{ github.event.inputs.debug }}
with:
projectPath: "./desktop"
tauriScript: bunx tauri
args: ${{ matrix.args }}
- name: Prepare Portable zip
if: contains(matrix.name, 'portable')
run: |
# Get all EXE files in the specified directory
$exe_files = Get-ChildItem -Path "target\release\bundle\nsis\*.exe"
# Unzip each EXE file and zip the contents
foreach ($file in $exe_files) {
$name = $file.BaseName
$ext = "_portable.zip"
# Create a new directory for extraction in the same folder
$extract_dir = New-Item -ItemType Directory -Path "$($file.DirectoryName)\$name"
echo $extract_dir.FullName
try {
# Unzip the EXE file into the new directory
& 7z x $file.FullName -o"$extract_dir"
# Zip the contents into a new zip file
$zip_name = "{0}{1}" -f $name, $ext
& 7z a "$($file.DirectoryName)\$zip_name" "$extract_dir\*"
Write-Output "Zipped contents of '$($file.FullName)' to '$zip_name'"
} finally {
# Remove the extraction directory
Remove-Item -Recurse -Force $extract_dir
}
}
shell: pwsh
- name: Rename Installer
if: ${{ !contains(matrix.name, 'portable') }}
run: |
# Get the list of exe files in the directory
$exe_files = Get-ChildItem -Path "target\release\bundle\nsis\*.exe"
# Rename each exe file
foreach ($file in $exe_files) {
# Split the file name and extension
$name = $file.BaseName
$ext = $file.Extension
# New file name
$suffix = "${{ matrix.name }}"
$new_name = "{0}_{1}{2}" -f $name, $suffix, $ext
# Rename the file
Rename-Item -Path $file.FullName -NewName $new_name
Write-Output "Renamed '$($file.FullName)' to '$new_name'"
}
shell: pwsh
- name: Upload installer
if: github.event.inputs.skip-publish != '1'
run: |
$filePattern = '${{ matrix.name }}' -match 'portable' ? '*.zip' : '*.exe'
bun scripts/publish.js target/release/bundle/nsis/$filePattern
shell: pwsh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEBUG: ${{ github.event.inputs.debug }}