summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/.github/workflows/create-release.yml
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/.github/workflows/create-release.yml')
-rw-r--r--Plugins/MonoGame.Extended/.github/workflows/create-release.yml80
1 files changed, 80 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/.github/workflows/create-release.yml b/Plugins/MonoGame.Extended/.github/workflows/create-release.yml
new file mode 100644
index 0000000..f42b96e
--- /dev/null
+++ b/Plugins/MonoGame.Extended/.github/workflows/create-release.yml
@@ -0,0 +1,80 @@
+################################################################################
+### 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
+ default: 'true'
+ source-feed:
+ description: |
+ Which source feed to publish to?
+ (Valid values are 'NuGet' or 'GitHub')
+ required: true
+ default: GitHub
+
+jobs:
+ build:
+ name: "Build MonoGame.Extended"
+ runs-on: ubuntu-latest
+ env:
+ IS_PRERELEASE: ${{ inputs.prerelease == 'true' }}
+ BUILD_NUMBER: ${{ inputs.prerelease == 'true' && github.run_number || '' }}
+
+ steps:
+ - name: Clone Repository
+ uses: actions/checkout@v4
+
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 6.0.x
+
+ - name: Build MonoGame.Extended
+ run: dotnet build --nologo --verbosity minimal --configuration Release
+
+ - name: Test MonoGame.Extended
+ run: dotnet test --nologo --verbosity minimal --configuration Release
+
+ - name: Pack MonoGame.Extended
+ run: dotnet pack --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