2016-11-04 66 views
0

我正在使用我非常喜歡的新Jenkins管道DSL。我的Jenkinsfile可能是相當典型的,使用maven在GIT的master分支中編譯/單元測試代碼,是一個碼頭構建,部署到舞臺等。對管道的末端有一個手動步驟,用戶必須確認建立生產,例如Jenkins管道DSL自動中止輸入

stage name: 'Production Deploy', concurrency:1 
input 'Do you want to deploy to production?' 
node { 
    sh "./bin/production-deploy.sh" 
} 

但是,構建塊直到有人接受/拒絕。有沒有辦法自動拒絕input,如果有人踢掉了構建(通過合併代碼到master分支)?

+2

分離CD管道的CI管道。在您構建,測試和部署從開發階段到登臺階段的CI管道中,有人驗證登臺部署,並在第二步中在部署到生產階段時執行DC管道。這樣你就有了獨立的生命週期開發過程和獨立的交付過程。 – johnnynemonic

+0

你是否建議每個項目有2個管道?這是做這件事的最佳做法嗎?我認爲(通過閱讀「持續交付」一書http://martinfowler.com/books/continuousDelivery.html),您希望在單個構建流水線中的所有階段(編譯 - >分段 - > QA - >等 - >生產) – bobmarksie

+1

你的情況,是的。在本書提出的案例中,如果整個過程是自動化的,並且沒有暫停或人爲交互,那麼順利進行。並且您已在您的基礎架構中實施了一些藍/綠部署的功能,這些功能允許在VM節點中驗證您的部署,同時爲其他VM節點提供生產服務。 – johnnynemonic

回答

0

我向您分離了Continuos Delivery管道的Continuos Integration管道。在您構建,測試和部署從開發階段到登臺階段的CI管道中,然後有人驗證登臺部署,以及在下一步執行DC管道時所有登臺測試都正常的情況;是當你部署到生產階段。那樣你就有了獨立的生命週期開發過程和獨立的交付過程。