概要
あるdevelopブランチをgithubにpushすると、メインPCのjenkinsでtestが走るようになっていす。
メインPC?Jenkins用のノートPCがあったはずだけど
ついに故障しちゃったのよ
Ubuntu 18.04の「ソフトウェアの更新」や「PCの再起動が必要です」の表示にしたがって、再起動しました。
さて、そのdevelopブランチをpushして、ローカルPCのjenkinsサイトにアクセスすると、jenkinsが起動していません。
jenkinsユーザに suして、jenkinsを再起動しようとしたら、
$ sudo service jenkins status
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: failed (Result: exit-code) since Sun 2020-11-15 00:30:46 JST; 11min ago
Docs: man:systemd-sysv-generator(8)
Process: 2334 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)
11月 15 00:30:46 xxxx systemd[1]: Starting LSB: Start Jenkins at boot time...
11月 15 00:30:46 xxxx jenkins[2334]: Found an incorrect Java version
11月 15 00:30:46 xxxx jenkins[2334]: Java version found:
11月 15 00:30:46 xxxx jenkins[2334]: openjdk version "11.0.9.1" 2020-11-04
11月 15 00:30:46 xxxx jenkins[2334]: OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04)
11月 15 00:30:46 xxxx jenkins[2334]: OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)
11月 15 00:30:46 xxxx jenkins[2334]: Aborting
11月 15 00:30:46 xxxx systemd[1]: jenkins.service: Control process exited, code=exited status=1
11月 15 00:30:46 xxxx systemd[1]: jenkins.service: Failed with result 'exit-code'.
11月 15 00:30:46 xxxx systemd[1]: Failed to start LSB: Start Jenkins at boot time.
Code language: Bash (bash)
Javaバージョンが11.0.9.1 2020-11-04だよ、対応していない、とのことです。
https://www.jenkins.io/doc/administration/requirements/java/ には、Java 8 かJava 11が必要とのことで合っていそうですが、だめなものはしょうがないです。
そういえば前にも同じようなエラーがあった気がします。そのときはJava 8を設定した覚えがありますが、Javaバージョンを確認すると、
$ /usr/bin/java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 6月 24 2019 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 6月 24 2019 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Code language: Bash (bash)
alternativesの11になっていました。apt updateで11に戻ってしまったのでしょうか。
対応
alternativesでJava 8を設定しなおしました。
まず、java です。
$ sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自動モード
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java を使います
Code language: Bash (bash)
次に javac
$ sudo update-alternatives --config javac
alternative javac (/usr/bin/javac を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 自動モード
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 手動モード
2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/javac (javac) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javac を使います
Code language: Bash (bash)
たぶん必要ないけど、javadoc
$ sudo update-alternatives --config javadoc
alternative javadoc (/usr/bin/javadoc を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javadoc 1111 自動モード
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javadoc 1111 手動モード
2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc 1081 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/javadoc (javadoc) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc を使います
Code language: Bash (bash)
javahは、11だけでした。
$ sudo update-alternatives --config javah
リンクグループ javah に 1 つの alternative のみがあります (/usr/bin/javah が提供): /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
設定は行いません。
Code language: Bash (bash)
たぶん必要ないけど、javap
$ sudo update-alternatives --config javap
alternative javap (/usr/bin/javap を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 自動モード
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 手動モード
2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 1081 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/javap (javap) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javap を使います
Code language: Bash (bash)
javaバージョンを確認すると、8になっていました。
$ java -version
openjdk version "1.8.0_242-release"
OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
OpenJDK 64-Bit Server VM (build 25.242-b3-6222593, mixed mode)
Code language: Bash (bash)
無事、jenkinsを起動できました。
$ sudo service jenkins start
$ sudo service jenkins status
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Sun 2020-11-15 00:55:02 JST; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 9020 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS)
11月 15 00:55:00 xxxx systemd[1]: Starting LSB: Start Jenkins at boot time...
11月 15 00:55:01 xxxx jenkins[9020]: Correct java version found
11月 15 00:55:01 xxxx jenkins[9020]: * Starting Jenkins Automation Server jenkins
11月 15 00:55:01 xxxx su[9085]: Successful su for jenkins by root
11月 15 00:55:01 xxxx su[9085]: + ??? root:jenkins
11月 15 00:55:01 xxxx su[9085]: pam_unix(su:session): session opened for user jenkins by (uid=0)
11月 15 00:55:01 xxxx su[9085]: pam_unix(su:session): session closed for user jenkins
11月 15 00:55:02 xxxx jenkins[9020]: ...done.
11月 15 00:55:02 xxxx systemd[1]: Started LSB: Start Jenkins at boot time.
Code language: Bash (bash)
github actionsにしたいね
参考記事
Ubuntu 18.04 LTSに複数のJDKをインストールする方法 - Qiita
Ubuntu 18.04 LTSに複数のJDK (Java Development Kit) をインストールする方法についてまとめます。#インストールsudo add-apt-repositor…