一、Jenkins構建失敗怎麼看失敗問題
Jenkins構建失敗是一個非常常見的問題,出現的原因也是非常多樣。舉個例子,當你在構建 Maven 項目時,可能會出現下面這樣的報錯信息:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /path/to/your/java/file.java:[28,61] cannot find symbol
symbol: method someMethod()
location: class MyClass
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
這個錯誤信息告訴你,Maven 編譯過程中有一些符號無法找到,具體來說是在 MyClass.java 的第 28 行,其中生僻的代碼片段 someMethod() 函數無法被找到。這就需要我們逐步查明問題所在。
1、查看構建日誌
在 Jenkins 的構建歷史記錄頁面中,你可以找到構建失敗後的日誌記錄。這是進一步了解問題的絕佳資源。
Started by user Tom
Building in workspace /var/lib/jenkins/workspace/myproject
[... some information about the project ...]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.137 s
[INFO] Finished at: 2019-03-22T17:44:20+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project myproject: Compilation failure: Compilation failure:
[ERROR] /path/to/your/java/file.java:[28,61] cannot find symbol
[ERROR] symbol: method someMethod()
[ERROR] location: class MyClass
[ERROR] -> [Help 1]
[ERROR] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[ERROR] ------------------------------------------------------------------------
這是上述 Maven 項目構建失敗的一個示例,其中紅色部分是關鍵信息:錯誤發生在 MyClass.java 文件的第 28 行。
2、查看 Console Output
一個更直觀的辦法是查看 Jenkins 的構建控制台日誌。
如果你使用 Maven 進行構建,你會在 Jenkins 日誌的開頭找到 Maven 的運行信息。Maven 通常會輸出紅色的 [ERROR]
信息以提示你錯誤的發生位置。
3、使用 Jenkins 提供的插件
Jenkins 社區提供了許多插件來幫助你解決構建失敗的問題。比如,當你在構建 Maven 項目時,你可以使用 Maven Dashboard 插件進行分析。
二、Jenkins構建失敗找不到符號
Jenkins 構建失敗的一個常見問題是「找不到符號」。比如,上面的示例中就出現了這個問題。在 Maven 編譯中,這通常意味著類路徑中沒有指定的類庫或者類庫版本不正確。
1、查看依賴關係
構建失敗可能是因為某個依賴項無法從 Maven 倉庫中找到。此時,你需要檢查你的 Maven 配置文件 pom.xml
中的依賴項是否正確。有一個非常實用的 Maven 插件,可以幫助你找出依賴關係的問題:Maven Dependency Plugin。
mvn dependency:tree
該命令將顯示所有 Maven 項目依賴項的樹形結構。這可以幫助你輕鬆找到依賴關係的問題,以支持正常構建。
2、查看工作目錄中的所有文件
當你的 Maven 項目編譯失敗時,可能是因為目錄中的某個 java 文件編譯失敗。那麼,你需要檢查目錄中的所有文件並解決問題。
find . -name '*.java' | xargs javac
上述命令將編譯所有的 Java 文件,並輸出任何編譯錯誤。
三、Jenkins構建失敗常見問題
1、許可權問題
Jenkins 在運行項目時,需要訪問腳本和文件。如果你遇到構建失敗,且失敗信息中沒有明確指明是什麼問題,那麼你可能需要檢查 Jenkins 運行時的許可權。在 Linux 系統中,你可以檢查文件的 rwx
許可權:
ls -l
2、構建的磁碟空間滿了
Jenkins 伺服器的構建目錄可能會滿,這樣就會導致後續構建失敗。這種情況下,你只需要在文件系統中釋放一些空間,就可以解決問題。
3、Jenkins 佔用的內存不足
如果 Jenkins 構建失敗時,你遇到諸如「Out of Memory」之類的錯誤,那麼你需要為 Jenkins 分配更多的內存。在 /etc/init.d/jenkins
(Debian/Ubuntu) 或 /etc/sysconfig/jenkins
( CentOS/RHEL) 中,你可以找到相應的參數(比如 – Xmx
或者 Xms
),以控制 Jenkins 的內存分配。
四、Jenkins刪除構建的項目
1、手動刪除
可以手動刪除 Jenkins 構建歷史記錄中的項目記錄。進入 Jenkins 的「管理 Jenkins」頁面,然後點擊「刪除構建」按鈕即可實現。
2、使用 Jenkins 插件
你也可以使用 Jenkins 提供的插件來刪除構建歷史記錄。例如,你可以使用 Jenkins Job Manager 插件。
jenkins-jobs --conf /etc/jenkins_jobs/jenkins_jobs.ini delete my-job
該命令將刪除名為 my-job
的 Jenkins 任務。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244022.html