簡體   English   中英

以 root 用戶身份在 jenkins 中運行 shell 命令?

[英]Run shell command in jenkins as root user?

我最近開始使用 Jenkins 進行集成。 一切都很好,直到我在沒有 shell 命令的情況下在主節點上運行作業,但我必須在主節點和包含 shell 命令的從節點上運行作業。 我無法以 root 用戶身份運行這些 shell 命令。 我試過了

  1. 使用SSH Keys
  2. 在 shell 命令中設置用戶名。
  3. 使用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 作業,並且所有 shell 命令都將以root身份執行。

另一種選擇是設置一個 jenkins“Slave”,它實際上在 master 上以 root 身份運行,並將其限制為綁定作業,然后將您的作業指向該奴隸。 遠非理想但肯定是一個快速的解決方案。

對於 Linux,請嘗試按照以下步驟操作:-

它對我有用。

  1. 須藤vi /etc/default/jenkins

  2. $JENKINS_USER="root"

  3. 須藤 chown -R root:root /var/lib/jenkins

    須藤 chown -R root:root /var/cache/jenkins

    須藤 chown -R root:root /var/log/jenkins

  4. 服務詹金斯重啟 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM