fix: upload nuget package #42
Workflow file for this run
This file contains 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
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
# https://github.com/rhysd/actionlint | |
name: Publish-Nuget | |
on: | |
push: | |
tags: | |
- v* # for publish package after each release to nuget | |
branches: | |
- main # for publish package and each commit to github | |
env: | |
FEED_SOURCE: https://api.nuget.org/v3/index.json | |
GHC_SOURCE: ${{ vars.GHC_SOURCE }} | |
FEED_API_KEY: ${{ secrets.FEED_API_KEY }} | |
GHC_API_KEY: ${{ secrets.GHC_TOKEN }} | |
NuGetDirectory: ${{ github.workspace}}/nuget | |
jobs: | |
# https://www.meziantou.net/publishing-a-nuget-package-following-best-practices-using-github.htm | |
create-nuget: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# https://github.com/dotnet/Nerdbank.GitVersioning/blob/main/doc/cloudbuild.md#github-actions | |
fetch-depth: 0 # avoid shallow clone so nbgv can do its work. | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: "8.0.x" | |
- name: Cache NuGet Packages | |
uses: actions/cache@v3 | |
with: | |
key: vertical-template-nuget | |
path: ~/.nuget/packages | |
# https://github.com/joseftw/jos.enumeration/blob/main/.github/workflows/verify.yml | |
# https://github.com/dotnet/Nerdbank.GitVersioning | |
- uses: dotnet/[email protected] | |
id: nbgv | |
- name: Restore dependencies | |
run: dotnet restore Vertical.Slice.Template.sln | |
- name: Build Version ${{ steps.nbgv.outputs.SemVer2 }} | |
run: dotnet build Vertical.Slice.Template.sln -c Release --no-restore | |
# https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-pack | |
- name: Pack NuGet Package Version ${{ steps.nbgv.outputs.SemVer2 }} | |
run: dotnet pack vertical-slice-template.csproj -c Release -o ${{ env.NuGetDirectory }} | |
# Publish the NuGet package as an artifact, so they can be used in the following jobs | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: nuget | |
if-no-files-found: error | |
retention-days: 7 | |
path: ${{ env.NuGetDirectory }}/*.nupkg | |
deploy-nuget: | |
runs-on: ubuntu-latest | |
# Publish only when creating a GitHub Release | |
# https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository | |
# You can update this logic if you want to manage releases differently | |
needs: [create-nuget] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# https://github.com/dotnet/Nerdbank.GitVersioning/blob/main/doc/cloudbuild.md#github-actions | |
fetch-depth: 0 # avoid shallow clone so nbgv can do its work. | |
# Download the NuGet package created in the previous job | |
# .nupkg should be in the same folder that we have `.template.config`, so we should put it in the root of source directory | |
- uses: actions/download-artifact@v4 | |
with: | |
name: nuget | |
## Optional. Default is $GITHUB_WORKSPACE | |
path: ${{ github.workspace}} | |
# Install the .NET SDK indicated in the global.json file | |
- name: Setup .NET Core | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: "8.0.x" | |
# https://github.com/joseftw/jos.enumeration/blob/main/.github/workflows/verify.yml | |
# https://github.com/dotnet/Nerdbank.GitVersioning | |
- uses: dotnet/[email protected] | |
id: nbgv | |
# for publish package to github for each commit | |
- name: Publish NuGet Package Version ${{ steps.nbgv.outputs.SemVer2 }} to GitHub | |
run: dotnet nuget push *.nupkg --skip-duplicate --api-key ${{ env.GHC_API_KEY }} --source ${{ env.GHC_SOURCE }} | |
if: github.event_name == 'push' && (startswith(github.ref, 'refs/heads') || startswith(github.ref, 'refs/tags')) | |
# Publish all NuGet packages to NuGet.org | |
# Use --skip-duplicate to prevent errors if a package with the same version already exists. | |
# If you retry a failed workflow, already published packages will be skipped without error. | |
# https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-push | |
- name: Publish NuGet Package Version ${{ steps.nbgv.outputs.SemVer2 }} to Nuget | |
run: dotnet nuget push *.nupkg --skip-duplicate --source ${{ env.FEED_SOURCE }} --api-key ${{ env.FEED_API_KEY }} | |
if: github.event_name == 'push' && startswith(github.ref, 'refs/tags') |