forked from dotnet/wpf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding pipeline-pr.yml (dotnet#8908)
- Loading branch information
1 parent
f4319bc
commit 8ebd773
Showing
2 changed files
with
312 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,310 @@ | ||
# | ||
# This file should be kept in sync across https://www.github.com/dotnet/wpf and dotnet-wpf-int repos. | ||
# | ||
# | ||
|
||
parameters: | ||
# Needed because runAsPublic is used in template expressions, which can't read from user-defined variables | ||
# Defaults to true | ||
runAsPublic: true | ||
repoName: dotnet/wpf | ||
|
||
jobs: | ||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: | ||
- template: /eng/common/templates/job/onelocbuild.yml | ||
parameters: | ||
MirrorRepo: wpf | ||
LclSource: lclFilesfromPackage | ||
LclPackageId: 'LCL-JUNO-PROD-WPF' | ||
- template: /eng/common/templates/jobs/jobs.yml | ||
parameters: | ||
enableMicrobuild: true | ||
enablePublishBuildArtifacts: true | ||
enablePublishTestResults: false # tests run in helix | ||
enablePublishBuildAssets: true | ||
enablePublishUsingPipelines: true | ||
enableTelemetry: true | ||
enableSourceIndex: true | ||
sourceIndexParams: | ||
condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') | ||
binlogPath: artifacts/log/Debug/x86/Build.binlog | ||
pool: | ||
${{ if eq(variables['System.TeamProject'], 'public') }}: | ||
name: NetCore-Public | ||
demands: ImageOverride -equals windows.vs2022preview.amd64.Open | ||
${{ if eq(variables['System.TeamProject'], 'internal') }}: | ||
name: NetCore1ESPool-Internal | ||
demands: ImageOverride -equals windows.vs2022preview.amd64 | ||
helixRepo: $(repoName) | ||
|
||
jobs: | ||
- job: Windows_NT | ||
timeoutInMinutes: 120 # how long to run the job before automatically cancelling; see https://github.com/dotnet/wpf/issues/952 | ||
pool: | ||
# For public jobs, use the hosted pool. For internal jobs use the internal pool. | ||
# Will eventually change this to two BYOC pools. | ||
# agent pool can't be read from a user-defined variable (Azure DevOps limitation) | ||
${{ if eq(variables['System.TeamProject'], 'public') }}: | ||
name: NetCore-Public | ||
demands: ImageOverride -equals windows.vs2022preview.amd64.Open | ||
${{ if eq(variables['System.TeamProject'], 'internal') }}: | ||
name: NetCore1ESPool-Internal | ||
demands: ImageOverride -equals windows.vs2022preview.amd64 | ||
variables: | ||
- name: Codeql.Enabled | ||
value: true | ||
# needed for signing | ||
- name: _TeamName | ||
value: DotNetCore | ||
- name: _SignType | ||
value: real | ||
- name: _SignArgs | ||
value: '' | ||
- name: _PublishArgs | ||
value: '' | ||
- name: _OfficialBuildIdArgs | ||
value: '' | ||
- name: _Platform | ||
value: x86 | ||
- name: _PlatformArgs | ||
value: /p:Platform=$(_Platform) | ||
- name: _PublicBuildPipeline # We will run Helix tests when building in the open, but do not repeat when building and publishing again using the internal build-pipeline | ||
value: true | ||
- name: _TestHelixAgentPool | ||
value: 'Windows.10.Amd64.ClientRS5.Open' # Preferred:'Windows.10.Amd64.Open%3bWindows.7.Amd64.Open%3bWindows.10.Amd64.ClientRS5.Open'; See https://github.com/dotnet/wpf/issues/952 | ||
- name: _HelixStagingDir | ||
value: $(BUILD.STAGINGDIRECTORY)\helix\functests | ||
- name: _HelixSource | ||
value: ${{ parameters.repoName }}/$(Build.SourceBranch) | ||
- name: _HelixToken | ||
value: '' | ||
- name: _HelixCreator | ||
value: ${{ parameters.repoName }} | ||
- name: _programfilesx86 | ||
value: ${Env:ProgramFiles(x86)}/dotnet | ||
- name: _programfiles | ||
value: ${Env:ProgramFiles}/dotnet | ||
- ${{ if ne(variables['System.TeamProject'], 'internal') }}: | ||
- name: _InternalRuntimeDownloadArgs | ||
value: '' | ||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}: | ||
- group: DotNetBuilds storage account read tokens | ||
- group: AzureDevOps-Artifact-Feeds-Pats | ||
- name: _InternalRuntimeDownloadArgs | ||
value: >- | ||
/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal | ||
/p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) | ||
# Override some values if we're building internally | ||
- ${{ if eq(parameters.runAsPublic, 'false') }}: | ||
# note: You have to use list syntax here (- name: value) or you will get errors about declaring the same variable multiple times | ||
- name: _SignType | ||
value: real | ||
- group: DotNet-HelixApi-Access | ||
|
||
# note: Even though they are referenced here, user defined variables (like $(_SignType)) are not resolved | ||
# until the agent is running on the machine. They can be overridden any time before they are resolved, | ||
# like in the job matrix below (see Build_Debug) | ||
- name: _SignArgs | ||
value: /p:DotNetSignType=$(_SignType) /p:TeamName=$(_TeamName) | ||
- name: _PublishArgs | ||
value: /p:DotNetPublishUsingPipelines=true | ||
- name: _OfficialBuildIdArgs | ||
value: /p:OfficialBuildId=$(BUILD.BUILDNUMBER) | ||
- name: _PublicBuildPipeline | ||
value: false | ||
- name: _HelixSource | ||
value: official/${{ parameters.repoName }}/$(Build.SourceBranch) | ||
- name: _HelixToken | ||
value: '$(HelixApiAccessToken)' # from DotNet-HelixApi-Access group | ||
- name: _HelixCreator | ||
value: '' #if _HelixToken is set, Creator must be empty | ||
- name: _TestHelixAgentPool | ||
value: 'Windows.10.Amd64.ClientRS5' # Preferred: 'Windows.10.Amd64%3bWindows.7.Amd64%3bWindows.10.Amd64.ClientRS5' | ||
|
||
strategy: | ||
matrix: | ||
${{ if eq(parameters.runAsPublic, 'true') }}: | ||
Build_Debug_x86: | ||
_BuildConfig: Debug | ||
# override some variables for debug | ||
# _SignType has to be real for package publishing to succeed - do not override to test. | ||
Build_Release_x86: | ||
_BuildConfig: Release | ||
${{ if eq(parameters.runAsPublic, 'true') }}: | ||
Build_Debug_x64: | ||
_BuildConfig: Debug | ||
# override some variables for debug | ||
# _SignType has to be real for package publishing to succeed - do not override to test. | ||
_Platform: x64 | ||
Build_Release_x64: | ||
_BuildConfig: Release | ||
_Platform: x64 | ||
${{ if eq(parameters.runAsPublic, 'true') }}: | ||
Build_Debug_arm64: | ||
_BuildConfig: Debug | ||
# override some variables for debug | ||
# _SignType has to be real for package publishing to succeed - do not override to test. | ||
_Platform: arm64 | ||
Build_Release_arm64: | ||
_BuildConfig: Release | ||
_Platform: arm64 | ||
steps: | ||
- checkout: self | ||
clean: true | ||
|
||
# Set VSO Variable(s) | ||
- powershell: eng\pre-build.ps1 | ||
displayName: Pre-Build - Set VSO Variables | ||
|
||
- ${{ if ne(variables['System.TeamProject'], 'public') }}: | ||
- task: PowerShell@2 | ||
displayName: Setup Private Feeds Credentials | ||
inputs: | ||
filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 | ||
arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token | ||
env: | ||
Token: $(dn-bot-dnceng-artifact-feeds-rw) | ||
|
||
# Use utility script to run script command dependent on agent OS. | ||
- script: eng\scripts\cibuild.cmd | ||
-configuration $(_BuildConfig) | ||
-prepareMachine | ||
$(_PublishArgs) | ||
$(_SignArgs) | ||
$(_OfficialBuildIdArgs) | ||
$(_PlatformArgs) | ||
$(_InternalRuntimeDownloadArgs) | ||
displayName: Windows Build / Publish | ||
# This condition should be kept in sync with the condition for 'Run DRTs' step | ||
# When building on a regular pipeline (!_HelixPipeline), build as usual | ||
# When building on a Helix pipeline, only build Release configs | ||
# (!_HelixPipeline) || | ||
# (_HelixPipeline && _PublicBuildPipeline && _ContinuousIntegrationTestsEnabled && _BuildConfig == Release) | ||
condition: or(ne(variables['_HelixPipeline'], 'true'), and(eq(variables['_HelixPipeline'], 'true') ,eq(variables['_BuildConfig'], 'Release'), eq(variables['_PublicBuildPipeline'], 'true'), eq(variables['_ContinuousIntegrationTestsEnabled'], 'true'))) | ||
|
||
- script: eng\scripts\ciunittest.cmd | ||
-configuration $(_BuildConfig) | ||
-prepareMachine | ||
$(_PublishArgs) | ||
$(_SignArgs) | ||
$(_OfficialBuildIdArgs) | ||
$(_PlatformArgs) | ||
$(_InternalRuntimeDownloadArgs) | ||
displayName: Run xUnit Tests | ||
condition: and(or(ne(variables['_HelixPipeline'], 'true'), and(eq(variables['_HelixPipeline'], 'true') ,eq(variables['_BuildConfig'], 'Release'), eq(variables['_PublicBuildPipeline'], 'true'), eq(variables['_ContinuousIntegrationTestsEnabled'], 'true'))), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: PublishTestResults@2 | ||
displayName: Publish XUnit Test Results | ||
inputs: | ||
testResultsFormat: 'xUnit' | ||
testResultsFiles: '*.xml' | ||
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' | ||
mergeTestResults: true | ||
continueOnError: true | ||
condition: and(eq(variables['_BuildConfig'], 'Release'), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: PowerShell@2 | ||
displayName: Install .NET Core | ||
inputs: | ||
filePath: $(Build.SourcesDirectory)/dotnet-test-install.ps1 | ||
arguments: -InstallDir $(_programfiles) -Architecture $(_Platform) -Runtime dotnet -Channel 8.0 -Quality daily | ||
condition: eq(variables['_Platform'], 'x64') | ||
|
||
- task: PowerShell@2 | ||
displayName: Install .NET Core(x86) | ||
inputs: | ||
filePath: $(Build.SourcesDirectory)/dotnet-test-install.ps1 | ||
arguments: -InstallDir $(_programfilesx86) -Architecture $(_Platform) -Runtime dotnet -Channel 8.0 -Quality daily | ||
condition: eq(variables['_Platform'], 'x86') | ||
|
||
- task: PowerShell@2 | ||
displayName: Install .NET WindowsDesktop | ||
inputs: | ||
filePath: $(Build.SourcesDirectory)/dotnet-test-install.ps1 | ||
arguments: -InstallDir $(_programfiles) -Architecture $(_Platform) -Runtime windowsdesktop -Channel 8.0 -Quality daily | ||
condition: eq(variables['_Platform'], 'x64') | ||
|
||
- task: PowerShell@2 | ||
displayName: Install .NET WindowsDesktop(x86) | ||
inputs: | ||
filePath: $(Build.SourcesDirectory)/dotnet-test-install.ps1 | ||
arguments: -InstallDir $(_programfilesx86) -Architecture $(_Platform) -Runtime windowsdesktop -Channel 8.0 -Quality daily | ||
condition: eq(variables['_Platform'], 'x86') | ||
|
||
- task: PowerShell@2 | ||
displayName: Replace WPF binaries | ||
inputs: | ||
targetType: 'inline' | ||
script: '.\eng\copy-wpf.ps1 -testhost -destination .dotnet -$(_BuildConfig) -arch $(_Platform)' | ||
condition: and(eq(variables['System.TeamProject'], 'public'), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: DownloadPipelineArtifact@2 | ||
displayName: Fetch Test Binaries | ||
inputs: | ||
buildType: 'specific' | ||
project: 'cbb18261-c48f-4abb-8651-8cdcb5474649' | ||
pipeline: '81' | ||
buildVersionToDownload: 'latestFromBranch' | ||
branchName: 'refs/heads/main' | ||
downloadPath: '$(System.ArtifactsDirectory)\testbinzip\' | ||
checkDownloadedFiles: true | ||
artifactName: Tests.$(_BuildConfig).$(_Platform).zip | ||
condition: and(eq(variables['System.TeamProject'], 'public'), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: ExtractFiles@1 | ||
displayName: Extract Test Bins | ||
inputs: | ||
archiveFilePatterns: '$(System.ArtifactsDirectory)\testbinzip\*.zip' | ||
destinationFolder: '$(System.ArtifactsDirectory)\testbins' | ||
cleanDestinationFolder: true | ||
overwriteExistingFiles: true | ||
condition: and(eq(variables['System.TeamProject'], 'public'), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: PowerShell@2 | ||
displayName: Run Tests | ||
inputs: | ||
targetType: 'inline' | ||
script: '.\CIRunDrts.cmd' | ||
workingDirectory: '$(System.ArtifactsDirectory)\testbins' | ||
condition: and(eq(variables['System.TeamProject'], 'public'), ne(variables['_Platform'], 'arm64')) | ||
|
||
- task: CopyFiles@2 | ||
inputs: | ||
SourceFolder: 'C:\Users\cloudtest\AppData\Roaming\QualityVault\Run\Report\' | ||
Contents: '**' | ||
TargetFolder: '$(System.DefaultWorkingDirectory)\Results\' | ||
CleanTargetFolder: true | ||
OverWrite: true | ||
condition: and(eq(variables['System.TeamProject'], 'public'), eq(variables['_Platform'], 'x64'), eq(variables['_BuildConfig'], 'Release')) | ||
|
||
- task: CopyFiles@2 | ||
inputs: | ||
SourceFolder: 'C:\Users\cloudtest\AppData\Roaming\QualityVault\Run\Report\' | ||
Contents: '**' | ||
TargetFolder: '$(System.DefaultWorkingDirectory)\ResultsX86\' | ||
CleanTargetFolder: true | ||
OverWrite: true | ||
condition: and(eq(variables['System.TeamProject'], 'public'), eq(variables['_Platform'], 'x86'), eq(variables['_BuildConfig'], 'Release')) | ||
|
||
- task: PublishPipelineArtifact@1 | ||
inputs: | ||
artifactName: 'TestResultsX64' | ||
targetPath: '$(System.DefaultWorkingDirectory)\Results\' | ||
condition: and(eq(variables['System.TeamProject'], 'public'), eq(variables['_Platform'], 'x64'), eq(variables['_BuildConfig'], 'Release')) | ||
|
||
- task: PublishPipelineArtifact@1 | ||
inputs: | ||
artifactName: 'TestResultsX86' | ||
targetPath: '$(System.DefaultWorkingDirectory)\ResultsX86\' | ||
condition: and(eq(variables['System.TeamProject'], 'public'), eq(variables['_Platform'], 'x86'), eq(variables['_BuildConfig'], 'Release')) | ||
|
||
- task: PublishTestResults@2 | ||
inputs: | ||
testResultsFormat: 'XUnit' | ||
testResultsFiles: 'testResults.xml' | ||
searchFolder: '$(System.DefaultWorkingDirectory)\Results\' | ||
testRunTitle: 'Test results' | ||
mergeTestResults: true | ||
condition: eq(variables['System.TeamProject'], 'public') |