name: Build on: push: branches: [main] paths-ignore: - '**.md' - 'docs/**' pull_request: paths-ignore: - '**.md' - 'docs/**' workflow_dispatch: permissions: contents: read jobs: windows: name: Windows Release runs-on: windows-latest timeout-minutes: 20 steps: - name: Checkout source and pinned dependencies uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: submodules: recursive - name: Set up .NET SDK uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 with: dotnet-version: 9.0.x - name: Build public single executable shell: pwsh run: ./tools/Build.ps1 - name: Build runtime checks shell: pwsh run: dotnet build ./tools/SmokeTest/SmokeTest.csproj -c Release -v:minimal - name: Check themes and public executable shell: powershell run: | $launcher = Join-Path $env:GITHUB_WORKSPACE 'artifacts\PCL-Communist-2.99.0.0\PCL Communist.exe' $hostExe = Join-Path $env:GITHUB_WORKSPACE 'tools\SmokeTest\bin\Release\net48\SmokeTest.exe' $results = Join-Path $env:RUNNER_TEMP 'pcl-runtime-results' $testArguments = '"' + $launcher + '" "' + $results + '"' ./tools/Test-IsolatedProcess.ps1 -Executable $hostExe -ArgumentLine $testArguments -OutputDirectory $results -TimeoutSeconds 60 Get-Content -LiteralPath (Join-Path $results 'test-console.txt') - name: Check standalone startup shell: powershell run: | $fixture = Join-Path $env:RUNNER_TEMP 'pcl-standalone' New-Item -ItemType Directory -Path $fixture | Out-Null Copy-Item -LiteralPath './artifacts/PCL-Communist-2.99.0.0/PCL Communist.exe' -Destination $fixture ./tools/Test-IsolatedProcess.ps1 -Executable (Join-Path $fixture 'PCL Communist.exe') -OutputDirectory (Join-Path $env:RUNNER_TEMP 'pcl-startup-results') -TimeoutSeconds 10 -ExpectMainWindow - name: Upload executable uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 with: name: PCL-Communist path: artifacts/PCL-Communist-2.99.0.0/PCL Communist.exe if-no-files-found: error - name: Upload runtime diagnostics if: failure() uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 with: name: runtime-diagnostics path: | ${{ runner.temp }}/pcl-runtime-results ${{ runner.temp }}/pcl-startup-results if-no-files-found: ignore