如何保存有关哪个构建代理运行作业的信息,然后在以后重新使用该信息

问题描述 投票:0回答:1

在 Azure Devops 中,假设您有三个在同一 Windows Server 上运行的自托管代理(A1、A2、A3),并且它们都是默认代理池的一部分。当我们构建代码时,我们有一个构建阶段和一个发布阶段。这些可能会相隔好几个小时,并且不是一个接一个地运行。

假设代理 A1 构建了工件。现在,在稍后阶段,我想将工件部署给客户。为了让它工作,它需要访问正确的文件和工件。现在的问题是,我的发布在稍后阶段运行,如果代理 A1 现在被占用,它将选择下一个可用的代理,例如A2,但是该代理无法找到工件,因为它位于不同的文件夹中,并且发布作业失败。

所以,我的问题是: 有没有办法在发布阶段使用相同的代理?

azure-devops cicd
1个回答
0
投票

构建代理之间不需要有任何依赖关系。

如果阶段在同一管道中运行,您可以使用构建工件在不同阶段之间共享工件。

如果您需要在不同管道之间共享工件,请使用管道工件

使用构建工件的工作示例(同一管道):

trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: A
  displayName: Stage A
  jobs:
  - job: PublishArtifact
    displayName: Publish Artifact
    steps:
    - script: |
        echo "Creating dummy artifact..."
        echo "Hello, World!" > $(Build.ArtifactStagingDirectory)/dummy.txt
      displayName: Create Dummy Artifact
    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: $(Build.ArtifactStagingDirectory)
        artifactName: drop
      displayName: Publish artifact

- stage: B
  displayName: Stage B
  dependsOn: A
  jobs:
  - job: DownloadArtifact
    displayName: Download Artifact
    steps:
    - task: DownloadBuildArtifacts@0
      inputs:
        buildType: 'current'
        artifactName: 'drop'
        downloadPath: '$(Agent.TempDirectory)'
      displayName: Download artifact
    - script: |
        echo "Displaying dummy artifact..."
        cat $(Agent.TempDirectory)/drop/dummy.txt
      displayName: Output Artifact Content

运行构建,您可以通过单击

1 artifact
来查看生成的工件:

© www.soinside.com 2019 - 2024. All rights reserved.