まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Jenkinsfileですごく雑な承認フローそこそこ簡単に入れられた

ビルトインの機能でできる

pipeline input step という機能を利用したら簡単にできました。とりあえずフローがどんな感じかで流れてくか紹介。

まずはジョブを普通に実行します

ジョブを実行する人はいつも通りです

f:id:masato47744:20180124232814p:plain

するとslackに通知がきます

これはリンクのところをクリックするだけ。

f:id:masato47744:20180124232832p:plain

クリックしてJenkinsの画面に飛びます

ここはちょっと分かりづらいんだけど、paused for 52s みたいに書いてあるあたりにマウスをホバーするとこういう黄色いポップオーバーが出てきます。 で、入力も受け付けられるので例えば承認する人の名前を入力して、Proceedを押します。

f:id:masato47744:20180124232843p:plain

これで、以降のstepが続行されます。

入力した値が利用できます

例えば入力値を利用してslackに通知したり、buildのdescriptionに書いてみたりできます。

f:id:masato47744:20180124232916p:plain

やり方のポイント

  1. 承認してねの通知のときに slackのリンク記法<link|ここをクリック>みたいなのを使って簡単にそれっぽいリンクで表示できる
  2. 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
        }
      }
    }