Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
package

GitHub Action

Publish NuGet

v2.2.0

Publish NuGet

package

Publish NuGet

Build, Pack & Publish a NuGet package with dotnet core on project version change

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Publish NuGet

uses: brandedoutcast/[email protected]

Learn more about this action in brandedoutcast/publish-nuget

Choose a version

✨ Publish NuGet

GitHub action to build, pack & publish nuget packages automatically when a project version is updated

Usage

Create new .github/workflows/publish.yml file:

name: publish to nuget
on:
  push:
    branches:
      - master # Default release branch
jobs:
  publish:
    name: list on nuget
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      # Required for a specific dotnet version that doesn't come with ubuntu-latest / windows-latest
      # Visit bit.ly/2synnZl to see the list of SDKs that are pre-installed with ubuntu-latest / windows-latest
      # - name: Setup dotnet
      #   uses: actions/setup-dotnet@v1
      #   with:
      #     dotnet-version: 3.1.100
      
      # Publish
      - name: publish on version change
        uses: rohith/publish-nuget@v2
        with:
          PROJECT_FILE_PATH: Core/Core.csproj # Relative to repository root
          # VERSION_FILE_PATH: Directory.Build.props # Filepath with version info, relative to repository root. Defaults to project file
          # VERSION_REGEX: <Version>(.*)<\/Version> # Regex pattern to extract version info in a capturing group
          # VERSION_STATIC: Bypasses version resolution; useful for external providers like Nerdbank.GitVersioning
          # TAG_COMMIT: true # Flag to enable / disalge git tagging
          # TAG_FORMAT: v* # Format of the git tag, [*] gets replaced with version
          # NUGET_KEY: ${{secrets.NUGET_API_KEY}} # nuget.org API key
          # PACKAGE_NAME: NuGet package name, required when it's different from project name. Defaults to project name
  • With all settings on default, updates to project version are monitored on every push / PR merge to master & a new tag is created
  • If a NUGET_KEY is present then the project gets built, packed & published to nuget.org

Inputs

Most of the inputs are optional

Input Default Value Description
PROJECT_FILE_PATH File path of the project to be packaged, relative to repository root
VERSION_FILE_PATH [PROJECT_FILE_PATH] File path containing version info, relative to repository root
VERSION_REGEX <Version>(.*)<\/Version> Regex pattern to extract version info in a capturing group
VERSION_STATIC Bypasses version resolution; useful for external providers like Nerdbank.GitVersioning
TAG_COMMIT true Flag to enable / disable git tagging
TAG_FORMAT v* [*] is a placeholder for the actual project version
NUGET_KEY API key to authorize the package upload to nuget.org
PACKAGE_NAME Name of the NuGet package, required when it's different from project name

Note:
For multiple projects, every input except PROJECT_FILE_PATH can be given as env variable at job / workflow level

License

MIT