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

新手上路,请多包涵

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

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

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

原文由 Raj Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

您需要修改 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 用户身份运行 Jenkins 作业,并且所有 shell 命令都将作为 root 执行。

原文由 Pulkit 发布,翻译遵循 CC BY-SA 3.0 许可协议

我建议不要以 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

原文由 oden 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题