Skip to content

Commit

Permalink
Added NuGet publication action
Browse files Browse the repository at this point in the history
  • Loading branch information
cuongph87 committed Jan 28, 2024
1 parent 19531a7 commit c199b43
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 2 deletions.
79 changes: 79 additions & 0 deletions .github/workflows/publish_nuget.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Publish to NuGet
on:
workflow_dispatch:
push:
branches:
- 'master'
release:
types:
- published
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
NuGetDirectory: ${{github.workspace}}
defaults:
run:
shell: pwsh
jobs:
create_nuget:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v4
- run: dotnet pack --configuration Release --output ${{env.NuGetDirectory}}
- uses: actions/upload-artifact@v3
with:
name: nuget
if-no-files-found: error
retention-days: 7
path: ${{env.NuGetDirectory}}/*.nupkg

validate_nuget:
runs-on: ubuntu-latest
needs: [create_nuget]
steps:
# Install the .NET SDK indicated in the global.json file
- name: Setup .NET
uses: actions/setup-dotnet@v4

# Download the NuGet package created in the previous job
- uses: actions/download-artifact@v3
with:
name: nuget
path: ${{env.NuGetDirectory}}

- name: Install nuget validator
run: dotnet tool update Meziantou.Framework.NuGetPackageValidation.Tool --global
- name: Validate package
run: meziantou.validate-nuget-package (Get-ChildItem "${{env.NuGetDirectory}}/*.nupkg")
run_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Run tests
run: dotnet test --configuration Release
deploy:
# 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
if: github.event_name == 'release'
runs-on: ubuntu-latest
needs: [validate_nuget, run_test]
steps:
# Download the NuGet package created in the previous job
- uses: actions/download-artifact@v3
with:
name: nuget
path: ${{env.NuGetDirectory}}

# Install the .NET SDK indicated in the global.json file
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
- name: Publish NuGet package
run: |
foreach($file in (Get-ChildItem "${{env.NuGetDirectory}}" -Recurse -Include *.nupkg)) {
dotnet nuget push $file --api-key "${{ secrets.NUGET_APIKEY}}" --source https://api.nuget.org/v3/index.json --skip-duplicate
}
9 changes: 7 additions & 2 deletions .github/workflows/release_mgmt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ on:
# branches to consider in the event; optional, defaults to all
branches:
- master

permissions:
contents: read

jobs:
update_draft_release:
permissions:
contents: write
pull-requests: write
runs-on: ubuntu-latest
steps:
# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: toolmantim/release-drafter@v5.2.0
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 comments on commit c199b43

Please sign in to comment.