GithubHelp home page GithubHelp logo

socolin / publish-nuget Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brandedoutcast/publish-nuget

0.0 1.0 0.0 32 KB

๐Ÿ“ฆ GitHub action to automate publishing NuGet packages when project version changes

Home Page: https://github.com/marketplace/actions/publish-nuget

License: MIT License

JavaScript 100.00%

publish-nuget's Introduction

โœจ 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: build, pack & publish
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      # - name: Setup dotnet
      #   uses: actions/setup-dotnet@v1
      #   with:
      #     dotnet-version: 6.0.0

      # Publish
      - name: publish on version change
        id: publish_nuget
        uses: alirezanet/[email protected]
        with:
          # Filepath of the project to be packaged, relative to root of repository
          PROJECT_FILE_PATH: Core/Core.csproj
          
          # NuGet package id, used for version detection & defaults to project name
          # PACKAGE_NAME: Core
          
          # Filepath with version info, relative to root of repository & defaults to PROJECT_FILE_PATH
          # VERSION_FILE_PATH: Directory.Build.props

          # Regex pattern to extract version info in a capturing group
          # VERSION_REGEX: ^\s*<Version>(.*)<\/Version>\s*$
          
          # Useful with external providers like Nerdbank.GitVersioning, ignores VERSION_FILE_PATH & VERSION_REGEX
          # VERSION_STATIC: 1.0.0

          # Flag to toggle git tagging, enabled by default
          # TAG_COMMIT: true

          # Format of the git tag, [*] gets replaced with actual version
          # TAG_FORMAT: v*

          # API key to authenticate with NuGet server
          # NUGET_KEY: ${{secrets.NUGET_API_KEY}}

          # NuGet server uri hosting the packages, defaults to https://api.nuget.org
          # NUGET_SOURCE: https://api.nuget.org

          # Flag to toggle pushing symbols along with nuget package to the server, disabled by default
          # INCLUDE_SYMBOLS: false

          # Flag to toggle not building the project and letting pack command handle restoring & building, disabled by default
          # NO_BUILD: false
  • Project gets published only if there's a NUGET_KEY configured in the repository

Inputs

Input Default Value Description
PROJECT_FILE_PATH Filepath of the project to be packaged, relative to root of repository
PACKAGE_NAME NuGet package id, used for version detection & defaults to project name
VERSION_FILE_PATH [PROJECT_FILE_PATH] Filepath with version info, relative to root of repository & defaults to PROJECT_FILE_PATH
VERSION_REGEX ^\s*<Version>(.*)<\/Version>\s*$ Regex pattern to extract version info in a capturing group
VERSION_STATIC Useful with external providers like Nerdbank.GitVersioning, ignores VERSION_FILE_PATH & VERSION_REGEX
TAG_COMMIT true Flag to toggle git tagging, enabled by default
TAG_FORMAT v* Format of the git tag, [*] gets replaced with actual version
NUGET_KEY API key to authenticate with NuGet server
NUGET_SOURCE https://api.nuget.org NuGet server uri hosting the packages, defaults to https://api.nuget.org
INCLUDE_SYMBOLS false Flag to toggle pushing symbols along with nuget package to the server, disabled by default
NO_BUILD false Flag to toggle not building the project and letting pack command handle restoring & building, disabled by default

Outputs

Output Description
VERSION Version of the associated git tag
PACKAGE_NAME Name of the NuGet package generated
PACKAGE_PATH Path to the generated NuGet package
SYMBOLS_PACKAGE_NAME Name of the symbols package generated
SYMBOLS_PACKAGE_PATH Path to the generated symbols package

FYI:

  • Outputs may or may not be set depending on the action inputs or if the action failed
  • NUGET_SOURCE must support /v3-flatcontainer/PACKAGE_NAME/index.json for version change detection to work
  • Multiple projects can make use of steps to configure each project individually, common inputs between steps can be given as env for job / workflow

License

MIT

publish-nuget's People

Contributors

alirezanet avatar brandedoutcast avatar cuzzlor avatar deadpikle avatar kurounin avatar luhis avatar waldosax avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.