8

我試圖在Cloudbees上使用Jenkins來自動部署我的軟件。我設置我的工作流程如下。如何在Jenkins工作流程中重複一個階段

Jenkins Workflow

可能有次我想重新部署。 (假設該階段需要手動輸入參數)。我如何在工作流程中做到這一點?這是我的Groovy腳本。

def src = 'https://git.repo.url/proj.git' 

stage 'Build' 
node { 
    env.JAVA_HOME="${tool name: 'Pre-Installed OpenJDK 8 (Latest) on [email protected] nodes', type: 'hudson.model.JDK'}" 
    sh 'javac -version' 
    git credentialsId: 'abcdef', url: src 
    sh 'ant -f build.xml proj.jar report' 
} 

stage 'Generate Release Version' 
input message: 'Create Tar and Push to S3', ok: 'Generate Release' 
node { 
    // TODO 
} 

stage 'QA Approved' 
input message: 'Enter a Tag Name to approve this build and tag in GIT', ok: 'Approve and Tag', parameters: [[$class: 'StringParameterDefinition', defaultValue: '', description: 'Eg: Sprint73', name: 'TAG_NAME']] 
node { 
    // TODO 
} 

stage 'DevOps - Ansible' 
input message: 'Release to Production', ok: 'Release' 
node { 
    // TODO 
} 

我試着用工作使用管道建設,而不是工作流程,這樣我可以重複階段鏈接,但是那有太多的就業機會另一個故事。

+1

這應該解決與「檢查點」插件。但目前這仍然不可能在OSS版本中進行,但投票在他們的問題跟蹤器[JENKINS-33846]上(https://issues.jenkins-ci.org/browse/JENKINS-33846)。隨時提交您的投票! – Zigac

回答

2

假設它是您希望能夠重新啓動的最後一個(Ansible)階段,您可以在它之前放置一個checkpoint

checkpoint 'about to deploy' 
stage 'DevOps - Ansible' 
input message: 'Release to Production', ok: 'Release' 
node { 
    // TODO 
} 

如果你要部署到一個可選擇的目標,你可以使用input

checkpoint 'about to deploy' 
stage 'DevOps - Ansible' 
def target = input message: 'Where to release?', 
    parameters: [[$class: 'StringParameterDefinition', name: 'target']] 
node { 
    // TODO 
} 

更復雜的情況是,你想一直部署到一個標準的目標第一次,但當從檢查點恢復時,您想要求用戶提供替代目標。爲此,你需要知道你什麼時候恢復。目前checkpoint不提供此信息直接(CJP-1620在CloudBees的內部問題跟蹤),但有一個解決辦法:

def origBuildNumber = env.BUILD_NUMBER 
checkpoint 'about to deploy' 
stage 'DevOps - Ansible' 
def target 
if (origBuildNumber == env.BUILD_NUMBER) { // original 
    target = 'production' 
} else { // resumed 
    target = input message: 'Where to release?', 
     parameters: [[$class: 'StringParameterDefinition', name: 'target']] 
} 
node { 
    // TODO 
} 
3

這是唯一可能在詹金斯的企業版。正如@ jesse-glick指出的那樣,您可以在那裏獲得檢查點插件,請參閱documentation

根據CloudBees,目前還沒有計劃在OSS版本中支持此功能。看到這個問題:JENKINS-33846

相關問題