зеркало из https://github.com/dotnet/wpf.git
231 строка
9.7 KiB
YAML
231 строка
9.7 KiB
YAML
#
|
|
# 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: false
|
|
repoName: dotnet/wpf
|
|
|
|
jobs:
|
|
- 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: 180 # 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:
|
|
# needed for signing
|
|
- name: _TeamName
|
|
value: DotNetCore
|
|
- name: _SignType
|
|
value: test
|
|
- 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 }}
|
|
- ${{ 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: test
|
|
- 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
|
|
|
|
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\common\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')))
|
|
|
|
- task: PowerShell@2
|
|
displayName: Replace WPF binaries
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: '.\eng\copy-wpf.ps1 -testhost -destination $(Build.SourcesDirectory)\\.dotnet\ -$(_BuildConfig) -arch $(_Platform)'
|
|
condition: ne(variables['_Platform'], 'arm64')
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
inputs:
|
|
buildType: 'specific'
|
|
project: '7ea9116e-9fac-403d-b258-b31fcf1bb293'
|
|
definition: '479'
|
|
buildVersionToDownload: latestFromBranch
|
|
branchName: refs/heads/master
|
|
checkDownloadedFiles: true
|
|
artifactName: Tests.$(_BuildConfig).$(_Platform).zip
|
|
downloadPath: '$(System.ArtifactsDirectory)\testbinzip\'
|
|
condition: 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: ne(variables['_Platform'], 'arm64')
|
|
|
|
- task: PowerShell@2
|
|
displayName: Set Path Vars
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: $env:path = '$(Build.SourcesDirectory)\\.dotnet\;' + $env:path
|
|
workingDirectory: '$(System.ArtifactsDirectory)\testbins'
|
|
condition: ne(variables['_Platform'], 'arm64')
|
|
continueOnError: true
|
|
|
|
- task: PowerShell@2
|
|
displayName: Echo Path Vars
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: echo $env
|
|
workingDirectory: '$(System.ArtifactsDirectory)\testbins'
|
|
condition: ne(variables['_Platform'], 'arm64')
|
|
continueOnError: true
|
|
|
|
- task: PowerShell@2
|
|
displayName: Run DRTs
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: '.\RunDrts.cmd'
|
|
workingDirectory: '$(System.ArtifactsDirectory)\testbins'
|
|
condition: ne(variables['_Platform'], 'arm64')
|
|
continueOnError: true
|
|
|
|
|
|
- task: PowerShell@2
|
|
displayName: Run Microsuites
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: '.\RunTests.cmd /Keywords=Microsuite'
|
|
workingDirectory: '$(System.ArtifactsDirectory)\testbins'
|
|
condition: ne(variables['_Platform'], 'arm64')
|
|
continueOnError: true
|