Azure 管道,多阶段 YAML 管道在构建服务器上使用相同的工作目录。怎样才不会腐败

Azure pipeline, muti stage YAML pipeline using same work directory on build server. How does it not corrupt

澄清和更正:

我们有 Azure,一个具有多阶段和审批者的 azure devops YAML 管道。我注意到 运行 同一管道的不同构建版本在构建服务器上使用相同的工作目录。

这如何不导致内容损坏,例如,如果管道 运行s 同时用于不同的构建版本?

例如,如果较新的管道 运行 签出源代码,而另一个 运行 正在为其自己的版本构建和创建工件怎么办?我已经检查了两个并发构建的当前路径,它是相同的。

如果你运行在同一个代理中两次提交会发生什么: 这是我的多级管道示例:

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)'

我在环境中添加了批准检查。我的 运行ning 订单是 stage A(commit1)->stage A(commit2)->stage B(commit1)->stage B(commit2) .

  1. A 阶段(提交 1): 此作业将检出 commit1 的源代码并在 commit1 的 Sources 目录中发布文件。
  2. A 阶段(提交 2): 此作业将检查 commit2 的源代码并在 commit2 的源目录中发布文件。
  3. 阶段 B(提交 1): 这是一个部署作业,默认情况下不会检出资源。
    • 部署作业将按预期下载 commit1 的工件。
    • 如果我不清理工作空间,它会继续使用commit2的源代码。这可能会导致一些问题。
    • 如果我在这个阶段添加结帐步骤。它将检查 commit1 的来源。

因此您可以将结帐步骤和清理工作区添加到部署作业中。非部署作业会自动检出源代码,它将使用正确的源代码。