Skip to content

Nuget Deployment

Nuget Deployment #32

# This action executes on every push to master (usually as a result of a PR)
# to ensure the code base that is actually in master passes all expectations
name: Nuget Deployment
on:
workflow_dispatch:
inputs:
version-number:
description: "Version Number (e.g. 1.2.3)"
required: true
type: string
version-suffix:
description: "Version Suffix (e.g. 'beta')"
required: false
type: string
env:
SLN_PATH: ./src/graphql-aspnet.sln
PRIMARY_LIB_PATH: ./src/graphql-aspnet/graphql-aspnet.csproj
SUBSCRIPTIONS_LIB_PATH: ./src/graphql-aspnet-subscriptions/graphql-aspnet-subscriptions.csproj
TEST_FRAMEWORK_LIB_PATH: ./src/unit-tests/graphql-aspnet-testframework/graphql-aspnet-testframework.csproj
BUILD_CONFIG: Release
OUTPUT_DIR: ./output
NUGET_KEY: ${{secrets.NUGET_KEY}}
jobs:
deployment:
name: Pack & Deploy
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v3
name: Checkout Code
# ---------------------------------------
# Install .NET Versions
# ---------------------------------------
- uses: actions/setup-dotnet@v2
name: Install .NET
with:
dotnet-version: |
8.x
9.x
# ---------------------------------------
# Configure the build environment
# ---------------------------------------
- name: Configure Build
run: ./build/configure-ci-build.ps1
shell: pwsh
# ---------------------------------------
# Restore and Build
# ---------------------------------------
- name: Nuget Restore
run: dotnet restore ${{env.SLN_PATH}}
- name: Build Solution
run: dotnet build ${{env.SLN_PATH}} --configuration ${{env.BUILD_CONFIG}} --no-restore --verbosity normal
# ---------------------------------------
# Preflight Checks and Packaging
# ---------------------------------------
- name: Pre-Package Inspection
run: |
./build/pre-package-checks.ps1 -csProjFile "${{env.PRIMARY_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}"
./build/pre-package-checks.ps1 -csProjFile "${{env.SUBSCRIPTIONS_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}"
./build/pre-package-checks.ps1 -csProjFile "${{env.TEST_FRAMEWORK_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}"
shell: pwsh
- name: Package Libraries
run: |
dotnet pack "${{env.PRIMARY_LIB_PATH}}" --configuration ${{env.BUILD_CONFIG}} --no-restore --include-symbols --output ${{env.OUTPUT_DIR}} /p:VersionPrefix=${{inputs.version-number}} /p:VersionSuffix="${{inputs.version-suffix}}"
dotnet pack "${{env.SUBSCRIPTIONS_LIB_PATH}}" --configuration ${{env.BUILD_CONFIG}} --no-restore --include-symbols --output ${{env.OUTPUT_DIR}} /p:VersionPrefix=${{inputs.version-number}} /p:VersionSuffix="${{inputs.version-suffix}}"
dotnet pack "${{env.TEST_FRAMEWORK_LIB_PATH}}" --configuration ${{env.BUILD_CONFIG}} --no-restore --include-symbols --output ${{env.OUTPUT_DIR}} /p:VersionPrefix=${{inputs.version-number}} /p:VersionSuffix="${{inputs.version-suffix}}"
# ---------------------------------------
# Save Artifacts for later debugging
# ---------------------------------------
- uses: actions/upload-artifact@v3
name: Save Artifacts
with:
name: generated-nuget-packages
path: ${{env.OUTPUT_DIR}}/*
# ---------------------------------------
# Post Processing Checks
# ---------------------------------------
- name: Post-Package Inspection
run: |
./build/post-package-checks.ps1 -csProjFile "${{env.PRIMARY_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}" -outputDirectory ${{env.OUTPUT_DIR}}
./build/post-package-checks.ps1 -csProjFile "${{env.SUBSCRIPTIONS_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}" -outputDirectory ${{env.OUTPUT_DIR}}
./build/post-package-checks.ps1 -csProjFile "${{env.TEST_FRAMEWORK_LIB_PATH}}" -versionNumber ${{inputs.version-number}} -versionSuffix "${{inputs.version-suffix}}" -outputDirectory ${{env.OUTPUT_DIR}}
shell: pwsh
# ---------------------------------------
# Deploy to Nuget
# ---------------------------------------
- name: Publish To Nuget
run: dotnet nuget push "${{env.OUTPUT_DIR}}/*.nupkg" --source 'https://api.nuget.org/v3/index.json' --api-key "${{env.NUGET_KEY}}"