name: main on: [push, pull_request] jobs: test: runs-on: windows-latest env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true steps: - name: Checkout uses: actions/checkout@v3 - name: Install .NET uses: actions/setup-dotnet@v2 with: dotnet-version: 6.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 --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover env: DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }} DISCORD_TOKEN_BOT: true - name: Upload coverage uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} package: needs: test runs-on: windows-latest env: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true steps: - name: Checkout uses: actions/checkout@v3 - name: Install .NET uses: actions/setup-dotnet@v2 with: dotnet-version: 6.0.x - name: Publish (CLI) run: dotnet publish DiscordChatExporter.Cli/ -o DiscordChatExporter.Cli/bin/Publish/ --configuration Release - name: Publish (GUI) run: dotnet publish DiscordChatExporter.Gui/ -o DiscordChatExporter.Gui/bin/Publish/ --configuration Release - name: Upload artifacts (CLI) uses: actions/upload-artifact@v3 with: name: DiscordChatExporter.Cli path: DiscordChatExporter.Cli/bin/Publish/ - name: Upload artifacts (GUI) uses: actions/upload-artifact@v3 with: name: DiscordChatExporter path: DiscordChatExporter.Gui/bin/Publish/ deploy: if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} needs: package runs-on: ubuntu-latest 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) run: Compress-Archive -Path DiscordChatExporter.Cli/* -DestinationPath DiscordChatExporter.Cli.zip -Force shell: pwsh - name: Create package (GUI) run: Compress-Archive -Path DiscordChatExporter.Gui/* -DestinationPath DiscordChatExporter.Gui.zip -Force shell: pwsh - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} body: | [Changelog](https://github.com/Tyrrrz/DiscordChatExporter/blob/master/Changelog.md) draft: false prerelease: false - name: Upload release asset (CLI) uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_name: DiscordChatExporter.Cli.zip asset_path: DiscordChatExporter.Cli.zip asset_content_type: application/zip - name: Upload release asset (GUI) uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_name: DiscordChatExporter.zip asset_path: DiscordChatExporter.Gui.zip asset_content_type: application/zip notify: needs: deploy runs-on: ubuntu-latest steps: - name: Get release version id: get_version uses: dawidd6/action-get-tag@v1 - name: Notify Discord uses: satak/webrequest-action@v1.2.4 with: url: ${{ secrets.DISCORD_WEBHOOK }} method: POST headers: | { "ContentType": "application/json; charset=UTF-8" } payload: | { "content": "**DiscordChatExporter** new version released!\nVersion: `${{ steps.get_version.outputs.tag }}`\nChangelog: " }