add release automation - first attempt #20
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
# This workflow will build a .NET project | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net | |
name: .NET | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
DOTNET_CLI_TELEMETRY_OPTOUT: true | |
DOTNET_GENERATE_ASPNET_CERTIFICATE: false | |
jobs: | |
build: | |
runs-on: macos-latest | |
name: .NET ${{ matrix.dotnet }} | |
strategy: | |
matrix: | |
dotnet: | |
- 8 # EOL: 2026-11-10 | |
- 7 # EOL: 2024-05-14 | |
- 6 # EOL: 2024-11-12 | |
# version support doc: https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: getargv/getargv | |
path: getargv | |
token: ${{ secrets.GH_PAT }} | |
- name: Build libgetargv | |
run: make install_dylib | |
working-directory: getargv | |
- uses: actions/checkout@v4 | |
with: | |
path: getargv.cs | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
id: setup | |
with: | |
dotnet-version: ${{ matrix.dotnet }}.0.x | |
- name: Create temporary global.json | |
run: "echo '{\"sdk\":{\"version\": \"${{ steps.setup.outputs.dotnet-version }}\"}}' > ./global.json" | |
working-directory: getargv.cs | |
- name: Restore dependencies | |
run: dotnet restore -p:TargetFramework=net${{ matrix.dotnet }}.0 | |
working-directory: getargv.cs | |
- name: Build | |
run: dotnet build --no-restore --framework net${{ matrix.dotnet }}.0 | |
working-directory: getargv.cs | |
- name: Test | |
run: dotnet test --no-build --verbosity normal --framework net${{ matrix.dotnet }}.0 | |
working-directory: getargv.cs | |
release: | |
runs-on: macos-latest | |
needs: [ build ] | |
name: Publish package | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: getargv/getargv | |
path: getargv | |
token: ${{ secrets.GH_PAT }} | |
- name: Build libgetargv | |
run: make install_dylib | |
working-directory: getargv | |
- uses: actions/checkout@v4 | |
with: | |
path: getargv.cs | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
id: setup | |
with: | |
dotnet-version: 8 | |
- name: Create temporary global.json | |
run: "echo '{\"sdk\":{\"version\": \"${{ steps.setup.outputs.dotnet-version }}\"}}' > ./global.json" | |
working-directory: getargv.cs | |
- run: dotnet build | |
working-directory: getargv.cs | |
- name: Create the package | |
run: dotnet pack --configuration Release Getargv | |
working-directory: getargv.cs | |
- name: Publish the package to GPR | |
run: dotnet nuget push Getargv/bin/Release/*.nupkg -k $NUGET_AUTH_TOKEN -s https://nuget.pkg.github.com/getargv/index.json | |
working-directory: getargv.cs | |
env: | |
NUGET_AUTH_TOKEN: ${{github.token}} | |
- name: Publish the package to nuget.org | |
run: dotnet nuget push Getargv/bin/Release/*.nupkg -k $NUGET_AUTH_TOKEN -s https://api.nuget.org/v3/index.json | |
working-directory: getargv.cs | |
env: | |
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_TOKEN }} |