forked from wixtoolset/wix
-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (113 loc) · 5.75 KB
/
build.yml
File metadata and controls
130 lines (113 loc) · 5.75 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Build PanelSwWix Toolset v7.1
on:
workflow_dispatch:
inputs:
publish_nuget:
description: 'Publish nuget package?'
required: true
default: false
type: boolean
env:
DOTNET_NOLOGO: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NUGET_XMLDOC_MODE: skip
jobs:
build:
name: Build
runs-on: windows-2025
env:
RepoOrg: ${{ github.repository_owner }}
SignBuild: ${{ github.repository_owner == 'wixtoolset' && startsWith(github.ref, 'refs/tags/v') }}
WixOfficialBuild: ${{ github.repository_owner == 'wixtoolset' && startsWith(github.ref, 'refs/tags/v') }}
permissions:
packages: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
# - name: Configure Visual Studio
# shell: cmd
# run: ./src/vs_config.cmd
- name: Install sign tool
if: ${{ env.SignBuild == 'true' }}
shell: cmd
run: dotnet tool install --tool-path build\.tools sign --version 0.9.1-beta.26102.1
- name: Configure automated logging and crash dumps
shell: cmd
run: |
reg add HKLM\Software\Policies\Microsoft\Windows\Installer /t REG_SZ /v Logging /d voicewarmupx /f
reg add HKLM\Software\WOW6432Node\Policies\Microsoft\Windows\Installer /t REG_SZ /v Logging /d voicewarmupx /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_EXPAND_SZ /v DumpFolder /d "%CD%\build\logs\crashdumps" /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_DWORD /v DumpCount /d 10 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_DWORD /v DumpType /d 1 /f
reg add "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_EXPAND_SZ /v DumpFolder /d "%CD%\build\logs\crashdumps" /f
reg add "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_DWORD /v DumpCount /d 10 /f
reg add "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps" /t REG_DWORD /v DumpType /d 1
- name: 'Az CLI login'
if: ${{ env.SignBuild == 'true' }}
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # tag: v2.3.0
with:
allow-no-subscriptions: true
client-id: ${{ secrets.WIX_SIGNING_CLIENTID }}
tenant-id: ${{ secrets.WIX_SIGNING_TENANTID }}
- name: Decrypt snk
run: gpg --quiet --batch --yes --decrypt --passphrase="${{ secrets.GPG_PASSPHRASE }}" --output "${{ github.workspace }}\src\psw-wix.snk" "${{ github.workspace }}\src\psw-wix.snk.gpg"
- name: Build psw-wix-7.1
shell: cmd
run: ./src/build_official.cmd
env:
RuntimeTestsEnabled: true
AZURE_CLIENT_ID: ${{ env.SignBuild == 'true' && secrets.WIX_SIGNING_CLIENTID || '' }}
AZURE_TENANT_ID: ${{ env.SignBuild == 'true' && secrets.WIX_SIGNING_TENANTID || '' }}
SigningKeyVaultUri: ${{ env.SignBuild == 'true' && secrets.WIX_SIGNING_VAULTURI || '' }}
SigningCertName: ${{ env.SignBuild == 'true' && secrets.WIX_SIGNING_CERTNAME || '' }}
BuildRunNumber: ${{ github.run_number }}
- name: Resolve build version
if: always()
run: |
$xmlDoc = New-Object System.Xml.XmlDocument
$file = [System.IO.Path]::Combine("${{ github.workspace }}", "Directory.Packages.props")
[xml]$xmlDoc = Get-Content $file
$node = $xmlDoc.SelectSingleNode('//PackageVersion[@Include="PanelSwWix4.Dtf.Compression"]/@Version')
Add-Content -Path ${{ github.env }} -Value ("WIX_VERSION=" + $node.Value)
- name: Validate test results
shell: cmd
run: 7z a build\testresults.zip @src\testresultfilelist.txt
- name: Save build
if: always()
uses: actions/upload-artifact@v4
with:
name: artifacts
path: build/artifacts/
- name: Collect integration test logs
if: ${{ !cancelled() }}
shell: cmd
run: 7z a "build\logs\test_burn_%GITHUB_RUN_ID%.zip" "%TEMP%\*.log" "%TEMP%\..\*.log"
- name: Export Application event log
if: ${{ !cancelled() }}
shell: cmd
run: wevtutil epl Application build\logs\Application.evtx /q:"Event/System/TimeCreated[timediff(@SystemTime) <= 86400000]"
- name: Export System event log
if: ${{ !cancelled() }}
shell: cmd
run: wevtutil epl System build\logs\System.evtx /q:"Event/System/TimeCreated[timediff(@SystemTime) <= 86400000]"
# Do NOT publish logs on `official builds` (version tagged builds) as they may contain secrets in them.
- name: Save logs
if: ${{ env.SignBuild != 'true' && !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: logs_${{ github.run_id }}
path: build/logs/
- name: Publish nuget packages to github
if: ${{ github.event.inputs.publish_nuget == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.TAGGER_PAT }}
run: |
dotnet nuget add source --username ${{ github.actor }} --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
dotnet nuget push build/artifacts/**/PanelSwWix4.*.${{ env.WIX_VERSION }}.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source github
dotnet nuget push build/artifacts/**/PanelSwWix4.*.${{ env.WIX_VERSION }}.nupkg --api-key ${{ secrets.NUGET_TOKEN }} --source https://api.nuget.org/v3/index.json
git tag ${{ env.WIX_VERSION }}
git push --tags