Skip to content

Commit 3dcec45

Browse files
committed
chore: final enterprise polish and release preparation for v1.1.0
1 parent acfd8dc commit 3dcec45

124 files changed

Lines changed: 7613 additions & 5931 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,66 @@ dotnet_style_collection_initializer = true:suggestion
2525
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
2626
dotnet_style_predefined_type_for_member_access = true:suggestion
2727

28+
# Keep high signal diagnostics as warnings and reduce legacy formatting/header noise.
29+
dotnet_diagnostic.CS1591.severity = none
30+
dotnet_diagnostic.SA1000.severity = none
31+
dotnet_diagnostic.SA1028.severity = suggestion
32+
dotnet_diagnostic.SA1402.severity = suggestion
33+
dotnet_diagnostic.SA1507.severity = suggestion
34+
dotnet_diagnostic.SA1512.severity = suggestion
35+
dotnet_diagnostic.SA1513.severity = suggestion
36+
dotnet_diagnostic.SA1515.severity = suggestion
37+
dotnet_diagnostic.SA1518.severity = suggestion
38+
dotnet_diagnostic.SA1600.severity = suggestion
39+
dotnet_diagnostic.SA1601.severity = suggestion
40+
dotnet_diagnostic.SA1602.severity = suggestion
41+
dotnet_diagnostic.SA1611.severity = suggestion
42+
dotnet_diagnostic.SA1615.severity = suggestion
43+
dotnet_diagnostic.SA1618.severity = suggestion
44+
dotnet_diagnostic.SA1633.severity = none
45+
dotnet_diagnostic.SA1649.severity = suggestion
46+
dotnet_diagnostic.CA1848.severity = suggestion
47+
dotnet_diagnostic.CA1873.severity = suggestion
48+
dotnet_diagnostic.CA1310.severity = suggestion
49+
dotnet_diagnostic.CA1822.severity = suggestion
50+
dotnet_diagnostic.CA1866.severity = suggestion
51+
dotnet_diagnostic.CA2253.severity = suggestion
52+
dotnet_diagnostic.CA2254.severity = suggestion
53+
dotnet_diagnostic.SA1117.severity = suggestion
54+
dotnet_diagnostic.SA1118.severity = suggestion
55+
dotnet_diagnostic.SA1108.severity = suggestion
56+
dotnet_diagnostic.SA1201.severity = suggestion
57+
dotnet_diagnostic.SA1202.severity = suggestion
58+
dotnet_diagnostic.SA1203.severity = suggestion
59+
dotnet_diagnostic.SA1204.severity = suggestion
60+
dotnet_diagnostic.SA1200.severity = suggestion
61+
dotnet_diagnostic.SA1214.severity = suggestion
62+
dotnet_diagnostic.SA1316.severity = suggestion
63+
dotnet_diagnostic.SA1311.severity = suggestion
64+
dotnet_diagnostic.SA1401.severity = suggestion
65+
dotnet_diagnostic.SA1413.severity = suggestion
66+
67+
# Final release warning triage: keep security/behavior-focused diagnostics visible,
68+
# downgrade legacy refactor/design/perf backlog to suggestions.
69+
dotnet_diagnostic.CA1001.severity = suggestion
70+
dotnet_diagnostic.CA1051.severity = suggestion
71+
dotnet_diagnostic.CA1304.severity = suggestion
72+
dotnet_diagnostic.CA1305.severity = suggestion
73+
dotnet_diagnostic.CA1311.severity = suggestion
74+
dotnet_diagnostic.CA1510.severity = suggestion
75+
dotnet_diagnostic.CA1513.severity = suggestion
76+
dotnet_diagnostic.CA1707.severity = suggestion
77+
dotnet_diagnostic.CA1711.severity = suggestion
78+
dotnet_diagnostic.CA1720.severity = suggestion
79+
dotnet_diagnostic.CA1805.severity = suggestion
80+
dotnet_diagnostic.CA1816.severity = suggestion
81+
dotnet_diagnostic.CA1840.severity = suggestion
82+
dotnet_diagnostic.CA1845.severity = suggestion
83+
dotnet_diagnostic.CA1860.severity = suggestion
84+
dotnet_diagnostic.CA1861.severity = suggestion
85+
dotnet_diagnostic.CA1869.severity = suggestion
86+
dotnet_diagnostic.CA2263.severity = suggestion
87+
2888
[*.xaml]
2989
indent_size = 2
3090

.github/workflows/release.yml

Lines changed: 83 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,95 @@ jobs:
2828
- name: Build
2929
run: dotnet build "ThreadPilot_1.sln" --configuration Release --no-restore
3030

31-
- name: Publish self-contained app
32-
run: dotnet publish "ThreadPilot.csproj" --configuration Release --runtime win-x64 --self-contained true -o artifacts/release/win-x64
31+
- name: Test
32+
run: dotnet test "ThreadPilot_1.sln" --configuration Release --no-build
3333

