################################################################################ ### 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