Repository navigation
74 lines (60 loc) · 2.69 KB
/
Copy pathci.yml
File metadata and controls
74 lines (60 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
name: CI Pipeline
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch:
jobs:
build-and-test:
name: Build, Test & Package (windows-latest)
runs-on: windows-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup .NET 10 SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Restore Dependencies
run: dotnet restore SSPen.sln
- name: Build Solution
run: dotnet build SSPen.sln -c Release --no-restore
- name: Run Unit & Simulation Tests
run: dotnet test tests/SSPen.Tests/SSPen.Tests.csproj -c Release --no-build --verbosity normal --logger "trx;LogFileName=unit-test-results.trx"
- name: Run E2E Tests
run: dotnet test tests/SSPen.E2ETests/SSPen.E2ETests.csproj -c Release --no-build --verbosity normal --logger "trx;LogFileName=e2e-test-results.trx"
- name: Run Integration Tests
run: dotnet test tests/SSPen.IntegrationTests/SSPen.IntegrationTests.csproj -c Release --no-build --verbosity normal --logger "trx;LogFileName=integration-test-results.trx"
continue-on-error: true
- name: Publish Self-Contained Win-x64
run: dotnet publish src/SSPen/SSPen.csproj -c Release -r win-x64 --self-contained true -o publish/win-x64 -v minimal -nologo
# 폴더 단언은 build/assert-selfcontained.ps1 한 벌을 publish.ps1·verify.ps1·release.yml과 공유한다(93단계, A8-8).
- name: Verify Self-Contained Integrity
shell: pwsh
run: ./build/assert-selfcontained.ps1 -PublishDir publish/win-x64
- name: Setup Inno Setup 6
shell: pwsh
run: |
$iscc = @(
"${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe",
"${env:ProgramFiles}\Inno Setup 6\ISCC.exe",
"${env:LOCALAPPDATA}\Programs\Inno Setup 6\ISCC.exe"
) | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $iscc) {
choco install innosetup -y --no-progress
$iscc = "${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe"
}
"ISCC=$iscc" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
- name: Build Inno Setup Installer
shell: pwsh
run: |
& "$env:ISCC" "installer/SSPen.iss"
if ($LASTEXITCODE -ne 0) { throw "ISCC compilation failed with code $LASTEXITCODE" }
Write-Host "Installer built successfully."
- name: Upload Installer Artifact
uses: actions/upload-artifact@v4
with:
name: SSPen-Setup-Installer
path: publish/installer/*.exe
if-no-files-found: error