mirror of
https://github.com/ergosteur/ssh-protocol-handler-win.git
synced 2026-10-28 16:10:36 -04:00
Replace .NET WinForms handler with the Rust build in CI; drop SshHandler
Remove the .NET/WinForms project (SshHandler/, SshHandler.sln) now that the Rust rewrite (SshHandlerRs/) covers the same behavior with a ~250KB binary and no CLR startup cost, and its Default-Apps-style registration is confirmed working. Rewire the release workflow to build ssh-handler.exe natively on windows-latest with the MSVC toolchain instead of dotnet publish, and package it alongside the .bat and .sh handlers as release assets (ssh-handler-rs-*.exe, openssh_protocol_handler-*.bat, ssh-handler-*.sh) when a v* tag is pushed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYCT2RpUjFfBfp6CD4rREw
This commit is contained in:
+11
-37
@@ -16,38 +16,14 @@ jobs:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure Git Line Endings
|
||||
run: git config --global core.autocrlf input
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
dotnet-version: 8.0.x
|
||||
targets: x86_64-pc-windows-msvc
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
|
||||
# 1. Build Framework-Dependent FIRST (The tiny one)
|
||||
- name: Build Framework-Dependent (Requires .NET 8)
|
||||
run: >
|
||||
dotnet publish SshHandler/SshHandler.csproj --configuration Release
|
||||
--self-contained false
|
||||
/p:PublishSingleFile=true
|
||||
-o ./publish-dotnet8
|
||||
|
||||
# 2. Clean to prevent artifact leakage
|
||||
- name: Clean intermediate files
|
||||
run: dotnet clean SshHandler/SshHandler.csproj
|
||||
|
||||
# 3. Build Standalone SECOND (The heavy one)
|
||||
- name: Build Standalone (Includes Runtime)
|
||||
run: >
|
||||
dotnet publish SshHandler/SshHandler.csproj --configuration Release
|
||||
--runtime win-x64
|
||||
--self-contained true
|
||||
/p:PublishSingleFile=true
|
||||
/p:IncludeNativeLibrariesForSelfExtract=true
|
||||
-o ./publish-standalone
|
||||
- name: Build ssh-handler (Rust)
|
||||
working-directory: SshHandlerRs
|
||||
run: cargo build --release --target x86_64-pc-windows-msvc
|
||||
|
||||
- name: Ensure Unix Line Endings for Shell Script
|
||||
shell: pwsh
|
||||
@@ -64,11 +40,10 @@ jobs:
|
||||
run: |
|
||||
$tag = "${{ github.ref_name }}"
|
||||
if (-not $tag -or $tag -eq "main") { $tag = "manual" }
|
||||
|
||||
# Rename Executables
|
||||
Move-Item ./publish-standalone/SshHandler.exe "./SshHandler-$tag-Standalone.exe"
|
||||
Move-Item ./publish-dotnet8/SshHandler.exe "./SshHandler-$tag-dotnet8.exe"
|
||||
|
||||
|
||||
# Rename Rust executable
|
||||
Move-Item SshHandlerRs/target/x86_64-pc-windows-msvc/release/ssh-handler.exe "./ssh-handler-rs-$tag.exe"
|
||||
|
||||
# Rename Scripts
|
||||
Copy-Item "ssh-handler.sh" "./ssh-handler-$tag.sh"
|
||||
Copy-Item "openssh_protocol_handler.bat" "./openssh_protocol_handler-$tag.bat"
|
||||
@@ -78,8 +53,7 @@ jobs:
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: |
|
||||
SshHandler-*-Standalone.exe
|
||||
SshHandler-*-dotnet8.exe
|
||||
ssh-handler-rs-*.exe
|
||||
ssh-handler-*.sh
|
||||
openssh_protocol_handler-*.bat
|
||||
generate_release_notes: true
|
||||
|
||||
Reference in New Issue
Block a user