とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

JenkinsにJavaを更新しなさいと言われたので更新した

UbuntuでJenkinsを動かしていて、JenkinsでとあるプロジェクトのCIを任せているのですが、ログインしたら

「システムに古いJavaが入っている。使っているJenkinsはJava 17以降もサポートしているので2025年のサポート終了までにアップグレードしてね (意訳)」みたいなメッセージが出ていたので、アップグレードすることにしました。

UbuntuはOpenJDKのいくつかのバージョンをサポートしており、aptコマンドで簡単にインストールができます。 この環境はUbuntu 20.04 LTSなので、このバージョンで標準で使えるOpenJDK 17にしてみようと思います。

やることはこれだけです。作業後はJenkinsのダッシュボードにログインし直すだけでメッセージが消えたので、ミッションコンプリートでしょう。

sudo apt install -y openjdk-17-jre-headless
sudo systemctl restart jenkins
sudo apt remove openjdk-11-jre

もう少し厳密にテストする場合は、次のドキュメントのようにJenkinsサービスに JAVA_HOMEとJENKINS_JAVA_CMDを指定する必要があるのかもしれません。 最後に動いているJava (JRE) を削除しなければ、JAVA_HOMEとJENKINS_JAVA_CMDの変更だけで元に戻せるためです。

www.jenkins.io

Ubuntuの場合は複数のJavaバージョンがインストールされると、次のように/usr/bin/javaなどが新しいバージョンのエイリアスとして設定されます。 Jenkinsサービスに使用するJavaを指定することで、システムのJavaのバージョンが変わっても影響なく動かすことができます。

Setting up openjdk-17-jre-headless:amd64 (17.0.9+9-1~20.04) ...
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode