wpf/eng/wpfautomatedtests.yml

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