jenkins中遇到的一些坑


上篇文章羅列了jenkins持續集成的步驟,其中踩到了不少坑,在本篇里記錄下,希望能給大家一些解決問題的思路。

1.構建時,從github拉取代碼失敗:

 報錯部分代碼如下:

ERROR: Timeout after 10 minutes
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command "/usr/local/git/bin/git fetch --tags --progress -- git@github.com:May-Fan/AutoApiTestDemo.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
remote: Enumerating objects: 581, done.

遇到這個問題,百度過后解決方案如下:

  1.檢查ssh key是否配置正確。配置方法上一篇中有講過,必須將公鑰復制到github,私鑰復制到jenkins。如果不確定,可以進入項目->配置->源碼管理:

   看看這個地方會不會報錯。我為了演示錯誤的截圖,在github的url后面添加了~,因此報的是無效的倉庫地址。具體需要結合報錯的信息來看。如果不報錯,那ssh key配置無誤了;

  2.查看服務器是否安裝了git。同樣也是在上圖的位置,如果git未安裝,會提示git運行出錯,驗證的辦法是在服務器輸入git --version指令;

  3.如果上圖中的配置已經不再報錯,項目構建時仍然報錯,需要進入對應項目->工作空間->清理工作空間,然后重新構建;

  4.當經歷了1,2,3之后,構建時仍然會報錯,需要考慮是否因為項目內容過多,git加載超時報錯的情況。如下圖,進入項目配置,勾選淺克隆,只拉取最新版本的代碼,可以大大減少構建時間,並將超時的時間從原來默認的10修改為60,重新構建。這樣git部分的指令就不會再報錯了。

2.jenkins無法識別mvn指令

  具體報錯信息如下:

+ mvn clean package
/tmp/jenkins4746628215257020380.sh: line 9: mvn: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

  解決的思路如下:1.確認服務器中是否安裝了maven;2.確認shell中是否加載了配置文件。

  maven確認安裝,而我的shell腳本當中,第一行source /etc/profile也已經加載了配置文件:

source /etc/profile
pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $1}')
if "[-n '$pid']" ; then
kill -9 $pid
fi

cd api
mvn clean package //這行的mvn指令報錯了
cd target
pwd
BUILD_ID=dontKillMe
nohup java -jar api-1.0-SNAPSHOT.jar &

  這是因為:jenkins默認情況下執行shell腳本是使用非登錄方式,執行shell腳本時不會去加載/etc/profile。

  找到原因后,參考了很多網上的解決方法,比如在shell腳本前添加#!/bin/sh -l,又或者在jenkins中配置全局的maven變量,又或者將maven的文件夾的擁有者和所在組都遞歸賦給jenkins用戶,都沒有解決我的問題。最終我使用了最簡單粗暴的方式,將上面報錯的mvn命令,直接替換成服務器上which mvn得到的絕對路徑:

source /etc/profile
pid=$(ps x | grep api-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $1}')
if "[-n '$pid']" ; then
kill -9 $pid
fi

cd api
//下面的mvn替換成絕對路徑
/home/May/apache-maven-3.6.3/bin/mvn clean package 
cd target
pwd
BUILD_ID=dontKillMe
nohup java -jar api-1.0-SNAPSHOT.jar &

  同時,修改jenkins配置文件:

vim /etc/sysconfig/jenkins
//進入后將用戶從jenkins替換成root

  重新構建,終於構建成功。

 


免責聲明!

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



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