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@v3 - name: Install .NET uses: actions/setup-dotnet@v2 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@v3 with: token: ${{ secrets.CODECOV_TOKEN }} pack: runs-on: windows-latest permissions: actions: write contents: read steps: - name: Checkout uses: actions/checkout@v3 - name: Install .NET uses: actions/setup-dotnet@v2 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@v3 with: name: DiscordChatExporter.Cli path: DiscordChatExporter.Cli/publish/ - name: Upload artifacts (GUI) uses: actions/upload-artifact@v3 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@v3 with: name: DiscordChatExporter.Cli path: DiscordChatExporter.Cli - name: Download artifacts (GUI) uses: actions/download-artifact@v3 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@v1 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>" }