jenkins執行shell問題


問題1:在jenkins的Build--Execute shell中,將編譯好的js拷貝到工作目錄,沒有權限。

原因分析:Jenkins默認會以Jenkins的用戶來執行shell

解決辦法:修改Execute shell的執行用戶

1)修改/etc/sysconfig/jenkins

#JENKINS_USER="jenkins"

JENKINS_USER="test"

2)把test用戶添加到jenkins組中

usermod -a -G jenkins test

3)修改jenkins目錄權限

sudo chmod -R g+rwx /var/lib/jenkins

sudo chmod -R g+rwx /var/cache/jenkins

sudo chmod -R g+rwx /var/log/jenkins

 

 

問題2:在jenkins的Build--Execute shell中,通過forever啟動nodejs,forever的日志出現下面的錯誤:

error: Forever detected script was killed by signal: SIGTERM

原因分析:Jenkins默認會在Build結束后Kill掉所有的衍生進程

解決辦法:

1.修改/etc/sysconfig/jenkins的JENKINS_JAVA_OPTIONS,加入-Dhudson.util.ProcessTree.disable=true。

#JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.util.ProcessTree.disable=true"

 2.在Execute shell中,在執行forever啟動執行之前,修改Jenkins的環境變量BUILD_ID,

執行完之后再改回來,如:

OLD_BUILD_ID=$BUILD_ID

BUILD_ID=jenkins_$OLD_BUILD_ID    #新ID可以是任意的

forever start server/server.js

BUILD_ID=$OLD_BUILD_ID

推薦方法2.

 

問題3:在jenkins的Build--Execute shell中,通過forever啟動nodejs要報錯,而通過交互式執行則正常。

原因分析:Jenkins默認會采取/bin/sh -xe來執行shell

解決辦法:

把Execute shell頭部的#!/bin/env bash中加入-il參數,如:

#!/bin/env bash -il

以交互+登陸式的方式執行shell。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM