Travis CI で jabba で openjdk6 に切り替える

2018/08/25   #travisci  #java  #jabba 
このエントリーをはてなブックマークに追加

以前、こんなのを書いた。
Travis CI で openjdk6 で CI を動かす
ここでは .travis.ymladdons に書くワークアラウンドで順調に動いていたのだが、
ここ最近、以下のようなログが出るようになっていた。

https://travis-ci.org/roundrop/facebook4j/builds/415550133

$ jdk_switcher use openjdk6
Switching to OpenJDK6 (java-1.6.0-openjdk-amd64), JAVA_HOME will be set to /usr/lib/jvm/java-6-openjdk-amd64
update-java-alternatives: directory does not exist: /usr/lib/jvm/java-1.6.0-openjdk-amd64
:
$ java -Xmx32m -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
$ javac -J-Xmx32m -version
javac 1.8.0_151

これについていろいろと調べているとこのような Issue があり、
openjdk6 on trusty no longer works · Issue #9713 · travis-ci/travis-ci
てっきりもう .travis.ymladdons に書くワークアラウンドは効かなくなってしまったと思い、
で、この Issue からのリンクで、
shyiko/jabba: (cross-platform) Java Version Manager
という jdk のバージョンマネージャーを使っている例 ( Azul Zulu OpenJDK 6 using Jabba by eed3si9n · Pull Request #56 · sbt/launcher ) を見かけたので真似させてもらった次第。

(ただ、後の調査で、 .travis.ymladdons に書くワークアラウンドは未だ健在で、
Travis のログで java や javac の version が 1.8 とか出るが実際には 1.6 で動いていることは確認したので、jabba に移行する必要はなかった。が、まあよい。)

jabba で openjdk6 を使う

君達の JDK は全て jabba がいただいた | eed3si9n を参考に
.travis.yml を以下のような感じにすればokだった。

facebook4j/.travis.yml at develop · roundrop/facebook4j

language: java
env:
  global:
    - TRAVIS_JDK=zulu@1.6.103
    - JABBA_HOME=/home/travis/.jabba
before_install:
  - curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
install:
  - $JABBA_HOME/bin/jabba install $TRAVIS_JDK && export JAVA_HOME="$JABBA_HOME/jdk/$TRAVIS_JDK" && export PATH="$JAVA_HOME/bin:$PATH" && java -Xmx32m -version
before_script:
  - unset _JAVA_OPTIONS
  - echo "debug=false" >> facebook4j-core/src/test/resources/test.properties &&  echo "oauth.appId=1" >> facebook4j-core/src/test/resources/test.properties && echo "oauth.appSecret=1" >> facebook4j-core/src/test/resources/test.properties && echo "oauth.accessToken=access_token" >> facebook4j-core/src/test/resources/test.properties
after_success:
  - ./mvnw -pl facebook4j-core clean cobertura:cobertura org.eluder.coveralls:coveralls-maven-plugin:cobertura
cache:
  directories:
    - $HOME/.m2
    - $HOME/.jabba/jdk

openjdk は jabba/index.json at 0.10.1 · shyiko/jabba を選択。

Travis CI のログ。
https://travis-ci.org/roundrop/facebook4j/builds/416639928

install フェーズのログが、

$ $JABBA_HOME/bin/jabba install $TRAVIS_JDK && export JAVA_HOME="$JABBA_HOME/jdk/$TRAVIS_JDK" && export PATH="$JAVA_HOME/bin:$PATH" && java -Xmx32m -version
Downloading zulu@1.6.103 (http://cdn.azul.com/zulu/bin/zulu6.19.0.1-jdk6.0.103-linux_x64.tar.gz) 
64297024/64297024
Extracting /tmp/jabba-d-040253746 to /home/travis/.jabba/jdk/zulu@1.6.103 
zulu@1.6 -> /home/travis/.jabba/jdk/zulu@1.6.103 
openjdk version "1.6.0-103"
OpenJDK Runtime Environment (Zulu 6.19.0.1-linux64) (build 1.6.0-103-b103)
OpenJDK 64-Bit Server VM (Zulu 6.19.0.1-linux64) (build 23.77-b103, mixed mode)

のような感じになった。