Skip to content

Commit 5fe8bc2

Browse files
authored
chore: consolidate release and publish into single multi-job workflow (#8)
* Initial plan * chore: consolidate release and publish into single multi-job workflow --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 2d75b52 commit 5fe8bc2

2 files changed

Lines changed: 59 additions & 66 deletions

File tree

.github/workflows/publish.yml

Lines changed: 0 additions & 61 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,69 @@ on:
44
push:
55
branches: [main]
66

7-
permissions:
8-
contents: write
9-
issues: write
10-
pull-requests: write
11-
127
jobs:
138
release-please:
149
runs-on: ubuntu-latest
10+
permissions:
11+
contents: write
12+
issues: write
13+
pull-requests: write
14+
outputs:
15+
release_created: ${{ steps.release.outputs['Dataverse.Extensions.DependencyInjection--release_created'] }}
16+
tag_name: ${{ steps.release.outputs['Dataverse.Extensions.DependencyInjection--tag_name'] }}
1517
steps:
1618
- uses: googleapis/release-please-action@v4
19+
id: release
1720
with:
1821
token: ${{ secrets.GITHUB_TOKEN }}
22+
23+
publish:
24+
needs: release-please
25+
if: needs.release-please.outputs.release_created == 'true'
26+
runs-on: ubuntu-latest
27+
permissions:
28+
contents: write
29+
id-token: write
30+
pull-requests: write
31+
steps:
32+
- uses: actions/checkout@v6
33+
34+
- name: Setup .NET
35+
uses: actions/setup-dotnet@v5
36+
with:
37+
dotnet-version: 10.x
38+
39+
- name: Restore dependencies
40+
run: dotnet restore Dataverse.Extensions.slnx
41+
42+
- name: Build
43+
run: dotnet build Dataverse.Extensions.slnx --configuration Release --no-restore
44+
45+
- name: Run tests
46+
run: dotnet test Dataverse.Extensions.slnx --configuration Release --no-build
47+
48+
- name: Pack NuGet package
49+
run: dotnet pack Dataverse.Extensions.DependencyInjection/Dataverse.Extensions.DependencyInjection.csproj --configuration Release --no-build --output ./artifacts
50+
51+
- name: NuGet login (OIDC → temp API key)
52+
uses: NuGet/login@v1
53+
id: login
54+
with:
55+
user: ${{ secrets.NUGET_USER }}
56+
57+
- name: Publish NuGet package
58+
run: dotnet nuget push ./artifacts/*.nupkg --api-key ${{ steps.login.outputs.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
59+
60+
- name: Upload NuGet package to GitHub Release
61+
env:
62+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
run: gh release upload "${{ needs.release-please.outputs.tag_name }}" ./artifacts/*.nupkg --clobber
64+
65+
- name: Label Release PR as published
66+
env:
67+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
68+
run: |
69+
PR_NUMBER=$(gh pr list --repo "${{ github.repository }}" --state merged --label "autorelease: tagged" --json number --jq '.[0].number')
70+
if [ -n "$PR_NUMBER" ]; then
71+
gh pr edit "$PR_NUMBER" --repo "${{ github.repository }}" --add-label "autorelease: published" --remove-label "autorelease: tagged"
72+
fi

0 commit comments

Comments
 (0)