You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps Server跨项目共享自托管环境及资源的方法咨询

Azure DevOps Server跨项目共享自托管部署环境的可行方案

针对你用./config.cmd给项目A绑定了自托管机器,现在要跨项目B共享且保证机器仅跑一个服务的需求,以下是几个可行的方案:

方案1:迁移到项目集合级代理池(全版本通用)

这是跨项目共享自托管资源的标准做法,不受Server版本限制:

  • 先在项目A的环境资源列表里解绑当前的自托管代理,或者直接在机器上重新配置
  • 在自托管Windows机器上重新执行./config.cmd,配置时选择项目集合级代理池(不要选绑定单个项目的环境),完成后代理会进入集合池,所有项目都能访问
  • 项目B的YAML里直接指定这个集合池:pool: { name: '你的集合级代理池名称' }
  • 要确保机器同一时间只跑一个服务,在代理池的代理详情页,把Maximum number of jobs per agent设为1,限制并发任务数

方案2:跨项目共享环境(Azure DevOps Server 2022+支持)

如果你的Server版本是2022或更新,支持直接共享项目级环境:

  • 进入项目A的「环境」页面,找到目标环境,点击右上角设置图标进入权限配置
  • 添加项目B的团队账号,给它「使用环境」的权限
  • 项目B的YAML里直接引用项目A的环境:environment: '项目A名称/你的环境名称'
  • 同样,在环境的资源设置里开启「独占资源」,或者把代理并发数设为1,避免多任务同时运行

方案3:用部署组兼容多场景

部署组支持跨项目访问,还能兼容经典发布流程,适合有混合需求的场景:

  • 在项目A里创建一个部署组,复制它的注册脚本到自托管机器上执行(替换原来的./config.cmd),把机器加入这个部署组
  • 在部署组的权限设置里,添加项目B的团队,赋予「使用部署组」的权限
  • 项目B的YAML部署作业可以这样写:
    jobs:
    - deployment: DeployToSharedMachine
      displayName: 部署到共享机器
      environment:
        name: 项目A名称/你的部署组名称
        resourceType: deploymentGroup
      strategy:
        runOnce:
          deploy:
            steps:
            - script: echo 开始部署到共享机器
    
  • 限制单任务运行的话,在部署组的代理设置里把并发数设为1即可

内容的提问来源于stack exchange,提问作者littletree71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 01:42:07