Cypress和Jenkins:通过Jenkinsfile安装系统依赖项"xvfb"

6
要运行Cypress,需要安装系统依赖项,Cypress Dependencies
apt-get install libgtk2.0-0 libgtk-3-0 libnotify-dev 
libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb

为了在本地Jenkins中运行Cypress脚本,我正在创建一个名为Jenkinsfile的文件。
在Jenkinsfile中,使用npx cypress run命令进行阶段操作,但是出现了错误"Your system is missing the dependency: Xvfb"
首先想到的是安装npm包xvfb,但这并没有解决问题。
然后,我通过本地Jenkins安装了Jenkins插件Xvfb,这次成功了!
我的目标是在远程Jenkins上运行Cypress,但是遇到了同样的问题"Your system is missing the dependency: Xvfb"
重要提示:我无法访问远程Jenkins服务和命令Manage Plugins来请求安装Jenkins插件Xvfb

由于不清楚如何通过Jenkinsfile安装Jenkins插件Xvfb,因此我尝试在Jenkinsfile中使用shell脚本。除了xvfb之外,每个系统包都似乎安装成功,因此这种远程安装到Jenkins服务的方法没有奏效。

sh 'sudo apt-get install libgtk2.0-0 libgtk-3-0 
libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 
libxtst6 xauth xvfb -y'

有人知道如何编写 Jenkinsfile 脚本,在运行 npm 安装之前安装 Jenkins 插件 Xvfb 吗?

谢谢,非常感谢您的帮助。


1
不需要在Jenkins中运行上述配置,难道你没有办法在服务器本身内运行该命令吗? - Muditha Perera
1
你使用的shell脚本方法是我以前用过的。我建议再次检查该安装命令的输出。根据你的操作系统,除了xvfb之外,你可能需要另一个包。 - olore
我通过在Dockerfile中应用依赖项并将创建的镜像导入到Jenkinsfile中来解决了这个问题。感谢您的回复。 - Jeff
1个回答

2

我通过创建一个Docker文件并在Jenkinsfile中使用它的镜像来解决了这个问题。Cypress.io有自己的docker镜像,但是它们不能在我们组织的Jenkins工作环境中使用。以下是添加到Dockerfile中的代码。

我发现使用Dockerfile更容易添加Cypress依赖项:

# Image installing Cypress Test Runner system dependencies
RUN apt-get update && \
  apt-get install --no-install-recommends -y \
  # install cypress system dependencies
  libgtk2.0-0 \
  libgtk-3-0 \
  libnotify-dev \
  libgconf-2-4 \
  libgbm-dev \
  libnss3 \
  libxss1 \
  libasound2 \
  libxtst6 \
  tidy \
  xauth \
  xvfb \
  # clean up
  && rm -rf /var/lib/apt/lists/*

RUN chown jenkins:jenkins -R /home/jenkins

RUN sh -c "echo 'Cypress Build image maintained by Raccoons' >> /build_image.info"
USER jenkins

RUN    echo  "NODE_VERSION:     $NODE_VERSION" \
    && echo  "NVM_DIR:          $NVM_DIR" \
    # NVM install
    && . $NVM_DIR/nvm.sh \
    # NPM and Node install
    && nvm install $NODE_VERSION \
    # cypress install
    echo  "CYPRESS_VERSION:     $CYPRESS_VERSION" \
    && npm install -g cypress@$CYPRESS_VERSION \
    && cypress verify \
    && cypress info

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接