在操作 jenkins 的過程中,出現很多問題,自己做了個彙總,和大家分享一下:
(1)出現問題原因1:目標服務器jar,命令不存在
解決方法:
安裝 jar 命令
#cd /usr/bin
#yum install jar 必須先進入/usr/bin,下同
目標服務器:查看環境變量 echo $JAVA_HOME
[root@zk1 ~]# echo $JAVA_HOME
/data/program/jdk1.8.0_101
有時候目標服務器已經存在 jar 命令了,但是 jenkins 還是會報錯;
(1) 需要在 jenkins 執行 jar 命令的腳本之前加上 環境變量
export ***環境變量 如: export JAVA_HOME=/data/program/jdk1.8.0_101
(2) 給 jar 添加軟鏈接 如:#cd /usr/bin #ln -s -f /data/program/jdk1.8.0_101/bin/jar jar
目標服務器:查看環境變量
#echo $JAVA_HOME
# java -version
#sudo find / -name jar
如果 /usr/bin 下面有 jar 命令,在/usr/bin目錄下創建jar的軟連接。
#cd /usr/bin
# ln -s -f /data/program/jdk1.8.0_101/bin/jar jar
( ln -s 源文件 目標文件
-b 刪除,覆蓋以前建立的鏈接
-d 允許超級用戶製作目錄的硬鏈接
-f 強制執行
-i 交互模式,文件存在則提示用戶是否覆蓋
-n 把符號鏈接視爲一般目錄
-s 軟鏈接(符號鏈接)
-v 顯示詳細的處理過程 )
例如: nc: command not found
解決:yum install -y nc
other: 如果提示javah:commond not found,於是照葫蘆畫瓢,輸入命令
cd /usr/bin
ln -s -f /usr/lib/jvm/jdk1.6.0_30/bin/javah
終極辦法:
export PATH=$JAVA_HOME/bin: // 寫在最前面
完整版本如下:
export MAVEN_HOME=/**/**
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH:$MAVEN_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
(2)出現問題原因2:環境變量問題
查找原因:在jenkins的日誌裏打印出環境變量,
你會發現是jenkins服務器的環境變量,並不是目標主機的環境變量
(腳本里面執行 echo $PATH 打印出的是jenkins本地環境的PATH)
echo $PATH
echo $JAVA_HOME
解決方法: 在執行命令之前需要設置環境變量爲目標主機的環境變量。
在Exec command 裏寫上自己的項目啓動腳本
在執行 java -jar 命令之前需要
export PATH=目標主機的PATH 如圖:
(3)出現問題原因3:異常退出ssh 問題
jenkins ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
解決方法:構建後操作 - send build artifacts over ssh-高級
(4) Exception when publishing, exception message [Exec exit status not zero. Status [127]]
這個 bug 有很好的解決方法嗎?
rsync -vrtopga --delete --exclude-from=/usr/local/bin/rsync.ignore ***** [email protected]:/data/webapp
ssh [email protected] "sh /data/serverApp/resin/bin/resin.sh restart"
(5) 配置免密之後;第一次得手動登錄一次。不然 jenkins還是會免密登錄失敗。
免密登錄操作:A 免密登錄 B ;A 的id_rsa.pub追加到 B 的authorized_keys
https://blog.csdn.net/wind520/article/details/38421359
linux系統配置免密碼的方式:
1:ssh-keygen -t rsa (一直回車即可!!!)
生成密鑰 (如果已經有了,就不要執行!!!!!!!後果自己想)
2:ssh-copy-id -i ~/.ssh/id_rsa.pub 用戶@B
把本機的公鑰追到 B 的 .ssh/authorized_keys 裏 (在 A 執行)
4:如果ssh的端口不是22,可用下面命令
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 23 用戶@B"
5:完成。
遇到一個奇怪的問題,最近:爲什麼通過上面命令追加可以設置成功呢,而我嘗試手動添加並沒有免密成功。我查看文件,命令追加和我手動添加的 公鑰 一模一樣。
在之前,我通過手動操作,是可以配置免密成功的。如果是文件權限問題,我已經安裝網絡上講的配置了文件和文件夾的權限,想不明白,希望有人解答。