Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60288

Installator is broken on Alpine

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      The installer does not throw an error but the resulting installation is not unusable.
      Sample output from trying to run this on a jenkinsci/slave:alpine with the docker-plugin

      Running as SYSTEM
      [EnvInject] - Loading node environment variables.
      Installing AdoptOpenJDK to /home/jenkins/tools/hudson.model.JDK/jdkadopt
      ERROR: Failed to download file:/var/lib/jenkins/caches/adoptopenjdk/LINUX/amd64/jdk-11.0.5+10.zip from agent; will retry from master
      Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to docker-006z72dcdzrtj
      		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1743)
      		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
      		at hudson.remoting.Channel.call(Channel.java:957)
      		at hudson.FilePath.act(FilePath.java:1070)
      		at hudson.FilePath.act(FilePath.java:1059)
      		at hudson.FilePath.installIfNecessaryFrom(FilePath.java:913)
      		at hudson.FilePath.installIfNecessaryFrom(FilePath.java:846)
      		at io.jenkins.plugins.adoptopenjdk.AdoptOpenJDKInstaller.performInstallation(AdoptOpenJDKInstaller.java:121)
      		at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69)
      		at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
      		at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
      		at hudson.model.JDK.forNode(JDK.java:147)
      		at org.jenkinsci.plugins.envinject.util.RunHelper.getJDKVariables(RunHelper.java:111)
      		at org.jenkinsci.plugins.envinject.util.RunHelper.getBuildVariables(RunHelper.java:134)
      		at org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironmentWithoutJobPropertyObject(EnvInjectListener.java:233)
      		at org.jenkinsci.plugins.envinject.EnvInjectListener.setUpEnvironment(EnvInjectListener.java:49)
      		at hudson.model.AbstractBuild$AbstractBuildExecution.createLauncher(AbstractBuild.java:542)
      		at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:462)
      		at hudson.model.Run.execute(Run.java:1818)
      		at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      		at hudson.model.ResourceController.execute(ResourceController.java:97)
      		at hudson.model.Executor.run(Executor.java:429)
      java.io.FileNotFoundException: /var/lib/jenkins/caches/adoptopenjdk/LINUX/amd64/jdk-11.0.5+10.zip (No such file or directory)
      	at java.io.FileInputStream.open0(Native Method)
      	at java.io.FileInputStream.open(FileInputStream.java:195)
      	at java.io.FileInputStream.<init>(FileInputStream.java:138)
      	at java.io.FileInputStream.<init>(FileInputStream.java:93)
      	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
      	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
      	at java.net.URL.openStream(URL.java:1045)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:949)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:943)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3050)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:212)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:369)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Building remotely on docker-006z72dcdzrtj on helpsbslave01.fi.f-secure.com (docker) (any) in workspace /home/jenkins/workspace/adopt-test
      Installing AdoptOpenJDK to /home/jenkins/tools/hudson.model.JDK/jdkadopt
      ERROR: Failed to download file:/var/lib/jenkins/caches/adoptopenjdk/LINUX/amd64/jdk-11.0.5+10.zip from agent; will retry from master
      Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to docker-006z72dcdzrtj
      		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1743)
      		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
      		at hudson.remoting.Channel.call(Channel.java:957)
      		at hudson.FilePath.act(FilePath.java:1070)
      		at hudson.FilePath.act(FilePath.java:1059)
      		at hudson.FilePath.installIfNecessaryFrom(FilePath.java:913)
      		at hudson.FilePath.installIfNecessaryFrom(FilePath.java:846)
      		at io.jenkins.plugins.adoptopenjdk.AdoptOpenJDKInstaller.performInstallation(AdoptOpenJDKInstaller.java:121)
      		at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69)
      		at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
      		at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
      		at hudson.model.JDK.forNode(JDK.java:147)
      		at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:341)
      		at hudson.model.Run.getEnvironment(Run.java:2374)
      		at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:864)
      		at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:102)
      		at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
      		at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
      		at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
      		at hudson.model.Build$BuildExecution.build(Build.java:206)
      		at hudson.model.Build$BuildExecution.doRun(Build.java:163)
      		at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
      		at hudson.model.Run.execute(Run.java:1818)
      		at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      		at hudson.model.ResourceController.execute(ResourceController.java:97)
      		at hudson.model.Executor.run(Executor.java:429)
      java.io.FileNotFoundException: /var/lib/jenkins/caches/adoptopenjdk/LINUX/amd64/jdk-11.0.5+10.zip (No such file or directory)
      	at java.io.FileInputStream.open0(Native Method)
      	at java.io.FileInputStream.open(FileInputStream.java:195)
      	at java.io.FileInputStream.<init>(FileInputStream.java:138)
      	at java.io.FileInputStream.<init>(FileInputStream.java:93)
      	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
      	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
      	at java.net.URL.openStream(URL.java:1045)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:949)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:943)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3050)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:212)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      	at hudson.remoting.Request$2.run(Request.java:369)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      [adopt-test] $ /bin/sh -xe /tmp/jenkins1014781285759488702.sh
      + env
      PATH=/home/jenkins/tools/hudson.model.JDK/jdkadopt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
      JAVA_HOME=/home/jenkins/tools/hudson.model.JDK/jdkadopt
      + java -version
      Picked up JAVA_TOOL_OPTIONS: -XX:+StartAttachListener -Dhttps.proxyHost=proxy.eu-west-1.acme.com -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost|127.*|[::1]|*.acme.com
      openjdk version "1.8.0_212"
      OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0)
      OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
      + javac -version
      Picked up JAVA_TOOL_OPTIONS: -XX:+StartAttachListener -Dhttps.proxyHost=proxy.eu-west-1.acme.com -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost|127.*|[::1]|*.acme.com
      javac 1.8.0_212
      + which java
      /usr/bin/java
      + which javac
      /usr/lib/jvm/java-1.8-openjdk/bin/javac
      + /home/jenkins/tools/hudson.model.JDK/jdkadopt/bin/java -version
      /tmp/jenkins1014781285759488702.sh: line 8: /home/jenkins/tools/hudson.model.JDK/jdkadopt/bin/java: not found
      Build step 'Execute shell' marked build as failure

      TL;DR $JAVA_HOME/bin/java is not executable.

      When I switch to a debian-based jenkinsci/slave it works as expected.

      If it cannot be made to work I would ask that it at least fails the installation step instead of allowing the build to proceed. That would save time debugging the issue.

      I tried this with multiple versions, notably jdk8u232-b09 which is used in the official docker image https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/8/jdk/alpine/Dockerfile.hotspot.releases.full

        Attachments

          Activity

          Hide
          mmchr Mads Mohr Christensen added a comment -

          It's generally best practice to build docker images that contain the build tools needed instead of installing tools on each run. This will save time and remove potential error sources.

          Show
          mmchr Mads Mohr Christensen added a comment - It's generally best practice to build docker images that contain the build tools needed instead of installing tools on each run. This will save time and remove potential error sources.
          Hide
          jbochenski Jakub Bochenski added a comment -

          That is not practical if you need to support builds using different JDK versions.

          Replying "don't use the plugin" to a bug request isn't very helpful.

          Show
          jbochenski Jakub Bochenski added a comment - That is not practical if you need to support builds using different JDK versions. Replying "don't use the plugin" to a bug request isn't very helpful.
          Hide
          mmchr Mads Mohr Christensen added a comment -

          Please note that I didn't reject this issue and I still might try to fix it or accept PRs that fixes it.

          https://github.com/jenkinsci/adoptopenjdk-plugin#usage-recommendations

          Show
          mmchr Mads Mohr Christensen added a comment - Please note that I didn't reject this issue and I still might try to fix it or accept PRs that fixes it. https://github.com/jenkinsci/adoptopenjdk-plugin#usage-recommendations
          Hide
          mmchr Mads Mohr Christensen added a comment -

          This problem is not really with the installer but is caused by AdoptOpenJDK requiring glibc which is not available in the current version of jenkinsci/slave:alpine since it's built upon openjdk:8-jdk-alpine3.9

          There is a an open pull request to switch to AdoptOpenJDK in Docker images: https://github.com/jenkinsci/docker/pull/956

          So your options are either to build a new image upon one of the official AdoptOpenJDK images or to wait until this PR gets merged and released.

          Show
          mmchr Mads Mohr Christensen added a comment - This problem is not really with the installer but is caused by AdoptOpenJDK requiring glibc which is not available in the current version of jenkinsci/slave:alpine since it's built upon openjdk:8-jdk-alpine3.9 There is a an open pull request to switch to AdoptOpenJDK in Docker images:  https://github.com/jenkinsci/docker/pull/956 So your options are either to build a new image upon one of the official AdoptOpenJDK images or to wait until this PR gets merged and released.

            People

            Assignee:
            mmchr Mads Mohr Christensen
            Reporter:
            jbochenski Jakub Bochenski
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: