Create Release #15
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
################################################################################ | |
### Build MonoGame.Extended (Develop) | |
### Clones the `develop` branch and performs a build, test, then pack of the | |
### Monogame.Extended source code. Once the build job is finished, the deploy | |
### job will upload the nupkg files created to the MonoGame.Extended GitHub | |
### | |
### - Only runs on a push to the `develop` branch | |
################################################################################ | |
name: "Create Release" | |
on: | |
workflow_dispatch: | |
inputs: | |
prerelease: | |
description: 'Is this a prerelease?' | |
required: true | |
type: boolean | |
default: true | |
source-feed: | |
description: 'Which source feed to publish to?' | |
required: true | |
type: choice | |
options: | |
- GitHub | |
- NuGet | |
default: 'GitHub' | |
jobs: | |
build: | |
name: "Build MonoGame.Extended" | |
runs-on: ubuntu-latest | |
env: | |
IS_PRERELEASE: ${{ inputs.prerelease || '' }} | |
BUILD_NUMBER: ${{ inputs.prerelease && github.run_number || '' }} | |
steps: | |
- name: Clone Repository | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.prerelease && 'develop' || 'main' }} | |
- name: Setup Dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
- name: Build MonoGame.Extended | |
run: dotnet build MonoGame.Extended.sln --nologo --verbosity minimal --configuration Release | |
- name: Test MonoGame.Extended | |
run: dotnet test MonoGame.Extended.sln --nologo --verbosity minimal --configuration Release | |
- name: Pack MonoGame.Extended | |
run: dotnet pack MonoGame.Extended.sln --nologo --verbosity minimal --configuration Release | |
- name: Pack Kni.Extended | |
run: dotnet pack KNI.Extended.sln --nologo --verbosity minimal --configuration Release | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-artifacts | |
path: ./.artifacts/source/package/release/*.nupkg | |
deploy: | |
name: "Deploy NuGets" | |
runs-on: ubuntu-latest | |
needs: [ build ] | |
permissions: | |
packages: write | |
contents: write | |
steps: | |
- name: "Download Artifacts" | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
path: ./.artifacts | |
- name: "Push Packages" | |
env: | |
SOURCE_URL: ${{ inputs.source-feed == 'GitHub' && 'https://nuget.pkg.github.com/craftworkgames/index.json' || inputs.source-feed == 'NuGet' && 'https://api.nuget.org/v3/index.json' }} | |
API_KEY: ${{ inputs.source-feed == 'GitHub' && secrets.GITHUB_TOKEN || inputs.source-feed == 'NuGet' && secrets.NUGET_ACCESS_TOKEN }} | |
run: | | |
PACKAGES=(".artifacts/*.nupkg") | |
for PACKAGE in "${PACKAGES[@]}"; do | |
dotnet nuget push "$PACKAGE" --source "$SOURCE_URL" --skip-duplicate --api-key "$API_KEY" | |
done |