概览
目标: 在 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'