Jenkins のmasterを Docker コンテナで運用していて、プラグインのバージョンだけ上がると本体のバージョンと不整合を起こして起動しなくなることが多々あった。 プラグインのバージョンもなるべく固定できないかを検討した。
カスタムイメージを作る
https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins#consider-using-a-custom-image で紹介されている方法を試す。
これでdocker buildすると /usr/share/jenkins/ref/plugins
と $JENKINS_HOME/plugins
にプラグインファイルが配置済みのイメージができあがる。
あとはこのイメージでJenkinsを起動するようにすれば、バージョンが固定されていて問題が起こりにくい。
プラグインを追加する
Jenkins環境が1つだけならよいが、チームごとにJenkinsサーバーを立てたいといった場合に、カスタムイメージにインストールされているプラグインの他に、個々のユーザーでプラグインを追加する方法を検討する。
Jenkins Helm Chart でやっている方法を真似ることにする。
こうすると、
- pluginsをクリーンする
- 追加したいプラグインのみまずインストールする
- 再度、あらかじめインストール済みのプラグインファイルで上書きする
これで、もし追加プラグインと同じプラグインが依存関係で入ったとしても、あらかじめインストール済みのプラグインのバージョンに上書きされるようになる。 それはそれでバージョンミスマッチが起こりそうではあるが、どちらのほうが問題が起こる可能性が高いか次第で決めればいいと思う。