能否更改Azure Pipelines自托管代理所使用的本地子文件夹?
Azure DevOps自托管代理不同分支配置独立工作目录方案
方案1:零YAML修改(推荐)
你不需要修改任何现有管道代码,直接在Azure DevOps项目中新建独立的构建管道即可:
- 新建管道时选择同一份代码仓库,将管道默认分支设置为你新创建的永久发布分支
- 保存后运行一次新管道,自托管代理会自动为新管道分配独立的工作目录(如原有管道对应
c:\agent\work\24,新管道会自动分配c:\agent\work\25等未占用的编号)
该方案的底层逻辑是自托管代理的工作目录编号与管道ID一一绑定,不同管道天然使用独立目录,完全满足两个分支构建结果隔离的需求。
方案2:少量YAML修改(单管道场景)
如果你不想维护多套管道,仅需在原有YAML中新增不到10行分支判断配置即可实现目录隔离,原有构建步骤无需任何调整:
jobs: - job: Build variables: # 替换为你实际的发布分支名 ${{ if eq(variables['Build.SourceBranchName'], 'release-xxx') }}: Build.Repository.LocalPath: 'c:\agent\work\25\s' Build.ArtifactStagingDirectory: 'c:\agent\work\25\a' Build.BinariesDirectory: 'c:\agent\work\25\b' # 原有分支的默认目录配置 ${{ else }}: Build.Repository.LocalPath: 'c:\agent\work\24\s' Build.ArtifactStagingDirectory: 'c:\agent\work\24\a' Build.BinariesDirectory: 'c:\agent\work\24\b' steps: # 此处保留你原来的所有构建步骤即可
注意:使用该方案时需确保代理运行账户对你指定的目录有读写权限,避免构建时报权限错误。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

