記一次jenkins構建失敗的踩坑記錄


 

核心要旨:排錯要一步一步排查,一步一步確認,確認問題失敗在哪一步,而不是憑空猜測錯誤.

異常信息:

Started by user admin
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/app-server
using credential 2c84e055-ab32-4bcb-9642-e490e1fb4443
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url https://gitee.com/kinome/aggregationServicePlatform.git # timeout=10
Using shallow fetch with depth 1
Fetching upstream changes from https://gitee.com/kinome/aggregationServicePlatform.git
 > /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > /usr/bin/git fetch --tags --progress --depth=1 https://gitee.com/kinome/aggregationServicePlatform.git +refs/heads/*:refs/remotes/origin/* # timeout=60
 > /usr/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > /usr/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 0e92eabfe44ed70dcc240fcd7b714c2de2f0c7c6 (refs/remotes/origin/master)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f 0e92eabfe44ed70dcc240fcd7b714c2de2f0c7c6 # timeout=10
Commit message: "commit"
 > /usr/bin/git rev-list --no-walk 0e92eabfe44ed70dcc240fcd7b714c2de2f0c7c6 # timeout=10
Parsing POMs
Established TCP socket on 37780
[app-server] $ /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.13.jar:/usr/share/maven/boot/plexus-classworlds.jar org.jvnet.hudson.maven3.agent.Maven3Main /usr/share/maven /root/.jenkins/war/WEB-INF/lib/remoting-4.2.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.13.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.13.jar 37780
ERROR: Failed to parse POMs
java.io.IOException: Cannot run program "/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java" (in directory "/root/.jenkins/workspace/app-server"): error=2, 沒有那個文件或目錄
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:252)
    at hudson.Proc$LocalProc.<init>(Proc.java:221)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:936)
    at hudson.Launcher$ProcStarter.start(Launcher.java:454)
    at hudson.maven.AbstractMavenProcessFactory.newProcess(AbstractMavenProcessFactory.java:280)
    at hudson.maven.ProcessCache.get(ProcessCache.java:236)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:804)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
    at hudson.model.Run.execute(Run.java:1856)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:428)
Caused by: java.io.IOException: error=2, 沒有那個文件或目錄
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 12 more
Finished: FAILURE

 

本質原因是因為jdk版本升級了,之前的javahome路徑失效了導致的.

但是在java升級的那天,我修改了gitee的密碼,然后我從一開始就以為是因為憑證出了問題(因為在第一步就是使用憑證拉取git上的項目),然后我又看到timeout=10這種提示,以為是真的超時了(其實只是在提示超時時間值,並沒有真的超時),然后又是各種搜,各種嘗試跟憑證有關的東西,甚至想用sshkey來弄結果不行.

但是其實一開始排查就發現用戶名和密碼正確,也沒有報錯,但是就是構建失敗,其實這個時候我還是以為拉取失敗了,這一步我應該在確認了用戶名密碼沒錯並且沒報錯的情況下,先檢查有沒有真的拉取到,然后再進行判斷的,而不是理所當然的猜測.

然后檢查到了其實是拉取到了,跟憑證沒關系,往下走發現了java找不到的異常,修改javahome之后就可以了.

正好修改gitee的密碼的那天升級了java,才對認知造成了影響.

 

所以以后如果出現bug,應該一步一步按照事實和異常消息來,並且檢查相關配置,而不是盲目百度和把猜測作為事實.

 

========== 更新 2021-05-19

 

 

 -U clean install 用於解決 Jenkins構建未拉取最新的包導致自動構建失敗

 


免責聲明!

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



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