34-
- name: Create release package
34+
- name: Publish self-contained single-file
35+
run: dotnet publish "ThreadPilot.csproj" --configuration Release -p:PublishProfile=WinX64-SingleFile
36+
37+
- name: Publish ReadyToRun
38+
run: dotnet publish "ThreadPilot.csproj" --configuration Release -p:PublishProfile=WinX64-ReadyToRun
39+
40+
- name: Publish MSIX
41+
run: dotnet publish "ThreadPilot.csproj" --configuration Release -p:PublishProfile=WinX64-MSIX
42+
43+
- name: Validate MSIX output
44+
shell: pwsh
45+
run: |
46+
$ErrorActionPreference = "Stop"
47+
$msixFiles = Get-ChildItem "artifacts/release/msix" -Recurse -File -Include *.msix,*.appx,*.msixbundle,*.appxbundle -ErrorAction SilentlyContinue
48+
if (-not $msixFiles)
49+
{
50+
throw "MSIX package generation failed: no package artifacts found in artifacts/release/msix."
51+
}
52+
53+
Write-Host "MSIX artifacts found: $($msixFiles.Count)"
54+
55+
- name: Prepare signing certificate (optional)
56+
shell: pwsh
57+
run: |
58+
$ErrorActionPreference = "Stop"
59+
if ([string]::IsNullOrWhiteSpace($env:WINDOWS_SIGNING_CERT_BASE64) -or [string]::IsNullOrWhiteSpace($env:WINDOWS_SIGNING_CERT_PASSWORD))
60+
{
61+
Write-Host "Signing secrets not provided via environment variables. Skipping certificate preparation."
62+
exit 0
63+
}
64+
65+
$certPath = Join-Path $env:RUNNER_TEMP "threadpilot-signing.pfx"
66+
[System.IO.File]::WriteAllBytes($certPath, [System.Convert]::FromBase64String($env:WINDOWS_SIGNING_CERT_BASE64))
67+
"THREADPILOT_SIGN_CERT_PATH=$certPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
68+
69+
- name: Sign binaries and packages (optional)
70+
shell: pwsh
71+
run: |
72+
$ErrorActionPreference = "Stop"
73+
if ([string]::IsNullOrWhiteSpace($env:THREADPILOT_SIGN_CERT_PATH) -or -not (Test-Path $env:THREADPILOT_SIGN_CERT_PATH))
74+
{
75+
Write-Host "No signing certificate prepared. Skipping signing step."
76+
exit 0
77+
}
78+
79+
if (-not (Get-Command signtool.exe -ErrorAction SilentlyContinue))
80+
{
81+
throw "signtool.exe not found on runner; install Windows SDK or disable signing."
82+
}
83+
84+
$timestampUrl = "http://timestamp.digicert.com"
85+
$password = $env:WINDOWS_SIGNING_CERT_PASSWORD
86+
$targets = @()
87+
$targets += Get-ChildItem "artifacts/release/singlefile" -Recurse -File -Include *.exe -ErrorAction SilentlyContinue
88+
$targets += Get-ChildItem "artifacts/release/readytorun" -Recurse -File -Include *.exe -ErrorAction SilentlyContinue
89+
$targets += Get-ChildItem "artifacts/release/msix" -Recurse -File -Include *.msix,*.appx,*.msixbundle,*.appxbundle -ErrorAction SilentlyContinue
90+
91+
foreach ($target in $targets)
92+
{
93+
signtool.exe sign /fd SHA256 /tr $timestampUrl /td SHA256 /f "$env:THREADPILOT_SIGN_CERT_PATH" /p $password "$($target.FullName)"
94+
}
95+
96+
- name: Create release packages
3597
shell: pwsh
3698
run: |
3799
$ErrorActionPreference = "Stop"
38100
$version = "${{ github.ref_name }}"
39-
$zipName = "ThreadPilot_$version`_win-x64.zip"
40-
Compress-Archive -Path "artifacts/release/win-x64/*" -DestinationPath "artifacts/release/$zipName" -Force
101+
New-Item -ItemType Directory -Force -Path "artifacts/release/packages" | Out-Null
102+
103+
$singleFileZip = "artifacts/release/packages/ThreadPilot_$version`_singlefile_win-x64.zip"
104+
$readyToRunZip = "artifacts/release/packages/ThreadPilot_$version`_readytorun_win-x64.zip"
105+
106+
Compress-Archive -Path "artifacts/release/singlefile/*" -DestinationPath $singleFileZip -Force
107+
Compress-Archive -Path "artifacts/release/readytorun/*" -DestinationPath $readyToRunZip -Force
41108
42109
- name: Generate checksums
43110
shell: pwsh
44111
run: |
45112
$ErrorActionPreference = "Stop"
46113
$hashFile = "artifacts/release/SHA256SUMS.txt"
47-
Get-ChildItem "artifacts/release" -File | ForEach-Object {
114+
115+
$releaseFiles = @()
116+
$releaseFiles += Get-ChildItem "artifacts/release/packages" -File -ErrorAction SilentlyContinue
117+
$releaseFiles += Get-ChildItem "artifacts/release/msix" -Recurse -File -Include *.msix,*.appx,*.msixbundle,*.appxbundle -ErrorAction SilentlyContinue
118+
119+
$releaseFiles | ForEach-Object {
48120
$hash = Get-FileHash $_.FullName -Algorithm SHA256
49121
"$($hash.Hash) $($_.Name)" | Out-File -FilePath $hashFile -Append -Encoding utf8
50122
}
@@ -53,6 +125,10 @@ jobs:
53125
uses: softprops/action-gh-release@v2
54126
with:
55127
files: |
56-
artifacts/release/*.zip
128+
artifacts/release/packages/*.zip
129+
artifacts/release/msix/**/*.msix
130+
artifacts/release/msix/**/*.appx
131+
artifacts/release/msix/**/*.msixbundle
132+
artifacts/release/msix/**/*.appxbundle
57133
artifacts/release/SHA256SUMS.txt
58134
generate_release_notes: true

0 commit comments

Comments
 (0)