diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml new file mode 100644 index 0000000..4f67ca5 --- /dev/null +++ b/.github/workflows/dotnet-desktop.yml @@ -0,0 +1,103 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# This workflow will build, test, sign and package a WPF or Windows Forms desktop application +# built on .NET Core. +# To learn how to migrate your existing application to .NET Core, +# refer to https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework +# +# To configure this workflow: +# +# 1. Configure environment variables +# GitHub sets default environment variables for every workflow run. +# Replace the variables relative to your project in the "env" section below. +# +# 2. Signing +# Generate a signing certificate in the Windows Application +# Packaging Project or add an existing signing certificate to the project. +# Next, use PowerShell to encode the .pfx file using Base64 encoding +# by running the following Powershell script to generate the output string: +# +# $pfx_cert = Get-Content '.\SigningCertificate.pfx' -Encoding Byte +# [System.Convert]::ToBase64String($pfx_cert) | Out-File 'SigningCertificate_Encoded.txt' +# +# Open the output file, SigningCertificate_Encoded.txt, and copy the +# string inside. Then, add the string to the repo as a GitHub secret +# and name it "Base64_Encoded_Pfx." +# For more information on how to configure your signing certificate for +# this workflow, refer to https://github.com/microsoft/github-actions-for-desktop-apps#signing +# +# Finally, add the signing certificate password to the repo as a secret and name it "Pfx_Key". +# See "Build the Windows Application Packaging project" below to see how the secret is used. +# +# For more information on GitHub Actions, refer to https://github.com/features/actions +# For a complete CI/CD sample to get started with GitHub Action workflows for Desktop Applications, +# refer to https://github.com/microsoft/github-actions-for-desktop-apps + +name: .NET Core Desktop + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + + build: + + strategy: + matrix: + configuration: [Release] + + runs-on: windows-latest # For a list of available runner types, refer to + # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on + + env: + SOLUTION_PATH: PdfHelper.sln # Replace with your solution name, i.e. MyWpfApp.sln. + TEST_PROJECT_PATH: src/Tests/Tests.csproj # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj. + PACKAGE_PROJECT_PATH: src/PdfHelper/PdfHelper.csproj # Replace with the path to your Wap project, i.e. MyWpf.App.Package\MyWpfApp.Package.wapproj. + + steps: + - name: Checkout + uses: actions/checkout@v4 + + # Install the .NET Core workload + - name: Install .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + cache: true + cache-dependency-path: | + **/packages.lock.json + **/*.csproj + **/*.fsproj + **/*.vbproj + nuget.config + + - name: Dotnet info + run: dotnet --info + + - name: Restore + run: dotnet restore "${{ env.SOLUTION_PATH }}" --configfile "nuget.config" + + - name: Build + run: dotnet build "${{ env.SOLUTION_PATH }}" -c Release --no-restore + + - name: Test + run: dotnet test "${{ env.TEST_PROJECT_PATH }}" -c Release --no-build --verbosity normal + + - name: Pack + run: dotnet pack "${{ env.PACKAGE_PROJECT_PATH }}" -c Release --no-build -o "artifacts" + + - name: Upload NuGet package + uses: actions/upload-artifact@v4 + with: + name: nuget-package + path: | + artifacts/*.nupkg + artifacts/*.snupkg + if-no-files-found: error +