Skip to content

Commit df23244

Browse files
authored
GH actions for build and nuget release (#119)
* build and publish when tag created
1 parent 000606b commit df23244

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

.github/workflows/buildandpublish.yml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Publish to NuGet
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*.*.*'
7+
- 'v*.*.*-*' # Trigger on tags matching vX.Y.Z or vX.Y.Z-prerelease
8+
9+
jobs:
10+
build:
11+
name: Build and Test
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Setup .NET SDK
19+
uses: actions/setup-dotnet@v4
20+
with:
21+
dotnet-version: '8.0.x'
22+
23+
- name: Restore dependencies
24+
run: dotnet restore
25+
26+
- name: Build
27+
run: dotnet build --configuration Release
28+
29+
# - name: Test
30+
# run: dotnet test --configuration Release --no-build --verbosity normal
31+
32+
pack:
33+
name: Pack
34+
needs: build
35+
runs-on: ubuntu-latest
36+
37+
steps:
38+
- name: Checkout code
39+
uses: actions/checkout@v4
40+
41+
- name: Setup .NET SDK
42+
uses: actions/setup-dotnet@v4
43+
with:
44+
dotnet-version: '8.0.x' # Ensure this matches the build job
45+
46+
- name: Restore dependencies
47+
run: dotnet restore
48+
49+
- name: Build
50+
run: dotnet build --configuration Release
51+
52+
- name: Determine version
53+
id: version
54+
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
55+
56+
- name: Pack
57+
run: dotnet pack --configuration Release --output . --include-symbols /p:Version=${{ steps.version.outputs.VERSION }}
58+
59+
- name: Upload NuGet package artifact
60+
uses: actions/upload-artifact@v4
61+
with:
62+
name: nuget-package
63+
path: '*.nupkg'
64+
65+
publish:
66+
name: Publish to NuGet.org
67+
needs: pack
68+
runs-on: ubuntu-latest
69+
permissions:
70+
packages: write
71+
steps:
72+
- name: Download NuGet package artifact
73+
uses: actions/download-artifact@v4
74+
with:
75+
name: nuget-package
76+
path: .
77+
78+
- name: Determine if prerelease
79+
id: prerelease
80+
run: |
81+
VERSION="${GITHUB_REF#refs/tags/}"
82+
if [[ "$VERSION" == *"-"* ]]; then
83+
echo "IS_PRERELEASE=true" >> $GITHUB_OUTPUT
84+
else
85+
echo "IS_PRERELEASE=false" >> $GITHUB_OUTPUT
86+
fi
87+
88+
- name: Publish to NuGet.org
89+
if: steps.prerelease.outputs.IS_PRERELEASE == 'true'
90+
run: dotnet nuget push "*.nupkg" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --prerelease
91+
92+
- name: Publish release to NuGet.org
93+
if: steps.prerelease.outputs.IS_PRERELEASE == 'false'
94+
run: dotnet nuget push "*.nupkg" --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }}

0 commit comments

Comments
 (0)