なっく日報

技術やら生活やらのメモ

Jenkinsでparameterized buildを定期実行したときの注意点

やりたかったこと

手動実行時はSVNで指定したタグを落としてきてから実行
定期実行時は前回落としてきたタグのプログラムを利用して実行

起こったこと

定期実行時に、パラメータ指定はデフォルト値を空を期待していたのに、なぜか最新のタグが指定されて実行されてしまった・・・

※ 以前は大丈夫だったのに、突然。。。
※ "List Subversion tags"の機能を使ってました。2016年なのにSVNかよ!というのはさておき

対策

こちら公式によると

Jenkins : Parameterized Build

Limitations
Currently the following are the known problems:

When build triggers are used to start a build, there's no way to pass parameters. This includes SCM polling, downstream builds, and periodic builds. Instead, the specified default values will be used for string, boolean and choice parameters.

SCMのポーリングとか、定期実行時とか、手動以外で実行した際にはデフォルト値が使われるそうです。
なので、デフォルト値を明示的に指定しておくことにしました。

デフォルト値を"DEFAULT_VALUE"

とし、SVN_TAG_PARAMが、空 or DEFAULT_VALUEのときはチェックアウトしないという風に書き換えればOK

# タグが指定されている場合、チェックアウトする
if [ "${SVN_TAG_PARAM-DEFAULT_VALUE}" != 'DEFAULT_VALUE' ]; then
  svn co https://svn/tags/"${SVN_TAG_PARAM}"
fi