master
yml 156 lines 5.26 KB
Raw
1 parameters:
2 - name: isRelease
3 type: boolean
4 default: true
5
6 - name: packageVersion
7 type: string
8 default: ""
9
10 - name: nugetSuffix
11 type: string
12 default: ""
13
14 - name: isNightly
15 type: boolean
16 default: false
17
18 - name: traceLoggingConfig
19 type: string
20 default: ''
21
22 - name: nugetPackages
23 type: object
24 default:
25 - Microsoft.WSL.PluginApi.nuspec
26 - Microsoft.WSL.Containers.nuspec
27
28 - name: includePackageStage
29 type: boolean
30 default: true
31
32 - name: targets
33 type: object
34 default:
35 - target: "wsl;libwsl;wslg;wslservice;wslhost;wslrelay;wslinstaller;wslinstall;initramfs;wslserviceproxystub;wsldevicehostproxystub;wslsettings;wslinstallerproxystub;testplugin;wslcsession;wslc;wsltests;wslcsdk"
36 pattern: "wsl.exe,libwsl.dll,wslg.exe,wslservice.exe,wslhost.exe,wslrelay.exe,wslinstaller.exe,wslinstall.dll,wslserviceproxystub.dll,wsldevicehostproxystub.dll,wslsettings/wslsettings.dll,wslsettings/wslsettings.exe,wslinstallerproxystub.dll,WSLDVCPlugin.dll,testplugin.dll,wsldeps.dll,wslcsession.exe,wslc.exe,wslcsdk.dll"
37 - target: "msixgluepackage"
38 pattern: "gluepackage.msix"
39 - target: "msipackage;wslcsdkcs"
40 pattern: "wsl.msi,wslcsdkcs.dll,Microsoft.WSL.Containers.winmd"
41
42 - name: pool
43 type: string
44 default: ''
45
46 - name: vsoOrg
47 type: string
48
49 - name: vsoProject
50 type: string
51
52 - name: esrp
53 type: object
54 default:
55 ConnectedServiceName: "AzureConnection-AME"
56 signConfigType: "inlineSignParams"
57 SessionTimeout: 60
58 MaxConcurrency: 50
59 MaxRetryAttempts: 5
60 ServiceEndpointUrl: $(EsrpServiceEndpointUrl)
61 AuthAKVName: $(EsrpAuthAKVName)
62 AuthSignCertName: $(EsrpAuthSignCertName)
63 AppRegistrationClientId: $(EsrpAppRegistrationClientId)
64 AppRegistrationTenantId: $(EsrpAppRegistrationTenantId)
65 EsrpClientId: $(EsrpClientId)
66
67 stages:
68 # ── x64 build stage ──────────────────────────────────────────────────
69 # Runs in parallel with build_arm64. Tests depend on this stage.
70 - stage: build_x64
71 dependsOn: []
72 jobs:
73 - template: build-job.yml
74 parameters:
75 platform: x64
76 artifactSuffix: '_build'
77 isRelease: ${{ parameters.isRelease }}
78 isNightly: ${{ parameters.isNightly }}
79 packageVersion: ${{ parameters.packageVersion }}
80 traceLoggingConfig: ${{ parameters.traceLoggingConfig }}
81 targets: ${{ parameters.targets }}
82 pool: ${{ parameters.pool }}
83 vsoOrg: ${{ parameters.vsoOrg }}
84 vsoProject: ${{ parameters.vsoProject }}
85 esrp: ${{ parameters.esrp }}
86 includeTestArtifacts: true
87
88 # ── arm64 build stage (runs in parallel with build_x64) ──────────────
89 # Includes formatting/localization checks as a first job, then arm64 build.
90 - stage: build_arm64
91 dependsOn: []
92 jobs:
93 - job: checks
94 displayName: "Formatting & localization checks"
95 timeoutInMinutes: 30
96
97 variables:
98 ob_outputDirectory: '$(Build.SourcesDirectory)\out'
99
100 ${{ if eq(parameters.pool, '') }}:
101 pool: {'type': 'windows'}
102
103 ${{ else }}:
104 pool: ${{ parameters.pool }}
105
106 steps:
107 - script: python tools/devops/validate-localization.py
108 displayName: Validate localization resources
109
110 - script: python tools\devops\validate-copyright-headers.py src
111 displayName: Validate copyright headers (src/)
112
113 - script: python tools\devops\validate-copyright-headers.py test
114 displayName: Validate copyright headers (test/)
115
116 - script: python tools\devops\validate-line-endings.py .
117 displayName: Validate line endings
118
119 - task: CMake@1
120 displayName: "CMake ."
121 inputs:
122 workingDirectory: "."
123 cmakeArgs: .
124
125 - task: PowerShell@2
126 inputs:
127 targetType: "filePath"
128 filePath: FormatSource.ps1
129 arguments: "-ModifiedOnly $false -Verify $true"
130 displayName: "Clang-format check"
131
132 - template: build-job.yml
133 parameters:
134 platform: arm64
135 artifactSuffix: '_build_arm64'
136 dependsOn: checks
137 isRelease: ${{ parameters.isRelease }}
138 isNightly: ${{ parameters.isNightly }}
139 packageVersion: ${{ parameters.packageVersion }}
140 traceLoggingConfig: ${{ parameters.traceLoggingConfig }}
141 targets: ${{ parameters.targets }}
142 pool: ${{ parameters.pool }}
143 vsoOrg: ${{ parameters.vsoOrg }}
144 vsoProject: ${{ parameters.vsoProject }}
145 esrp: ${{ parameters.esrp }}
146 includeCodeQL: true
147
148 # ── package stage (release and nightly only) ─────────────────────────
149 # Creates msixbundle, appxupload, and NuGet packages from both platform artifacts.
150 - ${{ if parameters.includePackageStage }}:
151 - template: package-stage.yml
152 parameters:
153 isRelease: ${{ parameters.isRelease }}
154 pool: ${{ parameters.pool }}
155 esrp: ${{ parameters.esrp }}
156 nugetPackages: ${{ parameters.nugetPackages }}