我最近开始使用Jenkins进行集成。 一切都很好,直到我在没有shell命令的主节点上运行作业,但是我必须在主节点以及包含shell命令的从节点上运行作业。 我无法以root用户身份运行这些shell命令。 我努力了
SSH Keys
。 sudo
。 每次使用上述任何一种方法时,我都会得到permission denied
错误。
您需要修改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
身份执行。 我建议不要以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机器上运行脚本。