PhysApp

趣味と開発関連のメモ置き場です

pipelineでConditional Stepをつくる【Jenkins】

pipelineを使い始めてみたのはいいけどConditional Stepをどうやるんだ?ってなったのでメモ。

書き方

whenの中に条件を書くと条件に一致する時に下のstepsが回ります。

真偽値

真偽値で条件分けをする時に気をつけないといけないのは、真偽値のパラメータを設定していたら、.toBoolean()をつけないと文字列として扱われるので条件判別をちゃんとしてくれなかった所。

(${param.hoge}じゃ動かなかったのも.toBoolean()で動いたのかも。そこは未確認)

探し回ってやっとの思いで見つけたのが海外のサイトでした。ありがとう海外サイト。

pipeline {
    agent any
    options {
        timestamps()
    }
    stages {
        stage('main') {
            when {
                expression {
                    return HOGE.toBoolean()
                }
            }
            steps {
                Build(job: 'hogejob')
            }
        }
    }
}

文字列

文字列の比較は==で比較できます。

when {
    expression {
        return (hoge == 'hoge')
    }
}
steps {
    ...
}

複数条件

複数条件は以下のような書き方。

かつ、または、の条件を指定するときはallOf、anyOfを使って指定します。

allOfAND(&&)
anyOfOR(||)
notNOT(!)
pipeline {
    agent any
    options {
        timestamps()
    }
    stages {
        stage('main') {
            // if ( HOGE || ( FUGA && !PIYO ) )
            when {
                anyOf {
                    expression {
                        return HOGE.toBoolean()
                    }
                    allOf {
                        expression {
                            return FUGA.toBoolean()
                        }
                        not {
                            expression {
                                return PIYO.toBoolean()
                            }
                        }
                    }
                }
            }
            steps {
                Build(job: 'hogehogejob')
            }
        }
    }
}