2015-02-10 50 views
1

我想將Jenkins與UCM ClearCase環境集成,並且在構建過程中遇到問題。Jenkins ClearCase UCM插件檢索更改錯誤

首先,我在我的集​​成流上創建了一個推薦的基準,並在我的開發流中重新命名了這一基準。

我詹金斯作業對我的集成流和投票配置的「子流」

我在文件中添加一個「#」做出一點改變和調查後觸發構建。在更改之後,我創建了將由插件檢測到的基線。

這似乎正常工作,直到這導致構建失敗的錯誤:

[CCUCM] Getting snapshotview 
[CCUCM] Updating view using all modules. 
java.io.IOException: Error while retrieving changes 
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:49) 
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:21) 
    at hudson.FilePath.act(FilePath.java:981) 
    at hudson.FilePath.act(FilePath.java:959) 
    at net.praqma.hudson.scm.CCUCMScm.generateChangeLog(CCUCMScm.java:563) 
    at net.praqma.hudson.scm.CCUCMScm.checkout(CCUCMScm.java:246) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1265) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:622) 
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:528) 
    at hudson.model.Run.execute(Run.java:1759) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:89) 
    at hudson.model.Executor.run(Executor.java:240) 
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 
    at java.lang.String.substring(String.java:1949) 
    at java.lang.String.substring(String.java:1916) 
    at net.praqma.clearcase.ucm.entities.Activity$Parser.parse(Activity.java:275) 
    at net.praqma.hudson.remoting.deliver.GetChanges.invoke(GetChanges.java:43) 
    ... 13 more 
Processing baseline 
[CCUCM] Build result: FAILURE 
[CCUCM] Cancelling the deliver. Cancelling 
Failed. 
[CCUCM] Performing common post build steps 
[CCUCM] Build failed. 

,如果我沒有創建一個變化後的新的基準和我在「初始」級別更改舊的基準,構建成功,但由於舊基線不包含上次更改,因此不會提供更改。

有人對此問題有所瞭解嗎?

回答

0

問題可能有很多可能的原因,但從子流傳遞到目標集成流似乎存在問題。 要找出造成問題的原因,您可能需要手動執行Clearcase交付操作,即從源流視圖啓動交付到目標流。嘗試使用類似的條件:

-snapshot視圖

路徑的長度-same的快照視圖根文件夾(以防萬一你達到255個字符的限制,如果你是在Windows上)

候選條件的原因是:

1)元素無法傳遞,因爲它無法在目標視圖中檢出。這可能是由於權限問題導致的,原因是它已經在流上檢出,但是在另一個視圖中,或者由於某些元素在路徑方面超過了255個字符。

2)在交貨時元件需要手動合併。

如果您使用的版本低於1.2.0,您可以在DEBUG模式下設置日誌級別ccucm_loglevel。如果您使用1.2.0插件或更高版本,您可能會發現另一種調查方法是設置

+0

Jenkins ClearCase UCM插件在作業工作區中創建了一個快照視圖,但我不完全明白它在構建時的作用觸發。當Jenkins在我的開發流中檢測到新基線時,似乎他正在掃描集成流工作區,但未檢測到在集成中交付它們的開發流更改。你有什麼jenkins配置在子流查詢時正在做什麼的想法? – Billyjones 2015-02-11 12:54:51

+0

通常,它會執行從源流到目標流的「cleartool遞送基礎」。您是否檢查過源流上基線的提升級別?它處於拒絕級別,插件不應執行交付。此外,如果您可以訪問更多的日誌以查看完成的情況,那就太好了。除了Jenkins日誌,您可能還想檢查Clearcase日誌。它們可以在/ var/adm/atria/log(適用於Linux/Unix)中找到。您必須在view_server日誌的視圖服務器上查看它們。 vob服務器上的albd_log也很有用。 – iclman 2015-02-11 20:04:48

+0

當我在此更改之後執行更改和「cleartool mkbl」時,在發生更改的組件上創建的基線處於INITIAL級別。 Jenkins正在檢測這個基線,但不能像控制檯輸出中所說的那樣「檢索更改」。在日誌記錄中,插件似乎希望取消不存在的傳遞,以便引發錯誤。我在這段代碼中發現了錯誤信息:https://github.com/jenkinsci/clearcase-ucm-plugin/blob/master/src/main/java/net/praqma/hudson/remoting/deliver/GetChanges.java,但是我可以檢索可觸發異常的內容。 – Billyjones 2015-02-16 10:19:09