[英]Run shell command in jenkins as root user?
我最近開始使用 Jenkins 進行集成。 一切都很好,直到我在沒有 shell 命令的情況下在主節點上運行作業,但我必須在主節點和包含 shell 命令的從節點上運行作業。 我無法以 root 用戶身份運行這些 shell 命令。 我試過了
SSH Keys
。sudo
。 每次使用上述任何一種方法時,我都會收到permission denied
錯誤。
我建議不要以 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
您需要修改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“Slave”,它實際上在 master 上以 root 身份運行,並將其限制為綁定作業,然后將您的作業指向該奴隸。 遠非理想但肯定是一個快速的解決方案。
對於 Linux,請嘗試按照以下步驟操作:-
它對我有用。
須藤vi /etc/default/jenkins
$JENKINS_USER="root"
須藤 chown -R root:root /var/lib/jenkins
須藤 chown -R root:root /var/cache/jenkins
須藤 chown -R root:root /var/log/jenkins
服務詹金斯重啟 ps -ef | 詹金斯
我同意w / oden @,運行Jenkins作為根,當你嘗試運行appium時也會遇到問題,因為“如果使用或安裝sudo,Appium將無法工作”。
您只需要使用 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 機器上運行腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.