jenkins - 以 root 用户身份 Openshift 容器
问题描述
嗨,我正在研究 openshift 3.9 上的 CICD 实施。我有一个在 openshift 中运行的詹金斯吊舱。我在詹金斯和下面运行硒脚本是我得到的错误,就像错过了一个包
Running TestSuite
/var/lib/jenkins/jobs/Pipeline/workspace/src/test/resources/chromedriver: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory
Nov 21, 2018 8:25:36 AM org.openqa.selenium.os.OsProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 127 (Exit value: 127)
Tests run: 8, Failures: 1, Errors: 0, Skipped: 7, Time elapsed: 21.9 sec <<< FAILURE! - in TestSuite
BrowserSettings(SecurityCheckList) Time elapsed: 21.273 sec <<< FAILURE!
org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:25:02.294Z'
System info: host: 'jenkins-1-7zgld', ip: '10.131.0.32', os.name: 'Linux', os.arch: 'i386', os.version: '3.10.0-957.el7.x86_64', java.version: '1.8.0_181'
Driver info: driver.version: ChromeDriver
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:148)
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:187)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
为此,我想通过以下命令在我的 jenkins 容器中安装 libgconf-2-4
yum install libgconf-2-4
当我尝试安装以下错误时,我的詹金斯容器中出现了
sh-4.2$ yum install libgconf2-4
Loaded plugins: ovl, product-id, search-disabled-repos, subscription-manager
[Errno 13] Permission denied: '/etc/pki/entitlement-host'
ovl: Error while doing RPMdb copy-up:
[Errno 13] Permission denied: '/var/lib/rpm/.dbenv.lock'
You need to be root to perform this command.
当我转到指定位置并尝试将权限更改为 chmod 777 .dbenv.lock
sh-4.2$ cd /var/lib/rpm/
sh-4.2$ ls -latr
total 19560
-rw-r--r--. 1 root root 0 Aug 9 18:21 .dbenv.lock
它抛出错误
sh-4.2$ chmod 777 .dbenv.lock
chmod: changing permissions of ‘.dbenv.lock’: Operation not permitted
我的问题是如何以root用户身份进入jenkins pod并在openshift中通过yum install libgconf-2-4安装rpm包libgconf-2-4?
解决方案
It seems you should customize the jenkins
images as follows.[0]
Create the
Dockerfile
.FROM registry.access.redhat.com/openshift3/jenkins-2-rhel7 USER 0 RUN yum -y install libgconf2-4 && yum clean all -y USER 1001
Build the image using the
Dockerfile
.docker build .
Login the internal registry of
OpenShift
for pushing image.docker login -u admin -p docker-registry.default.svc:5000
Retag as
OpenShift
image format and your tag policy.docker tag docker-registry.default.svc:5000/openshift/jenkins-2-rhel7-custom
Push the
image
.docker push docker-registry.default.svc:5000/openshift/jenkins-2-rhel7-custom
Edit your
deploymentConfig
oc edit dc/jenkins ... containers: ... image: "openshift/jenkins-2-rhel7-custom" ...
I hope it help you. :^)
推荐阅读
- javascript - Vuetify stepper 垂直和非线性问题
- python - Django 尝试创建自定义登录表单失败
- python - 组合不同形状的数组
- django - Django 按状态名称查询而不是 2 字符缩写
- javascript - jquery获取复选框,都具有相同的类,基于链接
- ios - 如何将文件保存在另一个应用程序的数据文件夹中?
- css - 最大高度和最大宽度媒体查询不起作用?
- log4j - log4j 在模式中设置类和方法摘要长度
- ubuntu - GHC 8.4.2 无法导入 System.Random
- apache-kafka - Kafka KTable:我们如何安排物化