Jenkinsに関するQ&A part1(2022 Jenkins Day Japan)


こんにちは。先日のJenkins Day Japan 2022の
Session A-4「Jenkinsはもう古い?様々な角度から見たJenkinsの現状の紹介」
に登壇した長久保です。セッション中もたくさんの質問ありがとうございました。

セッションの内容はオンデマンド配信として公開しておりますので、ぜひ視聴いただければと思います。

今回はセッション内で回答しきれなかったものも含め、改めて皆様から頂いた質問について回答をさせていただきます。

目次

質問1:利用したいプラグインが無い

非対応プラグインで代替のものがないものがあるのが困っています。

まずはJenkinsのプラグインページにて検索していただく事をお勧めします。目的に該当するプラグインが見つからない場合、Webで検索という流れになるかと思います。

Jenkinsに対して何かコマンドラインから実行することで実現可能な内容であればJenkins CLIで解決できるかもしれません。

また、プラグインについては開発することも可能です。その場合こちらのチュートリアルが参考になるかと思います。

もしそれでも解決方法が見当たらない場合、弊社テクマトリックスにてJenkinsのテクニカルサポートなども行っておりますので、ぜひお気軽にご相談いただければと思います。

質問2:Java 8→11へのバージョンアップ

Jenkins最新化に際し、Java 8からJava 11に変更しようとしているのですが、うまくいくかとても不安です。注意点あれば教えてほしいです。

Jenkinsは2022年06月28日にアナウンスがあったように、Java8のサポートが終了しています。

Beginning with Jenkins 2.357 (released on June 28, 2022) and the forthcoming 2.361.1 LTS release, Jenkins requires Java 11 or newer. 

https://www.jenkins.io/blog/2022/06/28/require-java-11/

余談となりますが、Java8環境のまま最新のJenkinsにバージョンアップをした場合、以下の様なエラーになりJenkinsの起動に失敗します。

Sep 08, 2022 7:38:49 AM executable.Main verifyJavaVersion
SEVERE: Running with Java class version 52, which is older than the Minimum required version 55. See https://jenkins.io/redirect/java-support/
java.lang.UnsupportedClassVersionError: 52.0
at executable.Main.verifyJavaVersion(Main.java:145)
at executable.Main.main(Main.java:109)
Jenkins requires Java versions [17, 11] but you are running with Java 1.8 from /opt/java/openjdk/jre
java.lang.UnsupportedClassVersionError: 52.0
at executable.Main.verifyJavaVersion(Main.java:145)
at executable.Main.main(Main.java:109)

Jenkinsだけではなく、Javaのバージョンアップも伴う影響の大きなバージョンアップになります。長期間メンテナンスされていないプラグインがJava 8対応されていないなど様々なリスクが考えられますので、以下の順でバージョンアップを行うと良いかと思います。

  1. 稼働中のJenkinsからバックアップを取得。稼働中とは別のJava 11環境に検証用のJenkinsを構築。取得したバックアップを復元し、検証用のJenkinsにて動作確認をする。
    バックアップの取得と復元方法については以下を参照ください。
    Backing-up/Restoring Jenkins
  2. Javaのバージョンを上げ、稼働中のJenkinsのバージョンアップを行う。
    こちらの手順につきましては公式のアナウンスを参照下さい。
    Upgrading Jenkins Java version from 8 to 11

質問3:Jenkinsが主流ではなくなる時?

もし勘所があればなのですが、JenkinsがCI/CDの主流で無くなることがあるとすれば、どのような時だと思われますでしょうか??

あくまで私の私見となります。

主流=シェアとするのでれば、突然Jenkinsが無くなるという事は考えづらいですが、CI/CDツールの選択肢が増えたことにより、今後も徐々にシェアは下降していくのではないかと思います。

例えばオンプレとクラウド。元々オンプレしかなかったところにクラウドという選択肢が加わったことで、オンプレのシェアが低下しているといったイメージに近いのかなと思います。このようなことがCIツールについてもいえるでしょう。

