我最近开始使用 Jenkins 进行集成。一切都很好,直到我在没有 shell 命令的主节点上运行作业,但我必须在主节点和包含 shell 命令的从节点上运行作业。我无法以 root 用户身份运行这些 shell 命令。我努力了
- 使用
SSH Keys
。 - 在 shell 命令中设置用户名。
- 使用
sudo
。
每次使用上述任何方法时,我都会收到 permission denied
错误。
原文由 Raj Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近开始使用 Jenkins 进行集成。一切都很好,直到我在没有 shell 命令的主节点上运行作业,但我必须在主节点和包含 shell 命令的从节点上运行作业。我无法以 root 用户身份运行这些 shell 命令。我努力了
SSH Keys
。sudo
。每次使用上述任何方法时,我都会收到 permission denied
错误。
原文由 Raj Gupta 发布,翻译遵循 CC BY-SA 4.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 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答795 阅读✓ 已解决
2 回答3.2k 阅读
您需要修改
jenkins
用户的权限,以便您可以运行 shell 命令。您可以将 jenkins 作为服务安装(下载 rpm 包),您可能需要更改端口,因为默认情况下它在 8080 上运行 http,在 8009 端口上运行 AJP。以下过程用于
CentOS
1. 打开这个脚本(使用 VIM 或其他编辑器):
2.找到这个
$JENKINS_USER
并更改为“root”:3.然后更改Jenkins home、webroot和logs的所有权:
4)重新启动Jenkins并检查用户是否已更改:
现在您应该能够以 root 用户身份运行 Jenkins 作业,并且所有 shell 命令都将作为
root
执行。