❄️JenkinsがJava8の対応を終了❄️
🚀Java11が必須になりました 🚀
- Jenkins:2.361.x
- Jenkins LTS ChangeLog
- Upgrading to Jenkins LTS 2.361.x
なので、SlaveのJavaも合わせてUpdateしないとMasterと接続できなくなります
ここまでは想定内なのですが
EC2インスタンスをSlaveとして利用しているとSlave登録時、Masterから勝手にsudo yum install -y java-1.8.0-openjdk-devel.x86_64
が実行されしまい、Slaveと接続できなくなります。。
💦Slave接続時のエラーログ💦
java -jar /tmp/remoting.jar -workDir /home/ec2-user
実行時にエラー💦💦💦
INFO: Launching remoting agent (via Trilead SSH2 Connection): java -jar /tmp/remoting.jar -workDir /home/ec2-user
ERROR: unexpected stream termination
java.io.EOFException: unexpected stream termination
at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:459)
at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:404)
at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:437)
at hudson.plugins.ec2.ssh.EC2UnixLauncher.launchScript(EC2UnixLauncher.java:283)
at hudson.plugins.ec2.EC2ComputerLauncher.launch(EC2ComputerLauncher.java:48)
at hudson.slaves.SlaveComputer.lambda$_connect$0(SlaveComputer.java:298)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:48)
at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:82)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
✨Init Script✨でJava11を前もってインストールすれば大丈夫なのです
EC2インスタンスSlave登録時にSlave側にJavaがインストールされていないと、勝手にJava8がインストールされてしまうのでEC2Template
の✨Init Script✨
でJava11をインストールするコマンドを設定しておけば、JavaバージョンミスマッチによるSlave接続エラーを回避できます
AmazonLinux2の場合は
AmazonLinux2ではcorrettoが標準のようです
sudo yum install -y java-11-amazon-corretto-headless
是が非でもjava-openjdk11を利用したい場合はamazon-linux-extraから取得してください
sudo amazon-linux-extras install -y java-openjdk11
検証JenkinsとEC2プラグインのバージョン
- Jenkins:2.361.4
- EC2プラグイン:2.03