Jenkinsは現時点では多くのユーザーに利用されています。また、セッション内で触れたように年々Jenkinsのコントローラー数やジョブ数も増え続けています。また少なくとも現時点では活発に開発もされていますし、突然メンテナが不在になり利用できなくなるという事は考えづらいです。
Jenkinsの良いところは様々なツールと連携できるところかと思います。過去の情報資産も多いですし、十分安定稼働するために枯れたツールです。新しくCIツールの利用を開始する際にこれが決め手で選ばれることもあると思います。
その一方、例えばSaaSでの提供は(現時点では)ありません。開発者がサーバー管理などはしたくない!となればその時点でJenkinsは選択肢から外れます。
他のプログラミング言語のようにある日突然主流ではなくなるという事ではなく、徐々に時代の流れに沿って変わりつつ、利用は続けられていくのではないかと思います。

質問4:Jenkinsの良いところ、悪いところ

さまざななツールと比較して、Jenkinsの良いところ、悪いところがあれば教えてください。

こちらも私見となります。

質問3でも少し触れましたが以下の様な点が挙げられるのではないかと思います。

良いところ

連携できるツールが豊富
プラグインも1800を超えるプラグインがあり、「他のツールは連携できるのにJenkinsは連携できない」という事は少ないです。構成管理の連携についても様々なツールと連携できるので、ベンダーロックインの予防にもつながります。

安定稼働している・変化が少ない
使っていての驚きは少ないですが、裏方として存在するCIツールとしては大きなメリットかと思います。変化が少ないという事は、現状でも十分機能が整っているという事です。安定的に利用できる基盤としてとても良い部分かと思います。

過去の情報資産が使える
ツール自体の歴史が長いので、過去様々な人がハマったトラブルシュートを参考にすることができます。また、変化が少ないという事についても関連しますが、刻々とアップデートされているツールだと過去の資産が使えないという事もありますが、そういった心配がJenkinsでは比較的少ないかと思います。

細かい設定ができる
通知するメールの文面の変更だったり、ログの設定だったり、起動時のJVMオプションであったり、様々な設定が可能です。例えばSaaSのツールは構築面で有利ですが、こういった細かい設定が出来ないことがある印象です。

セキュリティに対しての開発は活発に対応されている
変化が少ないと記載しましたが、セキュリティに対しては直ちに対応されます。公式ページにも専用ページがあり、メーリングリストやRSS フィードでも通知を受け取ることができます。また、2021年に起きたLog4jの様な大きな問題時にはブログでの報告・対応方法の周知といったことも迅速に行われています。

悪いところ

SaaSが無い
個人的に一番大きな悪いところかと思います。「サクッと使いたい」といったときにJenkinsはインストールが必要だったり、エージェントを自前で用意する必要があったりと何かと手間がかかる印象です。
例えばAzure Pipelinesを利用するとサクッとコードと連携して、ビルド環境もAzure側で用意してくれているものを使うだけ、といったことがJenkinsだとできません。

古いイメージがある・目新しさが無い
新しいものをスマートに使いたい開発者にとってはJenkinsは魅力的に映らないと思います。GitHub Actionsのようにどんどんと機能が追加されていくCI/CDツールと比較すると見劣りするかもしれません。

質問5:Jenkinsのバージョンアップ時の注意点

本日の発表を聞いてパイプラインを使ってみたいのですが、Jenkinsが古くバージョンアップが必要そうです。注意する点があれば教えてください。

質問2と重複する部分がありますが、Javaの実行環境の更新を伴うJenkinsのバージョンアップが必要かと思われます。
以下を参考にバージョンアップをお願いします。
Upgrading Jenkins Java version from 8 to 11

また、あまりにも環境がかけ離れている、といった場合はお手元のPCにJenkinsを試しにインストールをして利用してみるというのも良いかと思います。

具体的なパイプラインの書き方については弊社で記載している以下のブログが参考になるかもしれません。ご一読いただけると嬉しいです。

質問6:Subversionでもマルチブランチパイプラインは使える?

SVNでも、マルチブランチパイプライン等使えますでしょうか?

問題無く利用することができます。
Multibranch Pipelineのジョブタイプでジョブを作成し、「Branch Sources」の設定項目にあるSubversionを選択ください。

こちらの設定項目にSubversionが表示されていない場合、Subvesionのプラグインをインストールする必要があります。
Jenkinsの管理 > プラグインの管理 > 利用可能タブを選択し、Subvesionと入力ください。

こちらのインストール後、利用が可能になります。

入力例

まとめ

Jenkinsに関するQ&A part1として、Jenkins Day Japan 2022でいただいた6個の質問に回答しました。
沢山の質問をいただいていますので、順次ブログにアップしていきます。