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

Add support for arm platform

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Component/s: nodejs-plugin
    • Labels:
    • Environment:
      I have a master running on intel 64 bit hardware and two slaves, one also running on intel hardware and one running on an armv7l raspberry pi. . All devices are running linux.
    • Similar Issues:

      Description

      I have a tool configuration for NodeJS set up as "node 7.7.4" configured to obtain node automatically from nodejs.org

      I have a jenkinsfile pipeline which declares a tool configuration to use node 7.7.4 at the outermost level.  I then have stages that run on master, the intel slave and finally the raspberry pi slave.  Node is correctly installed from NodeJS on both intel devices during the run of this pipeline.  When it comes to raspberry pi it is unable to find the image, because it is just using "arm" as the  identifier portion to find the binary rather than "armv7l" (or possibly "armv6l" or "arm64")

       

      As a work around I tried setting the specific location of this version of node on the slave nodes configuration ("/home/build/.nvm/versions/node/v7.7.4/bin") but this fails because of JENKINS-43066 

        Attachments

          Activity

          Hide
          nfalco Nikolas Falco added a comment -

          The only supported platform are linux, windows and osx (i386).
          No arm platform are supported. I've try to support them in the past but the main cause of failure is that there is no way to get the proper architecture, no java property has something can be use to understand which arm6/7/64 is. And due to difference beetween linux distribution I could not try to understand it using some kind of file in the system.

          So maybe I have to close this issue as "Won't fix"

          Show
          nfalco Nikolas Falco added a comment - The only supported platform are linux, windows and osx (i386). No arm platform are supported. I've try to support them in the past but the main cause of failure is that there is no way to get the proper architecture, no java property has something can be use to understand which arm6/7/64 is. And due to difference beetween linux distribution I could not try to understand it using some kind of file in the system. So maybe I have to close this issue as "Won't fix"
          Hide
          nfalco Nikolas Falco added a comment -

          The only way that I can see is configure NodeJS tools with "Extract zip/tar" instead "install from nodejs.org".

          About JENKINS-43066 plese have a look the known limitation section in our wiki page for a solution.

          Show
          nfalco Nikolas Falco added a comment - The only way that I can see is configure NodeJS tools with "Extract zip/tar" instead "install from nodejs.org". About JENKINS-43066 plese have a look the known limitation section in our wiki page for a solution.
          Hide
          akc42 Alan Chandler added a comment - - edited

          Can't there be a configuration option to tell the plugin which version to use when its arm?  

          I have managed to work around it by using nvm to load node (which does detect the version correctly!) and then specifying a tool location in the slave configuration and tweaking my jenkinsfile such that when I am running steps on that particular agent using

           
                  withEnv(["PATH+NODEJS=$\{tool 'node 7.7.4'}"]) {
                    sh 'npm install'
                    sh 'npm run enviro'
                    sh 'npm run compose'
                  }
           

          Show
          akc42 Alan Chandler added a comment - - edited Can't there be a configuration option to tell the plugin which version to use when its arm?   I have managed to work around it by using nvm to load node (which does detect the version correctly!) and then specifying a tool location in the slave configuration and tweaking my jenkinsfile such that when I am running steps on that particular agent using           withEnv( ["PATH+NODEJS=$\{tool 'node 7.7.4'}"] ) {           sh 'npm install'           sh 'npm run enviro'           sh 'npm run compose'         }  
          Hide
          nfalco Nikolas Falco added a comment -

          The options could have no sense in case you have more different arm slaves.

          About nvm there are a lot of limitations

          • Note: nvm does not support ...
          • and requirements on the system!
          Show
          nfalco Nikolas Falco added a comment - The options could have no sense in case you have more different arm slaves. About nvm there are a lot of limitations Note: nvm does not support ... and requirements on the system!
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Nikolas Falco
          Path:
          src/main/java/jenkins/plugins/nodejs/tools/CPU.java
          src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java
          src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java
          src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java
          src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt
          http://jenkins-ci.org/commit/nodejs-plugin/ba9eb55c88f4c521cb5004c6566f79ac370e7a05
          Log:
          JENKINS-43102 Add a tentative support for ARM CPUs (armv7l, armv6l, arm64)

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nikolas Falco Path: src/main/java/jenkins/plugins/nodejs/tools/CPU.java src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt http://jenkins-ci.org/commit/nodejs-plugin/ba9eb55c88f4c521cb5004c6566f79ac370e7a05 Log: JENKINS-43102 Add a tentative support for ARM CPUs (armv7l, armv6l, arm64)
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Nikolas Falco
          Path:
          src/main/java/jenkins/plugins/nodejs/tools/CPU.java
          src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java
          src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java
          src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java
          src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt
          http://jenkins-ci.org/commit/nodejs-plugin/14c9078a0599f77fbda02162c740d2c13978102c
          Log:
          JENKINS-43102 Add support for ARM CPUs (armv7l, armv6l, arm64)

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nikolas Falco Path: src/main/java/jenkins/plugins/nodejs/tools/CPU.java src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt http://jenkins-ci.org/commit/nodejs-plugin/14c9078a0599f77fbda02162c740d2c13978102c Log: JENKINS-43102 Add support for ARM CPUs (armv7l, armv6l, arm64)
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Nikolas Falco
          Path:
          src/main/java/jenkins/plugins/nodejs/tools/CPU.java
          src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java
          src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java
          src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java
          src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt
          http://jenkins-ci.org/commit/nodejs-plugin/376118edfbdd7c0a0080097cf59f729108ee482b
          Log:
          [FIX JENKINS-43102] Add support for ARM CPUs (armv7l, armv6l, arm64)

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nikolas Falco Path: src/main/java/jenkins/plugins/nodejs/tools/CPU.java src/main/java/jenkins/plugins/nodejs/tools/pathresolvers/LatestInstallerPathResolver.java src/test/java/jenkins/plugins/nodejs/tools/ArchitectureCallableTest.java src/test/java/jenkins/plugins/nodejs/tools/InstallerPathResolversTest.java src/test/resources/jenkins/plugins/nodejs/tools/expectedURLs.txt http://jenkins-ci.org/commit/nodejs-plugin/376118edfbdd7c0a0080097cf59f729108ee482b Log: [FIX JENKINS-43102] Add support for ARM CPUs (armv7l, armv6l, arm64)

            People

            • Assignee:
              nfalco Nikolas Falco
              Reporter:
              akc42 Alan Chandler
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: