2017-02-06 25 views
0

我對詹金斯比較新(使用2.32)。所以請原諒我的無知。Jenkins - 單個項目的多個工作問題

在我當前的設置中,我爲一個項目提供了2個自由風格的作業 - 一個指向生產分支(/master),另一個指向Dev分支(/dev)。 Bitbucket被配置爲在變化時調用(webhook)Jenkins。

一旦開發完成並且它通過了所有的單元測試,它就會部署到開發服務器。最終,所有開發人員更改都通過拉請求推送給主人。主分支中的更改觸發主作業並將工件部署到生產中。

我不覺得這個設置是正確的,並希望你的專家建議。有2份工作讓我感到不舒服。如果我想要一個舞臺發佈會怎麼樣?我需要另一個自由式的工作。沒有多大意義。

我該如何處理一項工作?你們如何實現這一目標?使用管道?任何指針將不勝感激。

TIA。

回答

1

你是正確的,你可以在此更好地管理Jenkins Pipeline

你可以做的是:

1)檢出來自Dev分支的代碼,並把它放在一個目錄中的工作空間。

2)從該目錄編譯和部署。

3)添加一個手動步驟以批准從主分支部署。

4)重複步驟1和2。

樣品代碼看起來是這樣的:

node {  
    // Get code from git repo 
    checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "origin/dev"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-dev-dir']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<jenkins-github-credential-id>', url: 'https://github.com/test']]] 

     dir('test-dir') { 
     // Do your stuff 
     } 

    // stage concurrency: 1, name: 'approve' 
    // input id: 'master-deploy', message: 'Deploy from master?', ok: 'Deploy' 

    // Get code from git repo 
    checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: "origin/master"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'test-master-dir']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<jenkins-github-credential-id>', url: 'https://github.com/test']]] 

    dir('test-master-dir') { 
     // Preferbably create a tag for future hotfix maybe? 
     // Do your stuff 
     } 
} 
+0

感謝和Manish。你如何將Dev代碼更改推回到prod repo? –

+0

我相信這是一個合併過程,所以我建議遵循當前手動合併過程,因爲可能存在潛在的衝突,需要手動解決。這就是爲什麼我添加了手動審批流程,以便一旦有人將其合併,他們可以批准部署。 –

相關問題