2017-09-08 115 views
2

我需要在構建開始之前清除工作區。我試着分階段使用cleanDir(),但是在聲明式管道中,首先檢查出現,並且在cleadDir運行的階段,檢出的代碼也被清除,這是不需要的。我們如何才能在聲明式管道中檢出之前清除工作區?如何在作業開始前清除Jenkins管道中的工作區

+0

怎麼樣運行'git的清潔-fdx' _after_結賬,讓Git的處理剩下的? – StephenKing

+0

這適用於一個簡單的項目。必須檢查一個真實的項目。 @StephenKing我如何接受評論作爲答案。 – rashidcmb

+0

將其作爲答案發布。 – StephenKing

回答

4

使用您的VCS的手段,使用Git運行

git clean -fdx 
+0

謝謝@StephenKing – rashidcmb

1

像這樣的東西應該工作:

  env.WORKSPACE = pwd() 
      sh "rm ${env.WORKSPACE}/* -fr" 
+0

當從一個步驟調用時,這也會刪除簽出的代碼。 – rashidcmb

+0

這會刪除整個工作區,就像你問的那樣。在檢查代碼之前,我找到了一份工作,因此對我來說這有點合理。 – Frankenstein

+0

當你在簽出代碼之前說,你是否在管道的下一步檢查了代碼? – rashidcmb

0

一個稍微不同的方法是使用stash step藏匿代碼第一:

stash includes: 'src/**', name: 'source-code' 

之後,你可以在你當前的工作區刪除一切。在稍後的階段,你可以簡單地unstash再次源代碼:

unstash 'source-code' 

藏匿的另一個優點/ unstash是,你可以用它來共享多個詹金斯節點間的文件。

+0

看起來像@StephenKing答案是最簡單的方法。一舉成立,投入實際項目並檢查影響。 – rashidcmb

+0

同意。 'git clean'是一個很好的解決方案。在多節點環境中運行時,認爲存儲/非存儲方法值得分享,因爲它非常方便。 – fishi

+0

如果您將數據傳輸到主設備並返回,將不會很有趣。 – StephenKing

4

其實,我有一個基於最新的變動管道的插件,例如修改我的答案GitHub Branch Source Plugin 2.2.0與JENKINS-43507

除了不同的分支發現行爲,其可以被配置,現在可以定義附加的要採取的步驟,其中包括清潔結帳之前(和清潔結帳後):

enter image description here

的結果管道執行中的輸出將爲

Cleaning workspace 
    > git rev-parse --verify HEAD # timeout=10 
Resetting working tree 
> git reset --hard # timeout=10 
> git clean -fdx # timeout=10 

所以,自己很靠近打電話git clean

+0

更新後我發現這個選項。如果我們有多個管道工作,並且我們可能不需要刪除所有分支。在這種情況下,使用git clean會更容易。 – rashidcmb

0
stage('Git') { 
      steps { 
       step([$class: 'WsCleanup']) 
       checkout scm 
      } 
     } 

的WsCleanup的伎倆

相關問題