Update publish-nuget.yml #8
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
name: Publish .NET Template | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup .NET SDK | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
- name: Restore dependencies | |
run: dotnet restore src/template/Aspnext.Template/Aspnext.Template.csproj | |
- name: Build the project | |
run: dotnet build src/template/Aspnext.Template/Aspnext.Template.csproj --no-restore --configuration Release | |
- name: Pack the project | |
run: dotnet pack src/template/Aspnext.Template/Aspnext.Template.csproj --no-build --configuration Release --output ./nupkg | |
- name: Publish to NuGet | |
env: | |
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
run: dotnet nuget push "./nupkg/*.nupkg" --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate | |
- name: Publish to GitHub Packages | |
env: | |
NUGET_GH_API_KEY: ${{ secrets.GITHUB_TOKEN }} | |
run: dotnet nuget push "./nupkg/*.nupkg" --api-key $NUGET_GH_API_KEY --source https://nuget.pkg.github.com/${{ github.repository }}/index.json --skip-duplicate | |
- name: Determine NuGet Package Name | |
id: get_nupkg_name | |
run: echo "PACKAGE_NAME=$(basename ./nupkg/*.nupkg)" >> $GITHUB_ENV | |
- name: Create or Update GitHub Release | |
id: create_update_release | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { context, github } = require('@actions/github'); | |
const tagName = context.ref.replace('refs/heads/', 'v'); | |
const releaseName = `Release ${tagName}`; | |
const releaseBody = 'Release description from merge request.'; | |
async function createOrUpdateRelease() { | |
try { | |
const release = await github.rest.repos.getReleaseByTag({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: tagName | |
}); | |
const updatedRelease = await github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: release.data.id, | |
tag_name: tagName, | |
name: releaseName, | |
body: releaseBody, | |
draft: false, | |
prerelease: false | |
}); | |
return updatedRelease.data.upload_url; | |
} catch (error) { | |
if (error.status === 404) { | |
const newRelease = await github.rest.repos.createRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag_name: tagName, | |
name: releaseName, | |
body: releaseBody, | |
draft: false, | |
prerelease: false | |
}); | |
return newRelease.data.upload_url; | |
} else { | |
throw error; | |
} | |
} | |
} | |
return createOrUpdateRelease(); | |
result-encoding: string | |
result: upload_url | |
- name: Upload NuGet Package to GitHub Release | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ steps.create_update_release.outputs.upload_url }} | |
asset_path: ./nupkg/*.nupkg | |
asset_name: ${{ env.PACKAGE_NAME }} | |
asset_content_type: application/octet-stream |