fix(uwp): replace ArgumentNullException.ThrowIfNull with explicit nul… #7
Workflow file for this run
This file contains hidden or 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: Release & Publish NuGet | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Setup NuGet | |
| uses: nuget/setup-nuget@v2 | |
| - name: Find MSBuild & VS paths | |
| id: vs | |
| shell: pwsh | |
| run: | | |
| $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" | |
| $vsPath = & $vswhere -latest -requires Microsoft.Component.MSBuild -property installationPath | |
| $msbuild = & $vswhere -latest -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" | Select-Object -First 1 | |
| Write-Host "VS Installation: $vsPath" | |
| Write-Host "MSBuild: $msbuild" | |
| "MSBUILD=$msbuild" >> $env:GITHUB_OUTPUT | |
| "VS_PATH=$vsPath" >> $env:GITHUB_OUTPUT | |
| - name: Extract version from tag | |
| id: version | |
| shell: pwsh | |
| run: | | |
| $tag = "${{ github.ref_name }}" | |
| $ver = $tag -replace '^v', '' | |
| "VERSION=$ver" >> $env:GITHUB_OUTPUT | |
| - name: Restore & Build UWP library | |
| shell: pwsh | |
| run: | | |
| nuget restore src/Combobulate/Combobulate.csproj | |
| & "${{ steps.vs.outputs.MSBUILD }}" src/Combobulate/Combobulate.csproj ` | |
| /t:Build /p:Configuration=Release /p:Platform=AnyCPU | |
| - name: Resolve AppxMSBuildToolsPath | |
| id: appx | |
| shell: pwsh | |
| run: | | |
| # dotnet build has .NET 10 but not VS's PRI task DLLs. We just need AppxMSBuildToolsPath. | |
| # Override AppxMSBuildToolsPath to point directly to VS's copy. | |
| $vsPath = "${{ steps.vs.outputs.VS_PATH }}" | |
| $msbuildDir = "$vsPath\MSBuild" | |
| $vsVerDir = Get-ChildItem "$msbuildDir\Microsoft\VisualStudio" -Directory -Filter "v*" | Select-Object -First 1 | |
| $appxPath = "$($vsVerDir.FullName)\AppxPackage" | |
| Write-Host "AppxMSBuildToolsPath: $appxPath" | |
| Write-Host "PRI DLL exists: $(Test-Path "$appxPath\Microsoft.Build.Packaging.Pri.Tasks.dll")" | |
| "APPX_PATH=$appxPath" >> $env:GITHUB_OUTPUT | |
| - name: Restore & Build WinAppSdk library (x64) | |
| shell: pwsh | |
| run: | | |
| dotnet restore src/Combobulate.WinAppSdk/Combobulate.WinAppSdk.csproj -p:Platform=x64 | |
| dotnet build src/Combobulate.WinAppSdk/Combobulate.WinAppSdk.csproj ` | |
| -c Release ` | |
| --no-restore ` | |
| -p:Platform=x64 ` | |
| "-p:AppxMSBuildToolsPath=${{ steps.appx.outputs.APPX_PATH }}\" | |
| - name: Restore & Build WinAppSdk library (ARM64) | |
| shell: pwsh | |
| run: | | |
| dotnet restore src/Combobulate.WinAppSdk/Combobulate.WinAppSdk.csproj -p:Platform=ARM64 | |
| dotnet build src/Combobulate.WinAppSdk/Combobulate.WinAppSdk.csproj ` | |
| -c Release ` | |
| --no-restore ` | |
| -p:Platform=ARM64 ` | |
| "-p:AppxMSBuildToolsPath=${{ steps.appx.outputs.APPX_PATH }}\" | |
| - name: Pack NuGet | |
| shell: pwsh | |
| run: | | |
| nuget pack Combobulate.nuspec ` | |
| -Version ${{ steps.version.outputs.VERSION }} ` | |
| -OutputDirectory artifacts | |
| - name: Push to NuGet.org | |
| id: nuget_push | |
| shell: pwsh | |
| env: | |
| NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
| run: | | |
| if ([string]::IsNullOrWhiteSpace($env:NUGET_API_KEY)) { | |
| Write-Host "::warning::NUGET_API_KEY repository secret is not set; skipping NuGet push. The GitHub Release will still be created with the .nupkg attached." | |
| exit 0 | |
| } | |
| $hadFailure = $false | |
| Get-ChildItem artifacts\*.nupkg | ForEach-Object { | |
| Write-Host "Pushing $($_.Name)…" | |
| dotnet nuget push $_.FullName ` | |
| --api-key $env:NUGET_API_KEY ` | |
| --source https://api.nuget.org/v3/index.json ` | |
| --skip-duplicate | |
| if ($LASTEXITCODE -ne 0) { | |
| Write-Host "::warning::dotnet nuget push exited with $LASTEXITCODE for $($_.Name)." | |
| $hadFailure = $true | |
| } | |
| } | |
| if ($hadFailure) { | |
| Write-Host "::warning::One or more packages failed to push to NuGet.org. The GitHub Release will still be created." | |
| } | |
| - name: Create GitHub Release | |
| if: always() | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| generate_release_notes: true | |
| files: artifacts/*.nupkg |