Update README.md #22
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 | |
name: publish | |
on: | |
workflow_dispatch: # Allow running the workflow manually from the GitHub UI | |
push: | |
branches: | |
- 'main' # Run the workflow when pushing to the main branch | |
pull_request: | |
branches: | |
- '*' # Run the workflow for all pull requests | |
release: | |
types: | |
- published # Run the workflow when a new GitHub release is published | |
env: | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
DOTNET_NOLOGO: true | |
NuGetDirectory: ${{ github.workspace }}/nuget | |
defaults: | |
run: | |
shell: pwsh | |
jobs: | |
pack_nuget: | |
runs-on: ubuntu-latest | |
# Checkout the source code | |
steps: | |
- name: "Checkout source" | |
uses: actions/checkout@v3 | |
# Install the .NET SDK indicated in the global.json file | |
- name: Setup .NET SDK with global.json | |
uses: actions/setup-dotnet@v3 | |
with: | |
global-json-file: global.json | |
# Create the NuGet packages in the folder from the environment variable NuGetDirectory | |
- name: dotnet pack Sagara.Core | |
run: dotnet pack ./src/Sagara.Core/Sagara.Core.csproj --configuration Release --output ${{ env.NuGetDirectory }} | |
- name: dotnet pack Sagara.Core.Caching | |
run: dotnet pack ./src/Sagara.Core.Caching/Sagara.Core.Caching.csproj --configuration Release --output ${{ env.NuGetDirectory }} | |
- name: dotnet pack Sagara.Core.Logging.Serilog | |
run: dotnet pack ./src/Sagara.Core.Logging.Serilog/Sagara.Core.Logging.Serilog.csproj --configuration Release --output ${{ env.NuGetDirectory }} | |
# Upload .nupkg files as an artifact, so they can be used in the following jobs | |
- name: Upload NuGet packages as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nuget | |
if-no-files-found: error | |
retention-days: 7 | |
path: ${{ env.NuGetDirectory }}/* | |
# Upload global.json as an artifact so that we don't have to check out the whole repo to publish to nuget. | |
- name: Upload global.json as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: globaljson | |
if-no-files-found: error | |
retention-days: 7 | |
path: ${{ github.workspace }}/global.json | |
run_test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Checkout source" | |
uses: actions/checkout@v3 | |
# Install the .NET SDK indicated in the global.json file | |
- name: Setup .NET SDK with global.json | |
uses: actions/setup-dotnet@v3 | |
with: | |
global-json-file: global.json | |
- name: Run tests | |
run: dotnet test --configuration Release | |
deploy_packages: | |
# 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: [ pack_nuget, run_test ] | |
steps: | |
# Download the NuGet package created in the pack job | |
- name: Download NuGet package artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: nuget | |
path: ${{ env.NuGetDirectory }} | |
# Download the global.json file uploaded in the pack job | |
- name: Download NuGet package artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: globaljson | |
path: ${{ github.workspace }} | |
# Install the .NET SDK indicated in the global.json file | |
- name: Setup .NET SDK with global.json | |
uses: actions/setup-dotnet@v3 | |
with: | |
global-json-file: global.json | |
# Install NuGet. Needed to push the .snupkg file. dotnet nuget apparently can't do this. | |
# - name: Setup NuGet | |
# uses: NuGet/setup-nuget@v1 | |
# Publish all NuGet .nupkg files to NuGet. | |
# 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. | |
- name: Publish package (.nupkg) files | |
run: | | |
foreach ($file in (Get-ChildItem "${{ env.NuGetDirectory }}" -Recurse -Include *.nupkg)) { | |
$file | |
dotnet nuget push $file --api-key "${{ secrets.NUGET_API_KEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate | |
} | |
# Publish all NuGet .snupkg symbol files to NuGet. | |
# - name: Publish symbol (.snupkg) files | |
# run: | | |
# foreach ($file in (Get-ChildItem "${{ env.NuGetDirectory }}" -Recurse -Include *.snupkg)) { | |
# nuget push $file -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{ secrets.NUGET_API_KEY }} | |
# } | |