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
为了运行 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