From cf7ead5f56e726999d55f66d9c65083e59443d59 Mon Sep 17 00:00:00 2001 From: ergosteur <1992147+ergosteur@users.noreply.github.com> Date: Mon, 16 Mar 2026 12:38:53 -0400 Subject: [PATCH] Modify build workflow for tagging and release Updated workflow to trigger on version tags and added permissions for release creation. --- .github/workflows/build.yml | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 720eb13..02a69aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,14 +1,16 @@ -# .github/workflows/build.yml -name: Build Windows Executable +name: Build and Release on: push: - branches: [ "main" ] # Runs whenever you push to the main branch - workflow_dispatch: # Allows you to run this workflow manually from the Actions tab + tags: + - 'v*' # Triggers only on tags starting with 'v' (e.g., v1.0.0) + workflow_dispatch: # Allows manual runs from the Actions tab jobs: build: - runs-on: windows-latest # Use a Windows runner for the build + runs-on: windows-latest + permissions: + contents: write # Essential for creating the release and uploading assets steps: - name: Checkout repository @@ -17,19 +19,31 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 8.0.x # Use a recent .NET version + dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore - name: Build and publish self-contained executable - run: > # This command builds a single .exe with the runtime included + run: > dotnet publish --configuration Release --runtime win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true - - name: Upload artifact - uses: actions/upload-artifact@v4 + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') # Only runs if the trigger was a tag with: - name: SshHandler-Windows-Executable # The name of the downloadable file - path: ${{ github.workspace }}/SshHandler/bin/Release/net8.0-windows/win-x64/publish/SshHandler.exe # Adjust the path if your project name is different + files: ${{ github.workspace }}/SshHandler/bin/Release/net8.0-windows/win-x64/publish/SshHandler.exe + generate_release_notes: true + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload artifact (Manual Run fallback) + uses: actions/upload-artifact@v4 + if: always() # Still uploads the artifact even if it wasn't a tag run + with: + name: SshHandler-Windows-Executable + path: ${{ github.workspace }}/SshHandler/bin/Release/net8.0-windows/win-x64/publish/SshHandler.exe