以root用户身份在jenkins中运行shell命令?

我最近开始使用Jenkins进行集成。 一切都很好,直到我在没有shell命令的主节点上运行作业,但是我必须在主节点以及包含shell命令的从节点上运行作业。 我无法以root用户身份运行这些shell命令。 我努力了

  1. 使用SSH Keys
  2. 在shell命令中设置用户名。
  3. 使用sudo

每次使用上述任何一种方法时,我都会得到permission denied错误。

Solutions Collecting From Web of "以root用户身份在jenkins中运行shell命令?"

您需要修改jenkins用户的权限,以便您可以运行shell命令。 您可以将jenkins作为服务安装(下载rpm包),您可能需要更改端口,因为默认情况下它将在8080上运行http,在8009端口上运行AJP。

以下过程适用于CentOS
1.打开这个脚本(使用VIM或其他编辑器):

 vim /etc/sysconfig/jenkins 

2.找到这个$JENKINS_USER并改为“root”:

 $JENKINS_USER="root" 

3.然后更改Jenkins home,webroot和日志的所有权:

 chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins 

4)重新启动Jenkins并检查用户是否已被更改:

 service jenkins restart ps -ef | grep jenkins 

现在,您应该能够以root用户身份运行Jenkins作业,并且所有shell命令都将以root身份执行。

我建议不要以root身份运行jenkins用户。 这可能会暴露操作系统和jenkins可以构建的所有回购。

以root身份运行任何脚本是一个安全风险,但一个稍安全的方法是授予jenkins用户sudo访问权限,只运行一个脚本,而不需要密码。

 sudo visudo 

并添加以下内容:

 jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script 

通过失败的构建脚本的控制台日志仔细检查路径。 这里显示的是默认值。

现在在jenkins任务中,你可以调用sudo $WORKSPACE/your script

我同意w / oden @,运行Jenkins作为根,当你尝试运行appium时,也会有问题,因为“如果使用或安装了sudo,Appium将不起作用”。

另一个选择是建立一个jenkins“Slave”,它在主服务器上以root身份运行,并将其限制在捆绑的作业中,然后将该作业指向该从服务器。 远非理想,但肯定是一个快速解决方案。

您只需要使用Jenkins的Root权限在Linux机器上运行shell命令。

脚步 :

1) sudo vi /etc/sudoers

2)添加行:

 jenkins ALL=NOPASSWD:/path of script/ 

3)从Jenkins,使用sudo在远程shell上运行脚本。 例如: sudo ps -ef

4)现在建立詹金斯的工作。 此作业使用root权限在Linux机器上运行脚本。