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

Azure Pipeline执行Cypress测试无法访问内部测试网站的解决方案咨询

问题描述

我有一套Cypress自动化测试用例,一部分针对无法外网访问的内部站点,另一部分针对公网站点。在内网机器上执行时所有测试都能跑通,但在Azure DevOps Pipeline里用ubuntu-latest托管虚拟机执行时,公网测试正常,内网测试因为无法访问站点失败。需要解决Azure DevOps执行环境访问内网的问题,或者其他可行方案。

我的Pipeline YAML配置如下:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:

  - task: Yarn@3
    displayName: yarn install
    inputs:
      projectDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
      arguments: install

  - task: CmdLine@2
    displayName: 'Run Cypress Tests'
    inputs:
      workingDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
      script: yarn cypress run --browser chrome 
解决方案

1. 使用自托管代理(最直接有效)

微软托管的ubuntu-latest虚拟机处于公网环境,无法直接访问内部站点。你可以在内网机器上部署Azure DevOps自托管代理,让测试在这个内网代理上执行:

  • 在内网机器上下载并配置Azure DevOps自托管代理,将其加入你的项目专属代理池
  • 修改Pipeline的pool配置,替换为你的自托管代理池名称,示例:
pool:
  name: '你的内网代理池名称'
  # 如果需要指定特定机器,可添加:
  # demands: Agent.Name -equals 你的内网代理机器名

这样测试就会在内网代理机器上运行,自然能访问内部站点。

2. 拆分测试套件,分环境执行

如果不想全部测试都用自托管代理,可以把内网、公网测试拆分,分别用不同的代理环境执行:

  • 在Cypress中用测试标签或文件夹分类区分内网/公网测试,比如给内网测试加@internal标签,或者把内网测试放在cypress/e2e/internal目录
  • 在Pipeline中添加两个测试任务,分别对应不同的代理池和测试范围:
trigger:
- master

jobs:
  # 公网测试:用微软托管代理
  - job: PublicTests
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - task: Yarn@3
        displayName: yarn install
        inputs:
          projectDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
          arguments: install
      - task: CmdLine@2
        displayName: 'Run Public Cypress Tests'
        inputs:
          workingDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
          # 只跑公网测试,比如按标签筛选
          script: yarn cypress run --browser chrome --env grepTags=@public

  # 内网测试:用自托管代理
  - job: InternalTests
    pool:
      name: '你的内网代理池名称'
    steps:
      - task: Yarn@3
        displayName: yarn install
        inputs:
          projectDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
          arguments: install
      - task: CmdLine@2
        displayName: 'Run Internal Cypress Tests'
        inputs:
          workingDirectory: '$(System.DefaultWorkingDirectory)/UIAutomation'
          script: yarn cypress run --browser chrome --env grepTags=@internal

3. 网络打通方案(需运维配合)

如果允许,可通过网络配置让微软托管代理访问内网:

  • 联系运维团队,将微软托管代理的出口IP段加入内部站点的防火墙白名单
  • 或者给内部站点配置反向代理,通过公网可访问的域名映射到内网站点,但要做好身份验证和安全防护,避免内网暴露风险

内容的提问来源于stack exchange,提问作者S.U.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:57:19