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の変更だけで元に戻せるためです。
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