name: main on: [push, pull_request] env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true jobs: test: runs-on: windows-latest permissions: contents: read steps: - name: Checkout uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # 4.1.0 - name: Install .NET uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # 3.2.0 with: dotnet-version: 7.0.x - name: Run tests # Tests need access to secrets, so we can't run them against PRs because of limited trust if: ${{ github.event_name != 'pull_request' }} run: > dotnet test --configuration Release --logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" --collect:"XPlat Code Coverage" -- RunConfiguration.CollectSourceInformation=true DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover env: DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} - name: Upload coverage uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 3.1.4 with: token: ${{ secrets.CODECOV_TOKEN }} pack: runs-on: windows-latest permissions: actions: write contents: read steps: - name: Checkout uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # 4.1.0 - name: Install .NET uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # 3.2.0 with: dotnet-version: 7.0.x - name: Publish (CLI) run: > dotnet publish DiscordChatExporter.Cli --output DiscordChatExporter.Cli/publish/ --configuration Release - name: Publish (GUI) run: > dotnet publish DiscordChatExporter.Gui --output DiscordChatExporter.Gui/publish/ --configuration Release - name: Upload artifacts (CLI) uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # 3.1.3 with: name: DiscordChatExporter.Cli path: DiscordChatExporter.Cli/publish/ - name: Upload artifacts (GUI) uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # 3.1.3 with: name: DiscordChatExporter path: DiscordChatExporter.Gui/publish/ deploy: if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} needs: - test - pack runs-on: ubuntu-latest permissions: actions: read contents: write steps: - name: Download artifacts (CLI) uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # 3.0.2 with: name: DiscordChatExporter.Cli path: DiscordChatExporter.Cli - name: Download artifacts (GUI) uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # 3.0.2 with: name: DiscordChatExporter path: DiscordChatExporter.Gui - name: Create package (CLI) shell: pwsh run: > Compress-Archive -Path DiscordChatExporter.Cli/* -DestinationPath DiscordChatExporter.Cli.zip -Force - name: Create package (GUI) shell: pwsh run: > Compress-Archive -Path DiscordChatExporter.Gui/* -DestinationPath DiscordChatExporter.zip -Force - name: Create release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: > gh release create "${{ github.ref_name }}" "DiscordChatExporter.Cli.zip" "DiscordChatExporter.zip" --repo "${{ github.event.repository.full_name }}" --title "${{ github.ref_name }}" --notes "[Changelog](${{ github.event.repository.html_url }}/blob/${{ github.ref_name }}/Changelog.md)" --verify-tag notify: needs: deploy runs-on: ubuntu-latest permissions: contents: read steps: - name: Notify Discord uses: tyrrrz/action-http-request@64c70c67f5ebc54d4c7ea09cbe3553322778afd5 # 1.1.2 with: url: ${{ secrets.DISCORD_WEBHOOK }} method: POST headers: | Content-Type: application/json; charset=UTF-8 body: | { "avatar_url": "https://raw.githubusercontent.com/${{ github.event.repository.full_name }}/${{ github.ref_name }}/favicon.png", "content": "**${{ github.event.repository.name }}** new version released!\nVersion: `${{ github.ref_name }}`\nChangelog: <${{ github.event.repository.html_url }}/blob/${{ github.ref_name }}/Changelog.md>" } retry-count: 5