name: Build Commit on: push: branches: [master] paths: - ".github/workflows/build-commit.yml" - "DSharpPlus*/**" - "tools/**" - "docs/**" - "*.sln" - "obsolete/DSharpPlus*/**" workflow_dispatch: env: DOTNET_NOLOGO: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: 1 jobs: package-commit: name: Package Commit runs-on: ubuntu-latest if: "!contains(format('{0} {1}', github.event.head_commit.message, github.event.pull_request.title), '[ci-skip]')" permissions: id-token: write # needed for trusted publishing steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 10 - name: Build Project run: dotnet build - name: Test Changes run: dotnet test --blame-crash --blame-hang --blame-hang-timeout "30s" - name: Get Nightly Version id: nightly run: printf "version=%0*d" 5 $(( 1195 + 691 + ${{ github.run_number }} )) >> "$GITHUB_OUTPUT" - name: Login to NuGet uses: NuGet/login@v1 id: nuget-login with: user: ${{ secrets.NUGET_USER }} - name: Package Project run: | # We add 1195 since it's the last build number AppVeyor used. # We add 686 since it's the last build number GitHub Actions used before the workflow was renamed. dotnet pack -c Release -o build -p:Nightly=${{ steps.nightly.outputs.version }} dotnet nuget push "build/*" --skip-duplicate -k ${{ steps.nuget-login.outputs.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json env: DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} DISCORD_GUILD_ID: ${{ secrets.DISCORD_GUILD_ID }} DISCORD_CHANNEL_ID: ${{ secrets.DISCORD_CHANNEL_ID }} DISCORD_CHANNEL_TOPIC: ${{ secrets.DISCORD_CHANNEL_TOPIC }} DISCORD_DOC_BOT_USER_ID: ${{ secrets.DISCORD_DOC_BOT_USER_ID }} DISCORD_BOT_USAGE_CHANNEL_ID: ${{ secrets.DISCORD_BOT_USAGE_CHANNEL_ID }} NUGET_URL: ${{ secrets.NUGET_URL }} GITHUB_URL : ${{ github.server_url }}/${{ github.repository }} - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: DSharpPlus-Nightly-${{ steps.nightly.outputs.version }}.zip path: ./build/* - name: Get commit message header id: get_commit_message run: | commit_message_header=$(git log -1 --pretty=%B | head -n 1) echo "message_header=${commit_message_header}" >> $GITHUB_OUTPUT - name: Discord Webhook uses: tsickert/discord-webhook@v4.0.0 with: webhook-url: ${{ secrets.BUILD_WEBHOOK }} embed-title: DSharpPlus 5.0.0-nightly-${{ steps.nightly.outputs.version }} embed-description: | NuGet Link: [`5.0.0-nightly-${{ steps.nightly.outputs.version }}`](https://www.nuget.org/packages/DSharpPlus/5.0.0-nightly-${{ steps.nightly.outputs.version }}) Commit hash: [`${{ github.sha }}`](https://github.com/${{github.repository}}/commit/${{github.sha}}) Commit message: ``${{ steps.get_commit_message.outputs.message_header }}`` embed-color: 7506394 document-commit: name: Document Commit runs-on: ubuntu-latest needs: package-commit permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 9 - name: Build Project run: | dotnet build dotnet tool install -g docfx --version 2.78.5 --allow-downgrade docfx docs/docfx.json - name: Upload GitHub Pages artifact uses: actions/upload-pages-artifact@v3 with: path: ./docs/_site/ - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 - name: Reload Discord documentation run: | curl -X POST -H 'Authorization: Bot ${{ secrets.DISCORD_TOKEN }}' -H 'Content-Type: application/json' -d '{"content":"<@341606460720939008> reload"}' 'https://discord.com/api/v10/channels/379379415475552276/messages'