优化代理配置

使用自托管代理替代微软托管代理,尤其在频繁构建的场景下。自托管代理可减少排队时间,且能根据项目需求配置更高性能的硬件(如CPU、内存)。确保代理位于靠近代码仓库和数据中心的区域,降低网络延迟。

并行执行任务

将流水线任务拆分为独立的作业(Jobs),通过dependsOnparallel策略实现并行执行。例如在YAML中定义多任务并行:

jobs:
- job: BuildWindows
  steps: [...]
- job: BuildLinux
  steps: [...]
  dependsOn: []  # 取消依赖以并行运行

缓存依赖项

利用管道缓存功能减少重复下载。例如NuGet包或npm模块可通过以下YAML缓存:

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    path: '$(npm_config_cache)'
    restoreKeys: 'npm | "$(Agent.OS)"'

限制非必要任务

通过condition属性跳过低优先级任务。例如仅在主分支触发测试:

- script: run_tests.sh
  condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')

优化代理容量规划

监控代理池的利用率,通过Azure DevOps的Analytics功能识别瓶颈。动态扩展代理数量以匹配负载高峰,避免过度配置造成资源浪费。

减少工件传输时间

使用增量构建策略,仅传输变更的文件。对于大型制品,考虑分段上传或启用压缩。在发布阶段选择性下载必要工件,而非全部。

定期清理代理工作空间

在流水线结束时添加清理步骤,避免残留文件占用磁盘空间。可通过脚本或内置任务实现:

- task: DeleteFiles@1
  inputs:
    SourceFolder: '$(Agent.BuildDirectory)'
    Contents: '**/*'

更多推荐