0

我有問題的三個項目,讓我們稱他們爲A,B和C.當「A」只是準備B中的某類構建的情況下,這是主要的構建。 C清理場景並基本上將B重置爲其原始狀態。 我已經將這些項目設置在同一個隊列中,並且在項目B失敗時測試了大部分工程的此過程。這是下面解釋的情況。這種情況下ForceBuild關注 - CruiseControl.NET

<project name="A" queue="main"> 
    <publishers> 
    <email status of build/> 
     <forcebuild> 
     <project>B</project> 
     </forcebuild> 
     <forcebuild> 
     <project>C</project> 
     </forcebuild> 
     </publishers> 
    <task>Prepares special scenario</task> 
</project> 
<project name="B" queue="main"> 
    <publishers> 
    </publishers> 
    <task>Builds main project</task> 
</project> 
<project name="C" queue="main"> 
    <publishers> 
    </publishers> 
    <task>Resets special scenario</task> 
</project> 

方案:

  1. 當項目 'A' 是被迫的,它建立項目B,如果B是成功的,它建立C.這工作得很好。
  2. 當項目「A」是被迫的,它建立項目「B」,如果B出現故障,它建立C.這也是在我的情況很好。
  3. 數2場景和錯誤之後立即被固定在項目B;如果再次強制項目A並且項目B顯示巡航狀態爲「固定」,則不會生成C.這不正確?

任何人都可以看到,之所以的項目C.不會,如果建2,3號的組合會發生什麼?歡迎任何幫助或指導。

謝謝。

回答

1

你用它做之後,應該經常清理你的測試環境。我建議對項目C使用project trigger,並將其設置爲類似於以下內容。如果A成功(這可以通過修改C中的項目觸發器來更改),這將允許C始終運行。

<project name="A" queue="main"> 
    <publishers> 
    <email status of build/> 
    <forcebuild> 
     <project>B</project> 
    </forcebuild> 
    </publishers> 
    <tasks>Prepares special scenario</tasks> 
</project> 

<project name="B" queue="main"> 
... 
</project> 

<project name="C" queue="main"> 
    <triggers> 
    <projectTrigger project="A" /> 
    </triggers> 
    <publishers /> 
    <tasks>Resets special scenario</tasks> 
</project> 
+0

謝謝馬修。有趣的是,我無法重新創建我的本地服務器上初始說明的場景。我的方法和你建議的方法都按預期工作。但前進我會採用ProjectTrigger的使用,因爲它似乎是處理這些情況的更清晰的方式。再次感謝 ! – Geddon

1

能預測A負責清理的當前狀態,併爲新的版本做準備。

說,例如有通過B的構建停電一部分的方式。在這種配置中,您需要手動強制C才能運行構建過程?

如果A運行與C相同的任務,那麼作爲自己的任務,這將消除這個問題,我也相信你。

+0

感謝。我認爲項目A可以對兩者負責,但是A需要成功,因此B可以構建,而C應該只能在B之後構建。這就是爲什麼C是一個單獨的項目。由於A,B和C在同一隊列中,如果A被強制,B總是會在C之前被創建......你能更準確地解釋一下你的意思嗎?「如果A運行與C相同的任務,那麼它就是自己的任務「,? – Geddon

+1

運行測試用例後,應始終清理環境。因此,您應該始終運行C以使自己恢復到有效狀態。 –

+0

@Jerome。我修復了語法,對於混淆感到抱歉 –