Jenkinsfileですごく雑な承認フローそこそこ簡単に入れられた
ビルトインの機能でできる
pipeline input step という機能を利用したら簡単にできました。とりあえずフローがどんな感じかで流れてくか紹介。
まずはジョブを普通に実行します
ジョブを実行する人はいつも通りです
するとslackに通知がきます
これはリンクのところをクリックするだけ。
クリックしてJenkinsの画面に飛びます
ここはちょっと分かりづらいんだけど、paused for 52s
みたいに書いてあるあたりにマウスをホバーするとこういう黄色いポップオーバーが出てきます。
で、入力も受け付けられるので例えば承認する人の名前を入力して、Proceedを押します。
これで、以降のstepが続行されます。
入力した値が利用できます
例えば入力値を利用してslackに通知したり、buildのdescriptionに書いてみたりできます。
やり方のポイント
- 承認してねの通知のときに slackのリンク記法
<link|ここをクリック>
みたいなのを使って簡単にそれっぽいリンクで表示できる env.APPROVER
みたいにグローバルな変数に格納しとけば他のstageで使える
stage ("approve") { steps { slackSend channel: "#sandbox", color: "good", message: "本番デプロイしてもいいですか?\n<$JOB_URL|ここをクリックしてJenkins上で承認する>" script { def approver = input id: "approver", message: "承認者の名前を入れてください", parameters: [ [$class: 'StringParameterDefinition', defaultValue: '', description: '名前', name: '承認者'] ] env.APPROVER = approver echo env.APPROVER } } }