2014-05-09 137 views
2

我試圖使用gerrit和jenkins來設置CI進程。我已經成功配置了jenkins來觸發構建gerrit事件,並且在這個前沿上一切正常,我可以在jenkins日誌中看到構建成功。我遇到的問題是試圖將構建結果發送回gerrit。我已經設置了格里特集成「生成後行動」,和所有的領域看起來是正確的,但是當我做構建我得到這個堆棧跟蹤:Jenkins在嘗試傳播到Gerrit服務器時出現錯誤

ERROR: Publisher hudson.plugins.gerrit.GerritNotifier aborted due to exception 
java.lang.IllegalArgumentException: Failed to find GIT_HOME in /var/lib/jenkins/jobs/jake/workspace/.git 
at hudson.plugins.gerrit.git.GitTools.getHead(GitTools.java:45) 
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:180) 
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:171) 
at hudson.FilePath.act(FilePath.java:914) 
at hudson.FilePath.act(FilePath.java:887) 
at hudson.plugins.gerrit.GerritNotifier.perform(GerritNotifier.java:171) 
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) 
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714) 
at hudson.model.Build$BuildExecution.post2(Build.java:182) 
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663) 
at hudson.model.Run.execute(Run.java:1714) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:231) 
Finished: FAILURE 

我已經把在命令中構建過程來檢查文件系統,是的,我絕對沒有一個.git目錄。 (我有一個/var/.../workspace/.repo/repo/.git,但將它鏈接到/var/.../workspace/.git不起作用,雖然它給出了一個不同的錯誤,我希望我已經保存了,如果它有幫助,我可以重新運行)

所以我的問題是:我應該如何配置jenkins作業以正確連接到gerrit服務器? (我沒有方便地訪問gerrit服務器,但我的操作假設事情是在那裏設置的,因爲(a)jenkins正確地從中獲取數據,(b)錯誤不會不看所有像連接錯誤)

編輯:最佳的事情將是詹金斯設置+ 1/-1在驗證選項,取決於生成的結果,但即使它可以離開一個一個鏈接到每次運行時查看頁面上發表評論,這將是至少的東西...

編輯2:在HIB的建議,我切換到git的插件,並得到了該堆棧跟蹤:

FATAL: org.eclipse.jgit.lib.Repository 
java.lang.InstantiationError: org.eclipse.jgit.lib.Repository 
at hudson.plugins.gerrit.git.GitTools.getRepository(GitTools.java:24) 
at hudson.plugins.gerrit.git.GitTools.getHead(GitTools.java:48) 
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:180) 
at hudson.plugins.gerrit.GerritNotifier$1.invoke(GerritNotifier.java:171) 
at hudson.FilePath.act(FilePath.java:914) 
at hudson.FilePath.act(FilePath.java:887) 
at hudson.plugins.gerrit.GerritNotifier.perform(GerritNotifier.java:171) 
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) 
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714) 
at hudson.model.Build$BuildExecution.post2(Build.java:182) 
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:663) 
at hudson.model.Run.execute(Run.java:1714) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:231) 

(甚至沒有「已完成:失敗」警告)

刪除在生成後行動的結果「說完:SUCCESS」,但什麼也沒有顯示在格里特起來。

+0

可以請給出有關gerrit觸發器高級設置的截圖嗎?順便說一句,如果你不使用git插件的話。 – HiB

+0

也請添加應該以「Gerrit觸發」作業開始的作業輸出,然後是更改鏈接。順便說一句 - 你使用[這個插件](https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger)? – HiB

+0

這裏是工作輸出:https://gist.github.com/kesinger/16e7b3a9c3c243df79a9 – JCK

回答

0

我假設你使用these instructions來設置Gerrit插件。因此請仔細檢查Git Plugin設置和Advanced...部分Gerrit觸發器設置,這些設置從指南中缺少。如果要發佈的網址帕拉姆爲空,那麼結果消息將包含生成結果網址 - 並且您可以爲每個結果設置自定義消息自定義生成消息。驗證值可以設置爲驗證小節。
如果所有的git插件設置配置正確,你根本不需要打擾git repo。這個相關的answer也許是有用的。
如果一切正常,無需定義任何生成後操作。除非你想設置一個UNSTABLE狀態...

+0

我不是使用git插件,因爲我們需要多個存儲庫來完成整個構建。 我修改了構建目標並嘗試了一下,並得到了一個不同的異常,我將編輯到我的原始消息中。拿出構建後的行動,我得到了「成品:成功」的通知,但沒有出現在gerrit中。 – JCK

0

如果你正在使用Gerrit觸發器,並且在Gerrit中什麼也沒有顯示,即使一切設置正確,你可能想看看Gerrit服務器設置(Jenkins - > Manage Jenkins - > Gerrit觸發器 - >您的服務器名稱在'Gerrit服務器'下)。

根據您的Gerrit版本,如果您點擊「高級」按鈕,您會發現Gerrit驗證命令中的默認值可能被錯誤設置。我有Gerrit 2。8並且必須更改--label <VERIFIED>參數--label Verified=<VERIFIED> 更一般地說,如果日誌報告Jenkins已向Gerrit給出反饋,但在Gerrit界面中沒有任何顯示,則可能是因爲這些輸入字段中的默認值被錯誤設置。

1

我有同樣的問題,發現this解決方案:
停用「哈德森格里特插件」 V0.7

它爲我工作。
顯然我不需要這個插件 - 停用後沒有任何功能消失(據我所知,直到現在...)。

相關問題