Azure 多级管道未按预期工作
下面我有一个相对简单的YAML管道,用于执行以下操作Azure 多级管道未按预期工作,azure,azure-devops,yaml,azure-pipelines,devops,Azure,Azure Devops,Yaml,Azure Pipelines,Devops,下面我有一个相对简单的YAML管道,用于执行以下操作 恢复任何依赖项 建立任何项目 运行任何测试 公布结果 这是在具有多个作业的多个阶段中分割的 问题是这些工作似乎没有意识到以前的工作。这使得这些步骤需要更长的时间才能完成和/或产生意外的结果。例如,发布工件不发布任何内容,因为它没有要发布的前一个作业中的工件 如何使阶段和作业与之前的操作一致,以便管道按预期工作 trigger: - master stages: - stage: RestoreDependancies jobs:
- 恢复任何依赖项
- 建立任何项目
- 运行任何测试
- 公布结果
trigger:
- master
stages:
- stage: RestoreDependancies
jobs:
- job: RestoreNuGetPackages
pool:
vmImage: 'windows-latest'
steps:
- task: NuGetToolInstaller@1
displayName: 'Install NuGet'
inputs:
versionSpec:
checkLatest: true
- task: NuGetCommand@2
displayName: 'Restore NuGet'
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
- stage: Build
dependsOn: RestoreDependancies
jobs:
- job: BuildVisualStudioProjects
pool:
vmImage: 'windows-latest'
steps:
- task: DotNetCoreCLI@2
displayName: 'Build Projects'
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--configuration "Release"'
- stage: Test
dependsOn: Build
jobs:
- job: TestVisualStudioProjects
pool:
vmImage: 'windows-latest'
steps:
- task: DotNetCoreCLI@2
displayName: 'Run all Unit Tests'
inputs:
command: 'test'
projects: '**/*Tests/*.csproj'
arguments: '--configuration "Release" --collect "Code coverage"'
- stage: Publish
dependsOn:
- Build
- Test
jobs:
- job: PublishTestResults
pool:
vmImage: 'windows-latest'
steps:
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'XUnit'
testResultsFiles: '**/TEST-*.xml'
failTaskOnFailedTests: true
buildConfiguration: 'Release'
- job: PublishArtifacts
pool:
vmImage: 'windows-latest'
steps:
- task: CopyFiles@2
displayName: 'Copy Artifacts'
inputs:
SourceFolder: '$(system.defaultworkingdirectory)'
Contents: '**\bin\**' # Contents: '**\bin\Release\**'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
阶段不打算恢复/构建/测试/发布工件,所有这些步骤都应该在一个阶段中,包含一个作业和多个步骤 每个阶段都是一个新的新代理,代理再次下载代码,这就是为什么它需要花费大量时间并且没有工件发布,每个阶段都不知道其他阶段(默认情况下)
那么你什么时候想要一个新的舞台?例如,对于运行功能测试或部署应用程序。阶段不用于恢复/构建/测试/发布工件,所有这些步骤都应该在一个阶段中,一个作业和多个步骤 每个阶段都是一个新的新代理,代理再次下载代码,这就是为什么它需要花费大量时间并且没有工件发布,每个阶段都不知道其他阶段(默认情况下)
那么你什么时候想要一个新的舞台?例如,用于运行功能测试或部署应用程序。谢谢您的回答。我很感激。您说过
“每个阶段都不知道其他阶段(默认情况下)”
。我如何让每个阶段意识到前一个阶段。例如,如果我想运行功能测试或部署我的应用程序,我如何从上一阶段获得结果来实现这一点?Hi@Dan,为此,您需要在构建阶段结束时使用发布管道工件任务发布工件,并在第二阶段使用下载管道工件任务下载文件。感谢您的回答。我很感激。您说过“每个阶段都不知道其他阶段(默认情况下)”
。我如何让每个阶段意识到前一个阶段。例如,如果我想运行功能测试或部署我的应用程序,我如何从上一阶段获得结果来实现这一点?Hi@Dan,为此,您需要在构建阶段结束时使用发布管道工件任务发布工件,在第二阶段使用下载管道工件任务下载文件。