8

私はソフトウェアの展開を自動化するためにJenkinsをCloudbeesで使用しようとしています。ワークフローを次のように設定しました。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 
} 

私はあまりにも多くの仕事を持つ別の話を私はステージを繰り返すことができますように、代わりに、ワークフローのパイプラインを構築し使用して、ジョブチェーンを使用してみましたが、thatsの。

+1

これは "checkpoint"プラグインで解決する必要があります。しかし、現在のところOSS版ではこれはまだ可能ではありませんが、投票は問題追跡ツール[JENKINS-33846](https://issues.jenkins-ci.org/browse/JENKINS-33846)で行われています。あなたの投票を送信してください! – Zigac

答えて

2

再起動できる最後の(有能な)ステージであれば、その直前に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は(CloudBeesの内部問題追跡にCJP-1620)を直接この情報を提供していませんが、回避策があります:

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が指摘しているように、Checkpoint Pluginはそこにあります。documentationを参照してください。

現在、CloudBeesによるOSSバージョンのこの機能をサポートする予定はありません。 JENKINS-33846

関連する問題