如果你在同一个代理中运行两次提交会发生什么: 这是我的多阶段管道示例:
pool: Default
stages:
- stage: A
jobs:
- job: A
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.SourcesDirectory)'
artifact: 'drop'
publishLocation: 'pipeline'
- stage: B
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool: Default
workspace:
clean: all
environment: 'env'
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
我在环境中添加了批准检查。我的运行顺序是stage A(commit1)->stage A(commit2)->stage B(commit1)->stage B(commit2)
。
- stage A(commit1):此作业将检查 commit1 的源代码并将文件发布到 commit1 的 Sources 目录中。
- stage A(commit2):该作业将检查 commit2 的源代码并在 commit2 的 Sources 目录中发布文件。
- stage B(commit1):这是一个部署作业,默认不会检出资源。
- 部署作业将按预期下载 commit1 的工件。
- 如果我不清理工作区,它将继续使用commit2的源代码。这可能会导致一些问题。
- 如果我在这个阶段添加一个结帐步骤。它将检查 commit1 的来源。
因此,您可以将签出步骤和清理工作区添加到部署作业中。非部署作业会自动检出源代码,它将使用正确的源代码。