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

NodeJS Plugin does not recognise CPU aarch64 as ARM64

    XMLWordPrintable

Details

    • 1.3.11

    Description

      1. Install the NodeJS Plugin
      2. Create a NodeJS 14 tool
      3. Attempt to reference said tool in a pipeline
      4. Watch it crash with the stacktrace below
      jenkins.plugins.nodejs.tools.DetectionFailedException: Unknown CPU architecture: aarch64
      	at jenkins.plugins.nodejs.tools.CPU.detect(CPU.java:111)
      	at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:69)
      Caused: jenkins.plugins.nodejs.tools.DetectionFailedException: Error getting system properties on remote Node
      	at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:71)
      	at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:43)
      	at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:39)
      	at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:344)
      	at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:335)
      	at jenkins.plugins.nodejs.tools.NodeJSInstaller.performInstallation(NodeJSInstaller.java:115)
      	at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69)
      	at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
      	at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:217)
      	at jenkins.plugins.nodejs.tools.NodeJSInstallation.forNode(NodeJSInstallation.java:95)
      	at jenkins.plugins.nodejs.tools.NodeJSInstallation.forNode(NodeJSInstallation.java:63)
      	at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:152)
      	at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
      	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	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:834)
      Finished: FAILURE

      Attachments

        Activity

          nfalco Nikolas Falco added a comment -

          Looking around JVM use aarch64 for ARMv8 and as per plugin documentation ARMv8 is not supported, neither by NodeJS 14 distribution.

          nfalco Nikolas Falco added a comment - Looking around JVM use aarch64 for ARMv8 and as per plugin documentation ARMv8 is not supported, neither by NodeJS 14 distribution .
          nfalco Nikolas Falco added a comment -

          Recent SUSE 12 version supports aarch64. I do not know if aarch64 means arm64. I do not have a Raspberry 3+ for test.

          nfalco Nikolas Falco added a comment - Recent SUSE 12 version supports aarch64. I do not know if aarch64 means arm64. I do not have a Raspberry 3+ for test.

          nfalcoThank you for looking into this!

           

          Looking around JVM use aarch64 for ARMv8 and as per plugin documentation ARMv8 is not supported

          I guess my issue is a feature request then.

           

          ARMv8 is the same as aarch64 in practical terms I believe (can confirm that my R. Pi 4 declares itself as aarch64 and runs NodeJS' ARM64 builds just fine.

           

          neither by NodeJS 14 distribution.

          See above regarding aarch64 and ARM64 being the same (in practical terms)

           

          Recent SUSE 12 version supports aarch64.

          Ubuntu also, if that helps.

          I do not know if aarch64 means arm64.

          See above. Basically: yes, it does.

          I do not have a Raspberry 3+ for test.

          Understandable. What I can offer in terms of help is the testing of the plugin on my Raspberry Pi 3 and 4 if someone were to implement the feature being requested here. Of course I do not know how feasible that is without the person writing the code having access to an R. Pi. Maybe they can use other machines, like something provisioned in the cloud that also has an ARM64 arch, just guessing here.

           

          sefzy46rs67g3d Peter Somogyvari added a comment - nfalco Thank you for looking into this!   Looking around JVM use aarch64 for ARMv8 and as per plugin documentation ARMv8 is not supported I guess my issue is a feature request then.   ARMv8 is the same as aarch64 in practical terms I believe (can confirm that my R. Pi 4 declares itself as aarch64 and runs NodeJS' ARM64 builds just fine.   neither by NodeJS 14 distribution. See above regarding aarch64 and ARM64 being the same (in practical terms)   Recent SUSE 12 version supports aarch64. Ubuntu also, if that helps. I do not know if aarch64 means arm64. See above. Basically: yes, it does. I do not have a Raspberry 3+ for test. Understandable. What I can offer in terms of help is the testing of the plugin on my Raspberry Pi 3 and 4 if someone were to implement the feature being requested here. Of course I do not know how feasible that is without the person writing the code having access to an R. Pi. Maybe they can use other machines, like something provisioned in the cloud that also has an ARM64 arch, just guessing here.  
          nfalco Nikolas Falco added a comment -

          I did the changes, you can build the plugin (mvn clean package) and install on your side. If it's ok I will release.

          nfalco Nikolas Falco added a comment - I did the changes, you can build the plugin (mvn clean package) and install on your side. If it's ok I will release.
          shawnda shawn added a comment -
          1. NodeJS Plugin 1.3.10
          2. Jenkins 2.277
          3. NodeJS 14.15.3

          jenkins.plugins.nodejs.tools.DetectionFailedException: Unknown CPU architecture: aarch64
          at jenkins.plugins.nodejs.tools.CPU.detect(CPU.java:112)
          at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:69)
          Caused: jenkins.plugins.nodejs.tools.DetectionFailedException: Error getting system properties on remote Node
          at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:71)
          at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:43)
          at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:39)
          at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:344)
          at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:335)
          at jenkins.plugins.nodejs.tools.NodeJSInstaller.performInstallation(NodeJSInstaller.java:115)
          at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69)
          at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109)
          at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:217)
          at jenkins.plugins.nodejs.tools.NodeJSInstallation.forNode(NodeJSInstallation.java:95)
          at jenkins.plugins.nodejs.NodeJSBuildWrapper.setUp(NodeJSBuildWrapper.java:158)
          at org.jenkinsci.plugins.workflow.steps.CoreWrapperStep$Execution2.doStart(CoreWrapperStep.java:116)
          at org.jenkinsci.plugins.workflow.steps.GeneralNonBlockingStepExecution.lambda$run$0(GeneralNonBlockingStepExecution.java:77)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          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)
          Finished: FAILURE

          shawnda shawn added a comment - NodeJS Plugin 1.3.10 Jenkins 2.277 NodeJS 14.15.3 jenkins.plugins.nodejs.tools.DetectionFailedException: Unknown CPU architecture: aarch64 at jenkins.plugins.nodejs.tools.CPU.detect(CPU.java:112) at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:69) Caused: jenkins.plugins.nodejs.tools.DetectionFailedException: Error getting system properties on remote Node at jenkins.plugins.nodejs.tools.CPU.of(CPU.java:71) at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:43) at jenkins.plugins.nodejs.tools.ToolsUtils.getCPU(ToolsUtils.java:39) at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:344) at jenkins.plugins.nodejs.tools.NodeJSInstaller$NodeJSInstallable.forNode(NodeJSInstaller.java:335) at jenkins.plugins.nodejs.tools.NodeJSInstaller.performInstallation(NodeJSInstaller.java:115) at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:69) at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:109) at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:217) at jenkins.plugins.nodejs.tools.NodeJSInstallation.forNode(NodeJSInstallation.java:95) at jenkins.plugins.nodejs.NodeJSBuildWrapper.setUp(NodeJSBuildWrapper.java:158) at org.jenkinsci.plugins.workflow.steps.CoreWrapperStep$Execution2.doStart(CoreWrapperStep.java:116) at org.jenkinsci.plugins.workflow.steps.GeneralNonBlockingStepExecution.lambda$run$0(GeneralNonBlockingStepExecution.java:77) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 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) Finished: FAILURE
          nfalco Nikolas Falco added a comment - - edited

          I prepared a Java Main that I need you run on the machines on which you would enable nodejs to undertand how JVM recognize those CPU and the O.S.

          public class Main {
              public static void main(String[] args) {
                  System.out.println(System.getProperty("os.arch"));
                  System.out.println(System.getProperty("os.name"));
              }
          }
          
          nfalco Nikolas Falco added a comment - - edited I prepared a Java Main that I need you run on the machines on which you would enable nodejs to undertand how JVM recognize those CPU and the O.S. public class Main { public static void main( String [] args) { System .out.println( System .getProperty( "os.arch" )); System .out.println( System .getProperty( "os.name" )); } }
          shawnda shawn added a comment - - edited

          nfalco Cheers mate. Thanks for your prompt response. Actually, I ran my project on an M1 chip MacBook Pro in a jenkins4eval/jenkins container, which inside the docker preview version. I have two JRE version on my laptop, one is "Zulu 13.35.1025 [13.0.5.1]", another is "JRE "[15.0.1]". So, I got the two different results of that code: "aarch64, Mac OS X" and "x86_64, Mac OS X". I believe the Zulu one is my primary JRE environment.

          shawnda shawn added a comment - - edited nfalco  Cheers mate. Thanks for your prompt response. Actually, I ran my project on an M1 chip MacBook Pro in a jenkins4eval/jenkins container, which inside the docker preview version. I have two JRE version on my laptop, one is "Zulu 13.35.1025 [13.0.5.1] ", another is "JRE " [15.0.1] ". So, I got the two different results of that code: "aarch64, Mac OS X" and "x86_64, Mac OS X". I believe the Zulu one is my primary JRE environment.
          nfalco Nikolas Falco added a comment - - edited

          In that case which nodejs installation do you expect?

          This https://nodejs.org/dist/v14.15.4/node-v14.15.4-darwin-x64.tar.gz or this https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-arm64.tar.xz

          I see some open issue in the nodejs at github repo about "Apple Silicon" (https://github.com/nodejs/build/issues/2474)

           

          EDIT Reading around seems that only v15 is able to run nativly on M1 Mac but a bit instable for some packages/connector.

          Since this issue is about arm64 on embedded system I will close. Reopen a new feature issue to request arm64 on M1 Mac

          nfalco Nikolas Falco added a comment - - edited In that case which nodejs installation do you expect? This https://nodejs.org/dist/v14.15.4/node-v14.15.4-darwin-x64.tar.gz or this  https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-arm64.tar.xz I see some open issue in the nodejs at github repo about "Apple Silicon" ( https://github.com/nodejs/build/issues/2474 )   EDIT Reading around seems that only v15 is able to run nativly on M1 Mac but a bit instable for some packages/connector. Since this issue is about arm64 on embedded system I will close. Reopen a new feature issue to request arm64 on M1 Mac
          nfalco Nikolas Falco added a comment -

          My fault there is an issue in the check

          nfalco Nikolas Falco added a comment - My fault there is an issue in the check
          shawnda shawn added a comment -

          Fantastic! Really appreciate it! 

          shawnda shawn added a comment - Fantastic! Really appreciate it! 
          shawnda shawn added a comment -

          Great job!

          shawnda shawn added a comment - Great job!

          People

            nfalco Nikolas Falco
            sefzy46rs67g3d Peter Somogyvari
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: