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

Cypress & Jenkins: Install system dependency "xvfb" via Jenkinsfile

为了运行 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 在 Jenkins 中有一个阶段命令 npx cypress run,它失败了 "Your system is missing the dependency: Xvfb"

首先想到的是安装 npm package xvfb,但并没有解决问题。

然后,我通过本地 Jenkins 安装,Jenkins plugin Xvfb,这成功了!

我的目标是 运行 远程 Jenkins 上的 Cypress,它以同样的方式失败 "Your system is missing the dependency: Xvfb"

重要说明:我无权访问远程 Jenkins 服务和命令 管理插件 以请求安装 Jenkins plugin Xvfb .

由于不清楚如何通过 Jenkinsfile 安装 Jenkins plugin 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'

有人知道在 运行 安装 npm 之前编写 Jenkinsfile 脚本来安装 Jenkins plugin Xvfb 吗?

谢谢,非常感谢您的帮助

我已经通过创建一个 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