зеркало из https://github.com/dotnet/wpf.git
217 строки
9.6 KiB
YAML
217 строки
9.6 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: 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:
|
||
|
# 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
|
||
|
${{ 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\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 .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: 'specific'
|
||
|
buildId: '34592'
|
||
|
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'))
|
||
|
|