回答
我不知道這是否回答了原來的問題或沒有(我不知道,如果意圖是要離開在工作區中的某些文件),但爲什麼不先刪除工作區,這將允許一個乾淨的檢出。
stage ('Clean') {
deleteDir()
}
stage ('Checkout') {
checkout scm
}
首先,您不能假定工作流作業有一個工作區,因爲它是自由式作業。實際上,工作流作業可以使用多個工作空間(每個node
或ws
塊都有一個)。
說了,我要提出的是一種hacky:在結帳前修改scm對象以設置CleanCheckout
擴展名(您必須在那裏批准一些調用)。
import hudson.plugins.git.extensions.impl.CleanCheckout
scm.extensions.replace(new CleanCheckout())
checkout scm
但我更喜歡克里斯托弗·奧爾的建議,使用後checkout
(sh 'git clean -fdx'
)一個配件臺階。
謝謝你。這兩個建議的問題是,它只適用於Git。 –
大多數SCM實現都有等價物。例如,對於Subversion,你可以使用'scm.setWorkspaceUpdater(new UpdateWithCleanUpdater())' – amuniz
我在哪裏可以找到關於這些東西的文檔? (我正在使用Hg。) –
詹金斯目前包含一個頁面來生成groovy管道語法。選擇結帳步驟,您應該可以添加您習慣的所有其他選項。
我產生哪些應該做你想要什麼樣的情況如下:我遇到了同樣的問題,這裏是我的解決辦法
checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[url: 'ssh://repo/location.git']]]
此答案僅適用於普通管道作業,但不適用於多分支管道作業。 –
。 我爲結帳創建了一個新的scm對象,並使用CleanBeforeCheckout擴展了擴展。但我保持其他配置像分支和userRemoteConfigs。
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions + [[$class: 'CleanBeforeCheckout']],
userRemoteConfigs: scm.userRemoteConfigs
])
它仍然不是完美的,因爲你必須reate一個新的對象:(
- 1. 清潔工程
- 2. 多開發商Git工作流程,保持清潔歷史
- 3. 建立在一個單一的構建文件的多個項目和清潔多個項目與ANT
- 4. 清潔網址與導軌
- 5. 清潔網址與htaccess
- 6. 清潔網址與IIS6
- 7. Eclipse不清潔或建立任何項目
- 8. XCode 4「清潔」與「清潔生成文件夾」
- 9. 清潔架構:順序流在框架
- 10. 的NoSuchMethodError清潔工程
- 11. Grails清潔葉java進程
- 12. 清潔工程機制Android
- 13. 需要保留代碼清潔的樹枝自定義功能
- 14. 整潔,清潔訪問SKNodes
- 15. R工作流程:如何處理手部清潔數據
- 16. CSS清潔器
- 17. 清潔RandomAccessFile的
- 18. [R串清潔
- 19. Grails的清潔
- 20. 清潔ArrayCollections
- 21. 清潔值
- 22. 清潔網址
- 23. 清潔django user.username
- 24. 如何使Android的一個假的清潔程序,看起來像清潔大師或其他清潔應用
- 25. Powershell中的清潔/多重-notlike
- 26. 錯誤的NDK,構建清潔
- 27. 在沒有清潔的Maven中構建
- 28. 構建和清潔/ Eclipse的腳本
- 29. 建議清潔這個show.html.erb視圖(Rails)?
- 30. Neo4j的清潔構建失敗
我不知道是否checkout''可以採取進一步的參數多分支我想有更優雅的解決方案,但如果你使用Git,你應該可以運行'sh'git clean -fdx'在「結賬」步驟之後。 –