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