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

相关问题