
Jenkinsは、頻繁にアップデートが出るので、本番稼働中だったりするとなかなか反映できません。
今回も、以下のようなアラートが出たので、まずは開発環境からアップデートする事に。

弊社の場合、JenkinsをインストールしているのはAWS EC2なので、一番簡単なアップデートは、
sudo yum update です。
そして、アップデートした後に、接続してみると・・・
「HTTP ERROR 503 Service Unavailable」になりました。

・・・・だから、嫌なんですよ、この類のアップデート。と愚痴っても仕方ないです。
いきなり本番環境をアップデートしなかった事をラッキーと思わないと。
(いや、しないですけどね、そんな事)
ログを確認すると、以下の内容でした。
「UnsupportedClassVersionError」?
何かが古い?
- WARNING: Failed startup of context w.@a38dddf{/,file:/var/cache/jenkins/war/,STARTING}{/var/cache/jenkins/war}
- java.lang.reflect.InvocationTargetException
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:606)
- at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85)
- (中略)
- at Main._main(Main.java:264)
- at Main.main(Main.java:112)
- Caused by: java.lang.UnsupportedClassVersionError: jenkins/util/SystemProperties : Unsupported major.minor version 52.0
- at java.lang.ClassLoader.defineClass1(Native Method)
- at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
- at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
- (中略)
- at org.eclipse.jetty.server.handler.ContextHandler.loadClass(ContextHandler.java:1583)
- at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1956)
- ... 25 more
色々と調べてみると、本家に issue がありました。
Jenkins 2.54 causes java.lang.UnsupportedClassVersionError
なるほど、Java 8が必須になったのですね。
確かに、EC2 の Amazon Linux はデフォルト Java 7 です。
と言うわけで、Javaのアップデートをしていきます。
まずは現在のバージョンを改めて確認してみます。
- $ java -version
- java version "1.7.0_131"
- OpenJDK Runtime Environment (amzn-2.6.9.0.71.amzn1-x86_64 u131-b00)
- OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
- $ yum list installed | grep java
- java-1.7.0-openjdk.x86_64 1:1.7.0.131-2.6.9.0.71.amzn1 installed
- javapackages-tools.noarch 0.9.1-1.5.amzn1 installed
- tzdata-java.noarch 2017b-1.69.amzn1 installed
Java 7 である事が確認出来たので、次は Java 8 にアップデートします。
- $sudo yum install java-1.8.0-openjdk-devel
alternatives でバージョンを切り替えます。
- $ sudo alternatives --config java
- 2 プログラムがあり 'java' を提供します。
- 選択 コマンド
- -----------------------------------------------
- *+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
- 2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
- Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
念の為、適用されているバージョンを確認します。
- $ java -version
- openjdk version "1.8.0_121"
- OpenJDK Runtime Environment (build 1.8.0_121-b13)
- OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
無事にアップデート出来たので、Jenkinsの再起動を行います。
再起動は
http://[ホスト名 or IPアドレス]/safeRestart
に接続する事で、簡単に行う事ができます。
これで無事に接続できました。
アップデートの度にこんな思いするのは、本当辛いです。
AWS , EC2 , Jenkins