在 Azure Pipelines 托管 Linux 代理上运行 Cypress.io

Posted

技术标签:

【中文标题】在 Azure Pipelines 托管 Linux 代理上运行 Cypress.io【英文标题】:Run Cypress.io on Azure Pipelines Hosted Linux Agent 【发布时间】:2018-10-29 09:35:50 【问题描述】:

我正在尝试在 Azure Pipelines 的托管 Linux 池上运行赛普拉斯测试。不幸的是,托管代理没有安装赛普拉斯的所有依赖项。

运行记录在案的apt-get 不起作用:

2018-05-18T21:03:14.7423331Z ##[section]Starting: Install cypress dependencies
2018-05-18T21:03:14.7474742Z ==============================================================================
2018-05-18T21:03:14.7488281Z Task         : Bash
2018-05-18T21:03:14.7501148Z Description  : This is an early preview. Run a Bash script on macOS, Linux, or Windows
2018-05-18T21:03:14.7513088Z Version      : 3.127.0
2018-05-18T21:03:14.7524823Z Author       : Microsoft Corporation
2018-05-18T21:03:14.7537179Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613738)
2018-05-18T21:03:14.7549730Z ==============================================================================
2018-05-18T21:03:15.0174503Z Generating script.
2018-05-18T21:03:15.0535056Z Script contents:
2018-05-18T21:03:15.0547355Z apt-get install xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
2018-05-18T21:03:15.0656822Z [command]/bin/bash --noprofile --norc /opt/vsts/work/_temp/cac4d3f9-42e7-49f3-94f6-7d0444827d83.sh
2018-05-18T21:03:15.6040707Z Reading package lists...
2018-05-18T21:03:15.6085335Z Building dependency tree...
2018-05-18T21:03:15.6153815Z Reading state information...
2018-05-18T21:03:15.6186788Z Package libgconf-2-4 is not available, but is referred to by another package.
2018-05-18T21:03:15.6198707Z This may mean that the package is missing, has been obsoleted, or
2018-05-18T21:03:15.6211380Z is only available from another source
2018-05-18T21:03:15.6216969Z 
2018-05-18T21:03:15.6229592Z E: Unable to locate package xvfb
2018-05-18T21:03:15.6242128Z E: Unable to locate package libnotify-dev
2018-05-18T21:03:15.6254440Z E: Package 'libgconf-2-4' has no installation candidate
2018-05-18T21:03:15.6268141Z E: Unable to locate package libxss1
2018-05-18T21:03:15.6370826Z ##[error]Bash exited with code '100'.
2018-05-18T21:03:15.7283047Z ##[section]Finishing: Install cypress dependencies

运行apt-get update 需要很长时间(25 分钟但仍未完成)。

欢迎提供有关如何让赛普拉斯在托管代理上快速工作的任何线索。

注意:我尝试在 Windows 上运行,幸运的是,我没有完全被阻止。但是为了使用 Windows 代理,我现在有 2 个代理阶段,由于人工制品下载和 npm 安装开销而增加了开销。

【问题讨论】:

【参考方案1】:

在运行赛普拉斯之前,在 VSTS 代理阶段使用预先挂起的 Shell (Bash) 任务解决了该问题:

apt-get -qq -y update
apt-get -qq -y install xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2

【讨论】:

以上是关于在 Azure Pipelines 托管 Linux 代理上运行 Cypress.io的主要内容,如果未能解决你的问题,请参考以下文章

Azure Pipelines 托管代理无法访问 DevOps 项目源

在windows vm上部署Azure Pipelines Agent

在 Azure Pipelines 中使用托管标识:GetUserAccessToken:无法获取标识的访问令牌。 AAD 返回静默失败

访问 Azure Pipelines 中私有 Nuget 服务器中托管的 Nuget 包

如何在托管的 Ubuntu 代理上启用 Azure Pipelines 中的实验性 Docker 守护程序

NG 构建在 Azure Pipelines 中失败,并出现 NPM 错误 134