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

NodeJS Plugin does not recognise CPU aarch64 as ARM64

    XMLWordPrintable

    Details

    • Similar Issues:
    • Released As:
      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

          Hide
          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.

          Show
          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 .
          Hide
          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.

          Show
          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.
          Hide
          sefzy46rs67g3d Peter Somogyvari added a comment -

          Nikolas FalcoThank 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.

           

          Show
          sefzy46rs67g3d Peter Somogyvari added a comment - Nikolas Falco 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.  
          Hide
          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.

          Show
          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.
          Hide
          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

          Show
          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
          Hide
          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"));
              }
          }
          
          Show
          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" )); } }
          Hide
          shawnda shawn added a comment - - edited

          Nikolas Falco 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.

          Show
          shawnda shawn added a comment - - edited Nikolas Falco  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.
          Hide
          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

          Show
          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
          Hide
          nfalco Nikolas Falco added a comment -

          My fault there is an issue in the check

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

          Fantastic! Really appreciate it! 

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

          Great job!

          Show
          shawnda shawn added a comment - Great job!

            People

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

              Dates

              Created:
              Updated:
              Resolved: