是否可以让 Azure 托管构建代理在管道阶段之间持续存在

Is it possible to have an Azure hosted build agent persist between pipeline stages

我有一个包含 2 个阶段的管道 - build/test 阶段和一个在 build/test 阶段之后清理外部资源的拆解阶段。拆卸阶段取决于在 build/test 阶段生成的一些状态信息。我正在尝试使用 Azure 托管代理来执行此操作。问题是我现在的方式是,每个阶段都会部署一个新代理,所以我失去了拆卸阶段所需的状态。

我的管道看起来像这样:

trigger:
- master

stages:
- stage: Build_stage
  jobs:
  - job: Build_job
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: InstallSomeTool@
    - script: invoke someTool
    - script: run some test

- stage: Teardown_stage
  condition: always()
  jobs:
  - job: Teardown_job
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - script: invoke SomeTool --cleanup

拆解阶段失败,因为它是一个全新的代理,对之前调用 someTool 脚本创建的状态一无所知。

我正在尝试这样做,因为构建阶段会在外部创建一些我希望每次都清理的资源,即使构建阶段失败也是如此。

Is it possible to have an Azure hosted build agent persist between pipeline stages?

不,你不能。托管代理都是由服务器随机分配的。您不能使用任何脚本或命令来指定特定的脚本或命令。

既然你说Build_Stage会在外部创建一些资源,所以你要执行clean up来清理它。

事实上,为此,您可以执行此 clean up 命令作为 Build_Stage 中的最后一步。如果这样的话,不管是用hosted还是private agent都不会影响你想要的。