Skip to content

Publish NuGet Package #3

Publish NuGet Package

Publish NuGet Package #3

Workflow file for this run

name: Publish NuGet Package
permissions:
contents: write
packages: write
on:
release:
types: [published, prereleased]
workflow_dispatch:
inputs:
release_type:
description: 'Type of release event to simulate (e.g., published)'
required: true
default: 'published'
version:
description: 'Version to use for the package'
required: true
default: '0.0.9'
jobs:
publish:
runs-on: windows-latest
env:
RELEASE_TYPE: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release_type || github.event.release.prerelease && 'prereleased' || 'published' }}
VERSION: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || github.event.release.tag_name }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Determine configuration
run: |
if ($env:RELEASE_TYPE -eq "prereleased") {
Write-Output "Configuration=Debug" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Output "PackageVersion=${env:VERSION}-beta" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
} else {
Write-Output "Configuration=Release" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Output "PackageVersion=${env:VERSION}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
}
- name: Build project
run: dotnet build --no-restore -c ${{ env.Configuration }}
- name: Pack the NuGet package
run: dotnet pack --no-build -c ${{ env.Configuration }} -o nupkgs /p:Version=${{ env.PackageVersion }}
- name: Publish to NuGet.org
run: dotnet nuget push "nupkgs/*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
- name: Push to GitHub Packages
run: dotnet nuget push "nupkgs/*.nupkg" --api-key ${{ secrets.GITHUB_TOKEN }} --source nuget.pkg.github.com/${{ github.repository_owner }}/index.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}