将开发代理与 Azure Pipelines 配合使用

概览
目标: 在 Azure Pipelines 中使用开发代理
时间: 20 分钟
插件: 各种
先决条件:设置开发代理、Azure DevOps

将开发代理与 Azure Pipelines 配合使用是一种在受控环境中测试应用程序的好方法。 按照以下步骤,可以将开发代理与 Azure Pipelines 配合使用。

注释

在本文中,我们将使用适用于 Azure Pipelines 的 Ubuntu 代理。

安装 Dev Proxy 并将其缓存

首先,使用脚本任务在代理上安装开发代理。

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
  displayName: 'Install Dev Proxy'

默认情况下,这将安装最新版本的开发代理。 如果要安装特定版本,可以通过在脚本末尾传递版本来指定它:

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" v1.0.0
  displayName: 'Install Dev Proxy v1.0.0'

建议的做法是缓存开发代理安装文件以加快后续运行速度。 可以将任务 Cache 用于此目的。 下面介绍了如何执行此操作:

variables:
- name: DEV_PROXY_VERSION
  value: v1.0.0
- name: DEV_PROXY_CACHE_RESTORED
  value: 'false'

steps:
- task: Cache@2
  inputs:
    key: '"dev-proxy-$(DEV_PROXY_VERSION)"'
    path: ./devproxy
    cacheHitVar: DEV_PROXY_CACHE_RESTORED
  displayName: Cache Dev Proxy

- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" $DEV_PROXY_VERSION
  displayName: 'Install Dev Proxy'
  condition: ne(variables.DEV_PROXY_CACHE_RESTORED, 'true')

启动开发代理

在 CI/CD 管道中启动 Dev Proxy 时,可以从脚本启动,也可以内嵌脚本。 准备好脚本后,请在管道文件中调用它:

- script: bash ./run.sh
  displayName: 'Start Dev Proxy'

控制开发代理

若要控制开发代理,可以使用 开发代理 API。 例如,若要开始录制请求,可以将 POST 请求发送到 /proxy 终结点:

- script: |
    curl -X POST http://localhost:8897/proxy -H "Content-Type: application/json" -d '{"recording": true}'
  displayName: 'Start recording'

将开发代理日志作为项目上传

在 CI/CD 管道中运行开发代理时,可能需要稍后分析日志。 若要保留开发代理日志,可以将它们作为项目上传:

- task: PublishPipelineArtifact@1
  displayName: Upload Dev Proxy logs
  inputs:
    targetPath: $(LOG_FILE)
    artifact: $(LOG_FILE)

上传 Dev Proxy 报告

如果使用开发代理分析请求,则可能还想将报表作为项目上传:

- script: |
    mkdir -p $(Build.ArtifactStagingDirectory)/Reports
    for file in *Reporter*; do
      if [ -f "$file" ]; then
        cp "$file" $(Build.ArtifactStagingDirectory)/Reports
      fi
    done
  displayName: 'Copy reports to artifact directory'

- task: PublishPipelineArtifact@1
  displayName: Upload Dev Proxy reports
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/Reports'
    artifact: 'Reports'

示例管道文件

下面是如何在 Azure Pipeline 中使用开发人员代理的简单示例。 此工作流安装开发代理,启动它,使用 curl 发送请求,然后显示日志。

trigger:
- main
- dev

pool:
  vmImage: ubuntu-latest

variables:
- name: DEV_PROXY_VERSION
  value: v1.0.0

steps:
- script: bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" $DEV_PROXY_VERSION
  displayName: 'Install Dev Proxy'

- script: bash ./start.sh
  displayName: 'Start Dev Proxy'

- script: |
     curl -ikx http://127.0.0.1:8000 https://jsonplaceholder.typicode.com/posts
  displayName: 'Send request'

- script: |
    curl -X POST http://localhost:8897/proxy/stop
  displayName: 'Stop Dev Proxy'

- script: |
    echo "Dev Proxy logs:"
    cat devproxy.log
  displayName: 'Show Dev Proxy logs'

另请参阅