0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ビルドタスクのJavaはそのままに、JenkinsのJavaバージョンを上げる方法

Last updated at Posted at 2025-04-11

概要

JenkinsのJavaの対応バージョンがEOLを迎えるのでJavaのバージョンを上げたい。

スクリーンショット 2025-04-11 154115.png

しかし、同じサーバー上でビルドしているタスクは別途検証が必要なので一旦今までのバージョンで動かしたい。
そこで、JenkinsはJava 21にバージョンアップしつつ、ビルドタスクはJava 17のままにしたので、その方法を備忘録としてメモ。

環境

  • Amazon Linux 2023
    • 2023.6.20250317
  • Java 17
    • OpenJDK 17.0.14
  • Jenkins
    • 2.492.3

JenkinsでJava 17をJDKとして設定する

Jenkinsの管理 > Tools > インストール済みJDK > JDK追加

ここで現在使っているJava17を設定するので、サーバーに入ってJavaの実体を確認する。

$ java -version
openjdk version "17.0.14" 2025-01-21 LTS
OpenJDK Runtime Environment Corretto-17.0.14.7.1 (build 17.0.14+7-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.14.7.1 (build 17.0.14+7-LTS, mixed mode, sharing)

$ which java
/usr/bin/java

$ ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Apr 17  2024 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 52 Apr 17  2024 /etc/alternatives/java -> /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java

スクリーンショット 2025-04-11 161333.png

JAVA_HOMEにはディレクトリパスを入れる必要があるので/bin/javaを除いて入力します。

Java 21をインストールする

$ dnf list --available "java-21*corretto*"
Last metadata expiration check: 0:01:15 ago on Fri Apr 11 16:25:12 2025.
Available Packages
java-21-amazon-corretto.x86_64                                        1:21.0.6+7-1.amzn2023.1                            amazonlinux
java-21-amazon-corretto-debugsymbols.x86_64                           1:21.0.6+7-1.amzn2023.1                            amazonlinux
java-21-amazon-corretto-devel.x86_64                                  1:21.0.6+7-1.amzn2023.1                            amazonlinux
java-21-amazon-corretto-headless.x86_64                               1:21.0.6+7-1.amzn2023.1                            amazonlinux
java-21-amazon-corretto-javadoc.x86_64                                1:21.0.6+7-1.amzn2023.1                            amazonlinux
java-21-amazon-corretto-jmods.x86_64

$ sudo dnf -y install java-21-amazon-corretto-devel
====================================================================================================================================
 Package                                      Architecture       Version                              Repository               Size
====================================================================================================================================
Installing:
 java-21-amazon-corretto-devel                x86_64             1:21.0.6+7-1.amzn2023.1              amazonlinux             150 k
Installing dependencies:
 java-21-amazon-corretto-headless             x86_64             1:21.0.6+7-1.amzn2023.1              amazonlinux              96 M

Transaction Summary
====================================================================================================================================
Install  2 Packages

Installed:
  java-21-amazon-corretto-devel-1:21.0.6+7-1.amzn2023.1.x86_64    java-21-amazon-corretto-headless-1:21.0.6+7-1.amzn2023.1.x86_64   

Complete!

$ java -version
openjdk version "21.0.6" 2025-01-21 LTS
OpenJDK Runtime Environment Corretto-21.0.6.7.1 (build 21.0.6+7-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.6.7.1 (build 21.0.6+7-LTS, mixed mode, sharing)

Jenkinsを再起動する

$ sudo systemctl restart jenkins

再起動後にJenkins上で冒頭のEOL表示が消えていればJava 21で動いているはずですが、念のため確認します。

$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java
*+ 2           /usr/lib/jvm/java-21-amazon-corretto.x86_64/bin/java

Enter to keep the current selection[+], or type selection number:

$ java -version
openjdk version "21.0.6" 2025-01-21 LTS
OpenJDK Runtime Environment Corretto-21.0.6.7.1 (build 21.0.6+7-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.6.7.1 (build 21.0.6+7-LTS, mixed mode, sharing)

切り替えなくてもデフォルトでインストールしたJava 21が有効になるようです。ちなみにJenkinsの設定でも確認できます。

Jenkinsの管理 > システム情報 > システムプロパティ

ここのjava.home/usr/lib/jvm/java-21-amazon-corretto.x86_64になっていればOKです。

ビルドタスクごとに使用するJDKを設定する

どうやらインストール済みJDKが複数設定されていないとJDKを選択するプルダウンが出てこないようなので、Java 17と同様にJava 21もインストール済みJDKとして登録します。

そうするとタスクの設定でJDKを選択することができます。

スクリーンショット 2025-04-11 164600.png

デフォルトは(System)になっているので、これをJava17にすることで、
Jenkins本体 -> Java 21
ビルドタスク -> Java 17
と2種類のJavaバージョンを使い分けることができます。

追記:(System)ではダメでした

(System)=Jenkinsを動かしているJDK=Java21だと思っていたので、Java21でビルドしたいタスクを(System)で実行したところエラーでした。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project sample-project: Fatal error compiling: error: release version 21 not supported -> [Help 1]

明示的にJava21を選択したら正常に動きました。(System)だと何が使われるんでしょうか…ご存じの方がいたら教えてください。

Mavenを使っている場合はmvnのバージョンも確認

$ mvn --version
Apache Maven 3.8.4 (Red Hat 3.8.4-3.amzn2023.0.5)
Maven home: /usr/share/maven
Java version: 17.0.14, vendor: Amazon.com Inc., runtime: /usr/lib/jvm/java-17-amazon-corretto.x86_64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "6.1.130-139.222.amzn2023.x86_64", arch: "amd64", family: "unix"

どうやらalternativesでJava 21を指定していてもダメなようなので、JAVA_HOMEにJava 21を設定してあげます。

$ sudo vi /etc/profile.d/java.sh

export JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto.x86_64
export PATH=$JAVA_HOME/bin:$PATH

mvnコマンドを実行するのはjenkinsユーザー(=nologinユーザー)のため.bash_profileがないので/etc/profile内で読み込まれるように/etc/profile.d/java.shを作りました。

$ source /etc/profile
$ mvn --version
Apache Maven 3.8.4 (Red Hat 3.8.4-3.amzn2023.0.5)
Maven home: /usr/share/maven
Java version: 21.0.6, vendor: Amazon.com Inc., runtime: /usr/lib/jvm/java-21-amazon-corretto.x86_64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "6.1.130-139.222.amzn2023.x86_64", arch: "amd64", family: "unix"

ビルドタスクごとにJavaのバージョンを設定できれば本番環境は旧バージョン、テスト環境では検証したい新バージョンで動かすことも可能なのでぜひお試しください。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?