Jenkinsの基本的な流れ
JenkinsのWebアプリ(master)とビルドサーバー(masterまたはslave)で構成する
masterはLinux上に構築されることが多いと思う。
slaveはWindows, Linux, Macなど…要するにJavaが動けばいい。
pipeline scriptとGroovyはslave側で処理を行う。
ビルドが通る環境をあらかじめ構築しておき、そのslaveでビルドするためのscriptを書く
Jenkinsは「何でもプラグイン」な感じで、ほとんどプラグインで動かす設計思想。
ここまではいいけど、無数にあるプラグインが曲者。
例えば、GitのプラグインはGlobal Tool Configurationで実行ファイルの絶対パスを指定するようになっていて、agentに関係なく同じパスで動かそうとするけど、分散ビルドなのに意味があるの?この作り。
slaveで動くプログラムをJenkinsにキックさせるだけの作りがシンプル
標準出力されたものは全部Consoleに出力および記録されるから、わざわざGroovyで書き直すだけ労力の無駄だと思う。
どうせ、ビルドの基本パスは成功か失敗しかない。
あと、JenkinsのGroovyサポートは中途半端な感じがする。静的解析を対応したものは、Jenkinsが機嫌を損ねてエラーを吐くとか…Groovyをサポートしきれていない。
頑張ってプラグインを使うより、slave内で動くプログラムを優先して使った方が幸せになれるし、労力の無駄を省ける。