我最近开始使用Jenkins进行集成。一切顺利,直到我在没有shell命令的主节点上运行作业,但我必须在master和slave节点上运行包含shell命令的作业。我无法以root用户身份运行这些shell命令。我试过了
SSH Keys
。 sudo
。每次使用上述任何方法时,我都会收到permission denied
错误。
答案 0 :(得分:26)
我建议不要以root身份运行jenkins用户。这可能会暴露操作系统和jenkins可以构建的所有repo。
以root身份运行任何脚本都存在安全风险,但稍微更安全的方法是授予jenkins用户sudo访问权限,只运行一个脚本,而无需密码。
sudo visudo
并添加以下内容:
jenkins ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script
通过失败的构建脚本的控制台日志仔细检查您的路径。此处显示的是默认值。
现在,在jenkins任务中,您可以拨打sudo $WORKSPACE/your script
答案 1 :(得分:20)
您需要修改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和logs的所有权:
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
执行。答案 2 :(得分:0)
对于Linux,请尝试执行以下步骤:-
对我有用。
sudo vi / etc / default / jenkins
$ JENKINS_USER =“ root”
sudo chown -R root:root / var / lib / jenkins
sudo chown -R root:root / var / cache / jenkins
sudo chown -R root:root / var / log / jenkins
服务jenkins重新启动ps -ef | grep jenkins
答案 3 :(得分:-1)
我同意o / o, 当你尝试运行appium时,运行Jenkins作为root也会出现问题,因为如果使用或安装了sudo"它将无法运行。
答案 4 :(得分:-1)
另一种选择是设置一个jenkins“Slave”,它实际上是在master上以root身份运行并将其限制为绑定的作业,然后将你的工作指向该slave。远非理想,但肯定是一个快速解决方案。
答案 5 :(得分:-2)
您只需要使用Jenkins的Root权限在Linux机器上运行shell命令。
步骤:
1)sudo vi /etc/sudoers
2)添加行:
jenkins ALL=NOPASSWD:/path of script/
3)从Jenkins,使用sudo在远程shell上运行脚本。
例如:sudo ps -ef
4)立即建立Jenkins工作。 此作业使用root权限在Linux机器上运行脚本。