[Single] Build Windows NSIS #12
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "[Single] Build Windows NSIS" | |
on: | |
workflow_dispatch: | |
inputs: | |
portable: | |
description: "Build Portable pkg" | |
required: true | |
type: boolean | |
default: false | |
nightly: | |
description: "Nightly prepare" | |
required: true | |
type: boolean | |
default: false | |
tag: | |
description: "Release Tag" | |
required: true | |
type: string | |
arch: | |
type: choice | |
description: "build arch target" | |
required: true | |
default: "x86_64" | |
options: | |
- x86_64 | |
- i686 | |
# - aarch64 | |
workflow_call: | |
inputs: | |
portable: | |
description: "Build Portable pkg" | |
required: true | |
type: boolean | |
default: false | |
nightly: | |
description: "Nightly prepare" | |
required: true | |
type: boolean | |
default: false | |
tag: | |
description: "Release Tag" | |
required: true | |
type: string | |
arch: | |
type: string | |
description: "build arch target" | |
required: true | |
default: "x86_64" | |
jobs: | |
build: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install Rust stable | |
run: | | |
rustup install stable --profile minimal --no-self-update | |
rustup default stable | |
- name: Setup Rust target | |
if: ${{ inputs.arch != 'x86_64' }} | |
run: | | |
rustup target add ${{ inputs.arch }}-pc-windows-msvc | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: "./backend/" | |
prefix-key: "rust-stable" | |
key: windows-latest | |
shared-key: "release" | |
- name: Install Node latest | |
uses: actions/setup-node@v4 | |
with: | |
node-version: latest | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
with: | |
run_install: false | |
- name: Install Node.js dependencies | |
run: | | |
pnpm i | |
- name: Prepare sidecars and resources | |
run: | | |
$condition = '${{ inputs.arch }}' | |
switch ($condition) { | |
'x86_64' { | |
pnpm check | |
} | |
'i686' { | |
pnpm check --arch ia32 --sidecar-host i686-pc-windows-msvc | |
} | |
} | |
- name: Prepare (Windows NSIS and Portable) | |
run: ${{ inputs.nightly == true && 'pnpm prepare:nightly --nsis' || 'pnpm prepare:release --nsis' }} | |
- name: Build UI | |
run: | | |
pnpm -F ui build | |
# TODO: optimize strategy | |
- name: Tauri build x86_64 | |
uses: tauri-apps/tauri-action@v0 | |
if: ${{ inputs.arch == 'x86_64' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
NIGHTLY: ${{ inputs.nightly == true && 'true' || 'false' }} | |
with: | |
tagName: ${{ inputs.tag }} | |
releaseName: "Clash Nyanpasu Dev" | |
releaseBody: "More new features are now supported." | |
releaseDraft: false | |
prerelease: true | |
tauriScript: pnpm tauri | |
args: ${{ inputs.nightly == true && '-f nightly -c ./backend/tauri/tauri.nightly.conf.json' || '-f default-meta' }} | |
- name: Tauri build i686 | |
uses: tauri-apps/tauri-action@v0 | |
if: ${{ inputs.arch != 'x86_64' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
NIGHTLY: ${{ inputs.nightly == true && 'true' || 'false' }} | |
with: | |
tagName: ${{ inputs.tag }} | |
releaseName: "Clash Nyanpasu Dev" | |
releaseBody: "More new features are now supported." | |
releaseDraft: false | |
prerelease: true | |
tauriScript: pnpm tauri | |
args: ${{ inputs.nightly == true && '-f nightly -c ./backend/tauri/tauri.nightly.conf.json --target i686-pc-windows-msvc' || '-f default-meta --target i686-pc-windows-msvc' }} | |
- name: Portable Bundle | |
if: ${{ inputs.portable == true }} | |
run: | | |
pnpm portable | |
env: | |
TAG_NAME: ${{ inputs.tag }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
NIGHTLY: ${{ inputs.nightly == true && 'true' || 'false' }} | |
VITE_WIN_PORTABLE: 1 |