зеркало из https://github.com/dotnet/msbuild.git
376 строки
14 KiB
YAML
376 строки
14 KiB
YAML
trigger:
|
|
- main
|
|
- exp/*
|
|
- vs*
|
|
|
|
jobs:
|
|
- job: CheckVersionBumpOnReleaseBranches
|
|
displayName: "Check Version Bump On Release Branches"
|
|
steps:
|
|
- powershell: |
|
|
$versionsFile = "eng/Versions.props"
|
|
$changedFiles = git diff --name-only HEAD HEAD~1
|
|
$changedVersionsFile = $changedFiles | Where-Object { $_ -eq $versionsFile }
|
|
$isInitialCommit = $false
|
|
$isVersionBumped = $false
|
|
if ($changedVersionsFile -ne $null) {
|
|
$difference = git diff HEAD~1 $versionsFile
|
|
$changedContent = $difference -join "%"
|
|
# 'DotNetFinalVersionKind' is expected to be added only during the initial setup of the release branch
|
|
$initialCommitPattern = '-\s*<VersionPrefix>\d+\.\d+\.\d+<\/VersionPrefix>%.*\+\s*<VersionPrefix>\d+\.\d+\.\d+<\/VersionPrefix><DotNetFinalVersionKind>release<\/DotNetFinalVersionKind>'
|
|
$isInitialCommit = $changedContent -match $initialCommitPattern
|
|
$pattern = '-\s*<VersionPrefix>\d+\.\d+\.(?<previous>\d+)<\/VersionPrefix>.*%\+\s*<VersionPrefix>\d+\.\d+\.(?<current>\d+)<\/VersionPrefix>'
|
|
if (!($isInitialCommit) -and ($changedContent -match $pattern)) {
|
|
try {
|
|
$previousPatch = [Convert]::ToInt32($Matches.previous)
|
|
$currentPatch = [Convert]::ToInt32($Matches.current)
|
|
if ($currentPatch -gt $previousPatch) {
|
|
$isVersionBumped = $true
|
|
}
|
|
} catch {
|
|
Write-Host "An error occurred during conversion: $_"
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!($isInitialCommit -or $isVersionBumped)) {
|
|
throw "Hello! I noticed that you're targeting one of our servicing branches. You need to increase the revision version number (the last part) of 'VersionPrefix' in eng/Versions.props."
|
|
}
|
|
condition: startsWith(variables['System.PullRequest.TargetBranch'], 'vs')
|
|
displayName: "Check if patch version is bumped up"
|
|
|
|
- job: IfOnlyDocumentionChanged
|
|
dependsOn: CheckVersionBumpOnReleaseBranches
|
|
displayName: "Check whether Test Results need to be executed"
|
|
steps:
|
|
- powershell: |
|
|
$changedFiles = git diff --name-only HEAD HEAD~1
|
|
$changedFiles
|
|
$onlyDocChanged = 1
|
|
foreach ($file in $changedFiles) {
|
|
$isUnderDocumentation = $file -match "^documentation/"
|
|
if(!$isUnderDocumentation)
|
|
{
|
|
$onlyDocChanged = 0
|
|
break;
|
|
}
|
|
}
|
|
Write-Host "##vso[task.setvariable variable=onlyDocChanged;isoutput=true]$onlyDocChanged"
|
|
name: SetIfOnlyDocumentionChangedVaribale
|
|
displayName: Check whether only documentation has been updated
|
|
- job: BootstrapMSBuildOnFullFrameworkWindows
|
|
dependsOn: IfOnlyDocumentionChanged
|
|
variables:
|
|
onlyDocChanged: $[ dependencies.IfOnlyDocumentionChanged.outputs['SetIfOnlyDocumentionChangedVaribale.onlyDocChanged'] ]
|
|
displayName: "Windows Full"
|
|
pool:
|
|
vmImage: 'windows-2022'
|
|
steps:
|
|
- task: BatchScript@1
|
|
displayName: cibuild_bootstrapped_msbuild.cmd
|
|
inputs:
|
|
filename: 'eng/cibuild_bootstrapped_msbuild.cmd'
|
|
arguments: -onlyDocChanged $(onlyDocChanged)
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Framework Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-full Full Framework'
|
|
testRunner: XUnit
|
|
testResultsFiles: 'artifacts/TestResults/Debug/*UnitTests_net472*.xml'
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-full .NET'
|
|
testRunner: XUnit
|
|
testResultsFiles: |
|
|
artifacts/TestResults/**/*.xml
|
|
!**/*UnitTests_net472*.xml
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CmdLine@2
|
|
displayName: 'Set flag to publish Verify *.received.* files when test step fails'
|
|
condition: failed()
|
|
inputs:
|
|
script: 'echo "##vso[task.setvariable variable=publishverify]Yes"'
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: logs'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/log/Debug'
|
|
ArtifactName: 'FullOnWindows build logs'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: TestResults'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/TestResults'
|
|
ArtifactName: 'FullOnWindows test logs'
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CopyFiles@2
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
displayName: 'Copy Verify *.received.* files to Artifact Staging'
|
|
inputs:
|
|
contents: '**\*.received.*'
|
|
targetFolder: '$(Build.ArtifactStagingDirectory)\Verify'
|
|
cleanTargetFolder: true
|
|
overWrite: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Verify *.received.* files as Artifacts'
|
|
name: 'verifypublish'
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
inputs:
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)\Verify'
|
|
ArtifactName: 'Windows-on-full Verify $(System.JobAttempt)'
|
|
|
|
|
|
- job: BootstrapMSBuildOnCoreWindows
|
|
displayName: "Windows Core"
|
|
dependsOn: IfOnlyDocumentionChanged
|
|
variables:
|
|
onlyDocChanged: $[ dependencies.IfOnlyDocumentionChanged.outputs['SetIfOnlyDocumentionChangedVaribale.onlyDocChanged'] ]
|
|
pool:
|
|
vmImage: 'windows-2022'
|
|
steps:
|
|
- task: BatchScript@1
|
|
displayName: cibuild_bootstrapped_msbuild.cmd
|
|
inputs:
|
|
filename: 'eng/cibuild_bootstrapped_msbuild.cmd'
|
|
arguments: '-msbuildEngine dotnet -onlyDocChanged $(onlyDocChanged)'
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Framework Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-Core Full Framework'
|
|
testRunner: XUnit
|
|
testResultsFiles: 'artifacts/TestResults/Debug/*UnitTests_net472*.xml'
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-Core .NET'
|
|
testRunner: XUnit
|
|
testResultsFiles: |
|
|
artifacts/TestResults/**/*.xml
|
|
!**/*UnitTests_net472*.xml
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: logs'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/log/Debug'
|
|
ArtifactName: 'CoreOnWindows build logs'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: TestResults'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/TestResults'
|
|
ArtifactName: 'CoreOnWindows test logs'
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
|
|
- job: FullReleaseOnWindows
|
|
displayName: "Windows Full Release (no bootstrap)"
|
|
dependsOn: IfOnlyDocumentionChanged
|
|
variables:
|
|
onlyDocChanged: $[ dependencies.IfOnlyDocumentionChanged.outputs['SetIfOnlyDocumentionChangedVaribale.onlyDocChanged'] ]
|
|
pool:
|
|
${{ if eq(variables['System.TeamProject'], 'public') }}:
|
|
name: NetCore-Public
|
|
demands: ImageOverride -equals windows.vs2022preview.amd64.open
|
|
${{ if ne(variables['System.TeamProject'], 'public') }}:
|
|
name: VSEngSS-MicroBuild2022-1ES
|
|
demands: agent.os -equals Windows_NT
|
|
steps:
|
|
- task: BatchScript@1
|
|
displayName: cibuild.cmd
|
|
inputs:
|
|
filename: 'eng/cibuild.cmd'
|
|
arguments: '-configuration Release -test'
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: BatchScript@1
|
|
displayName: cibuild.cmd without test
|
|
inputs:
|
|
filename: 'eng/cibuild.cmd'
|
|
arguments: '-configuration Release'
|
|
condition: eq(variables.onlyDocChanged, 1)
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Framework Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-full Release Full Framework'
|
|
testRunner: XUnit
|
|
testResultsFiles: 'artifacts/TestResults/Release/*UnitTests_net472*.xml'
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Test Results
|
|
inputs:
|
|
testRunTitle: 'Windows-on-full Release .NET'
|
|
testRunner: XUnit
|
|
testResultsFiles: |
|
|
artifacts/TestResults/**/*.xml
|
|
!**/*UnitTests_net472*.xml
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: logs'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/Log/Release'
|
|
ArtifactName: 'FullOnWindows Release build logs'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: TestResults'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/TestResults'
|
|
ArtifactName: 'FullOnWindows Release test logs'
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
|
|
# Unavailable in dnceng-public as of 9/1/2022; should be restored soon.
|
|
# - job: RichCodeNavIndex
|
|
# displayName: "Windows Code Indexing"
|
|
# pool:
|
|
# vmImage: 'windows-2022'
|
|
# steps:
|
|
# - task: BatchScript@1
|
|
# displayName: build.cmd
|
|
# inputs:
|
|
# filename: 'build.cmd'
|
|
# - task: RichCodeNavIndexer@0
|
|
# displayName: RichCodeNav Upload
|
|
# inputs:
|
|
# languages: 'csharp'
|
|
# continueOnError: true
|
|
# condition: succeeded()
|
|
|
|
- job: CoreBootstrappedOnLinux
|
|
displayName: "Linux Core"
|
|
dependsOn: IfOnlyDocumentionChanged
|
|
variables:
|
|
onlyDocChanged: $[ dependencies.IfOnlyDocumentionChanged.outputs['SetIfOnlyDocumentionChangedVaribale.onlyDocChanged'] ]
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- bash: . 'eng/cibuild_bootstrapped_msbuild.sh' --onlyDocChanged $(onlyDocChanged)
|
|
displayName: CI Build
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Test Results
|
|
inputs:
|
|
testRunTitle: 'Linux .NET'
|
|
testRunner: XUnit
|
|
testResultsFiles: |
|
|
artifacts/TestResults/**/*.xml
|
|
!**/*UnitTests_net472*.xml
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CmdLine@2
|
|
displayName: 'Set flag to publish Verify *.received.* files when test step fails'
|
|
condition: failed()
|
|
inputs:
|
|
script: 'echo "##vso[task.setvariable variable=publishverify]Yes"'
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: logs'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/log/Debug'
|
|
ArtifactName: 'CoreOnLinux build logs'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: TestResults'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/TestResults'
|
|
ArtifactName: 'CoreOnLinux test logs'
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CopyFiles@2
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
displayName: 'Copy Verify *.received.* files to Artifact Staging'
|
|
inputs:
|
|
contents: '**/*.received.*'
|
|
targetFolder: '$(Build.ArtifactStagingDirectory)/Verify'
|
|
cleanTargetFolder: true
|
|
overWrite: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Verify *.received.* files as Artifacts'
|
|
name: 'verifypublish'
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
inputs:
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)/Verify'
|
|
ArtifactName: 'Linux Verify $(System.JobAttempt)'
|
|
|
|
- job: CoreOnMac
|
|
displayName: "macOS Core"
|
|
dependsOn: IfOnlyDocumentionChanged
|
|
variables:
|
|
onlyDocChanged: $[ dependencies.IfOnlyDocumentionChanged.outputs['SetIfOnlyDocumentionChangedVaribale.onlyDocChanged'] ]
|
|
pool:
|
|
vmImage: 'macOS-latest'
|
|
steps:
|
|
- bash: . 'eng/cibuild_bootstrapped_msbuild.sh' --onlyDocChanged $(onlyDocChanged)
|
|
displayName: CI Build
|
|
- task: PublishTestResults@2
|
|
displayName: Publish .NET Test Results
|
|
inputs:
|
|
testRunTitle: 'macOS .NET'
|
|
testRunner: XUnit
|
|
testResultsFiles: |
|
|
artifacts/TestResults/**/*.xml
|
|
!**/*UnitTests_net472*.xml
|
|
publishRunAttachments: true
|
|
mergeTestResults: true
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CmdLine@2
|
|
displayName: 'Set flag to publish Verify *.received.* files when test step fails'
|
|
condition: failed()
|
|
inputs:
|
|
script: 'echo "##vso[task.setvariable variable=publishverify]Yes"'
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: logs'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/log/Debug'
|
|
ArtifactName: 'CoreOnMac build logs'
|
|
continueOnError: true
|
|
condition: always()
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Artifact: TestResults'
|
|
inputs:
|
|
PathtoPublish: 'artifacts/TestResults'
|
|
ArtifactName: 'CoreOnMac test logs'
|
|
continueOnError: true
|
|
condition: eq(variables.onlyDocChanged, 0)
|
|
- task: CopyFiles@2
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
displayName: 'Copy Verify *.received.* files to Artifact Staging'
|
|
inputs:
|
|
contents: '**/*.received.*'
|
|
targetFolder: '$(Build.ArtifactStagingDirectory)/Verify'
|
|
cleanTargetFolder: true
|
|
overWrite: true
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Verify *.received.* files as Artifacts'
|
|
name: 'verifypublish'
|
|
condition: eq(variables['publishverify'], 'Yes')
|
|
inputs:
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)/Verify'
|
|
ArtifactName: 'macOS Verify $(System.JobAttempt)'
|
|
|
|
- template: /eng/common/templates/jobs/source-build.yml
|