我最近开始使用Jenkins进行集成。一切都很好,直到我在没有shell命令的主节点上运行作业,但我必须在主节点和包含shell命令的从节点上运行作业。我无法以root用户身份运行这些shell命令。我尝试过1.使用SSH Keys。1.在shell命令中设置用户名。1.使用sudo。每次使用上述任何方法时,我都会收到permission denied错误。
SSH Keys
sudo
permission denied
mu0hgdu01#
我建议不要以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
sudo $WORKSPACE/your script
t1rydlwq2#
您需要修改jenkins用户的权限,以便运行shell命令。您可以安装jenkins as as service(下载rpm包),您可能需要更改端口,因为默认情况下它在8080端口上运行http,在8009端口上运行AJP。以下流程适用于CentOS1.打开以下脚本(使用VIM或其他编辑器):
jenkins
CentOS
vim /etc/sysconfig/jenkins
2.找到此$JENKINS_USER并更改为“root”:
$JENKINS_USER
$JENKINS_USER="root"
3.然后更改Jenkins主目录、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
3bygqnnd3#
对于Linux,请尝试执行以下步骤:-
这对我很有效。更改Jenkins用户:$JENKINS_USER="root"更改root用户或用于访问文件的用户:$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
1.作为服务运行:service jenkins restart或systemctl jenkins restart您可以执行jenkins有一个进程,并使用UI禁用Linux的无头模式。
service jenkins restart
systemctl jenkins restart
/etc/alternatives/java -Djava.awt.headless=false -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
验证Jenkins当前是否正在运行:ps -ef | grep jenkins
ps -ef | grep jenkins
sirbozc54#
另一个选择是设置一个jenkins“从”,它实际上是以root身份在主服务器上运行,并将其限制为绑定作业,然后将您的作业指向该从服务器。虽然远不理想,但肯定是一个快速的解决方案。
cfh9epnr5#
或者,您可以更改docker.sock的权限。
docker.sock
docker exec <jenkinsContainerID> chmod 777 /var/run/docker.sock
laawzig26#
您只需要使用Jenkins提供的Root权限在Linux机器上运行shell命令。操作步骤:1)sudo ps -ef2)添加行:
sudo ps -ef
jenkins ALL=NOPASSWD:/path of script/
3)在Jenkins中,使用sudo在远程shell上运行脚本。例如:sudo ps -ef个4)立即生成Jenkins作业。此作业使用root权限在Linux计算机上运行脚本。
6条答案
按热度按时间mu0hgdu01#
我建议不要以root用户的身份运行jenkins用户,这会暴露操作系统和jenkins可以构建的所有repo。
以root用户身份运行任何脚本都存在安全风险,但稍微安全一点的方法是授予jenkins用户sudo访问权限,使其仅运行一个脚本,而无需输入密码。
并增加以下内容:
通过失败的构建脚本的控制台日志仔细检查您的路径。此处显示的是默认路径。
现在在jenkins任务中,您可以调用
sudo $WORKSPACE/your script
t1rydlwq2#
您需要修改
jenkins
用户的权限,以便运行shell命令。您可以安装jenkins as as service(下载rpm包),您可能需要更改端口,因为默认情况下它在8080端口上运行http,在8009端口上运行AJP。以下流程适用于
CentOS
1.打开以下脚本(使用VIM或其他编辑器):
2.找到此
$JENKINS_USER
并更改为“root”:3.然后更改Jenkins主目录、webroot和日志的所有权:
4)重新启动Jenkins并检查是否已更改用户:
现在,您应该能够以root用户身份运行Jenkins作业,并且所有shell命令都将以
root
身份执行。3bygqnnd3#
对于Linux,请尝试执行以下步骤:-
这对我很有效。
更改Jenkins用户:
$JENKINS_USER="root"
更改root用户或用于访问文件的用户:
$JENKINS_USER="root"
个使用之前设置的用户执行:
1.作为服务运行:
service jenkins restart
或systemctl jenkins restart
您可以执行jenkins有一个进程,并使用UI禁用Linux的无头模式。
验证Jenkins当前是否正在运行:
ps -ef | grep jenkins
sirbozc54#
另一个选择是设置一个jenkins“从”,它实际上是以root身份在主服务器上运行,并将其限制为绑定作业,然后将您的作业指向该从服务器。虽然远不理想,但肯定是一个快速的解决方案。
cfh9epnr5#
或者,您可以更改
docker.sock
的权限。laawzig26#
您只需要使用Jenkins提供的Root权限在Linux机器上运行shell命令。
操作步骤:
1)
sudo ps -ef
2)添加行:
3)在Jenkins中,使用sudo在远程shell上运行脚本。例如:
sudo ps -ef
个4)立即生成Jenkins作业。此作业使用root权限在Linux计算机上运行脚本。