Skip to content
📦 GitHub action to automate publishing NuGet packages when project version changes
Use this GitHub Action with your project

Add this Action to an existing workflow or create a new one.

View on Marketplace
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE update license year Jan 11, 2020
index.js add better support & control for versions & tags Jan 27, 2020

Publish NuGet

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


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

name: publish to nuget
      - master # Your default release branch
    name: list on nuget
    runs-on: ubuntu-latest
      - uses: actions/checkout@v2

      # Required for a specific dotnet version that doesn't come with ubuntu-latest / windows-latest
      # Visit 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
          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
          # 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}} # API key
  • 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


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
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

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



You can’t perform that action at this time.