Jenkins 作为根用户的Openshift容器
Hi Iam正在openshift 3.9上执行CICD。我有一个jenkins吊舱在openshift运行。我在jenkins和下面运行selenium脚本,这是一个错误,我好像丢失了一个包Jenkins 作为根用户的Openshift容器,jenkins,openshift,jenkins-pipeline,openshift-origin,openshift-3,Jenkins,Openshift,Jenkins Pipeline,Openshift Origin,Openshift 3,Hi Iam正在openshift 3.9上执行CICD。我有一个jenkins吊舱在openshift运行。我在jenkins和下面运行selenium脚本,这是一个错误,我好像丢失了一个包 Running TestSuite /var/lib/jenkins/jobs/Pipeline/workspace/src/test/resources/chromedriver: error while loading shared libraries: libgconf-2.so.4: can
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容器中
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?您似乎应该自定义jenkins图像,如下所示。[0]
- 创建
FROM registry.access.redhat.com/openshift3/jenkins-2-rhel7 USER 0 RUN yum -y install libgconf2-4 && yum clean all -y USER 1001 docker build .Dockerfile
- 登录
的内部注册表以推送图像 docker login -u admin -p docker-registry.default.svc:5000OpenShift
- 按
docker push docker-registry.default.svc:5000/openshift/jenkins-2-rhel7-custom图像
[0]您可以在dockerfile中使用
用户root
来解决您的问题您好,我已经设置了jenkins,并且在同一个pod上进行了配置。你能让我知道我是否可以用root访问我现在的pod,而不是重复上面的步骤吗。是否可以获得对当前运行pod的root访问权限?@sudbir是的,您可以通过向jenkins服务帐户授予anyuid来获得root权限。“oc adm policy add scc to user anyuid-z jenkins”,有关更多详细信息,请参阅。您好,我使用了命令“oc adm policy add scc to user anyuid-z jenkins”,并通过putty以“oc rsh.但在安装软件包”yum install libgconf2-4登录“它给出了以下错误。sh-4.2$yum install libgconf2-4加载的插件:ovl、产品id、禁用搜索的repos、拒绝订阅管理器[Errno 13]权限:'/etc/pki/entity host'ovl:执行RPMdb复制时出错:[Errno 13]拒绝权限:'/var/lib/rpm/.dbenv.lock'您需要是root才能执行此命令。作为root用户输入容器时,我在这里遗漏了什么?在oc-rsh
之后,是否使用id
cmd检查uid?您应该在oc adm policycmd更改后重新启动pod。并且libgconf2-4
包在RHEL存储库中不存在,它的名称正确吗?当我执行oc rsh时,它会给出sh-4.2$id uid=1000130000(默认值)gid=0(根)groups=0(根),20011000130000 Iam,并查看如何重新启动pod。你能给我一个命令,在那里我只能重新启动那个特定的RPOD。这将不起作用,因为OpenShift在容器的开头使用了一个随机UID(请参阅):“默认情况下,OpenShift容器平台使用任意分配的用户ID运行容器。这提供了额外的安全性,防止由于容器引擎漏洞而逃离容器的进程,从而在主机节点上实现升级权限。”
docker tag docker-registry.default.svc:5000/openshift/jenkins-2-rhel7-custom
docker push docker-registry.default.svc:5000/openshift/jenkins-2-rhel7-custom
oc edit dc/jenkins
...
containers:
...
image: "openshift/jenkins-2-rhel7-custom"
...