Jenkins で手動ビルドを禁止する書き方

この記事は約3分で読めます。

Jenkins の運用にて、リリースフローで手動ビルドのリリースを禁止したいときは通常Jenkinsユーザーの権限を制限することで実現するかと思います。
通常はそれでOKですが、さらに念には念を入れて手動ビルドを禁止するために、Jenkinsfile のほうで手動ビルドを禁止する方法を説明します。
ときどきとんでもないことする人でてきますからね。

スポンサーリンク

Jenkinsfileのサンプル

when と triggerdBy を使えば、そのビルドのトリガーが手動(ユーザー)なのかポーリングなのか判定できます。
下記の例は、人が手動でビルドボタンを押したときにビルドを中断させる例です。これで手動ビルドする不届き者を排除できます。


stage ('トリガーチェック') {
    when {
        triggeredBy cause: "UserIdCause"
    }
    steps {
        script {
            echo "Do not execute build triggers manually."
            currentBuild.result = 'NOT_BUILT'
            sh 'false' // 明示的にビルドを失敗させる
        }
    }
}

かんたんですね。

スポンサーリンク

その他のビルドトリガ

ちなみに、Gitなどのポーリングの場合は下記で捕まえられます。


stage ('トリガーチェック') {
    // こっちはSCMポーリングの場合.
    when {
        triggeredBy 'SCMTrigger'
    }
    steps {
        echo "Running because triggered by a SCM Trigger"
    }
}

他には下記のトリガがあるそうです。最後のものは特定のユーザが手動ビルドしたときですね。この例ではvlindeさん。

  • when { triggeredBy ‘TimerTrigger’ }
  • when { triggeredBy ‘BuildUpstreamCause’ }
  • when { triggeredBy cause: “UserIdCause”, detail: “vlinde” }
  • 公式サイトの説明は下記のところです。

    Pipeline Syntax
    Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy...
    スポンサーリンク

    まとめ

    Jenkinsにて手動ビルドされたときにビルドジョブを中断する方法を書きました。
    ユーザー権限で制限するのが普通ですが、さらにJenkinsfileでも禁止しておけば安心ですね。

    コメント