• 9
    • 13
    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      Problem Definition

      Currently Bamboo does not support ARM platforms for Bamboo server and for remote agents, and elastic agents.

      Suggested Solution

      Add support to ARM platforms to Bamboo server and to remote agents.

            [BAM-20766] Support ARM platforms

            Tomasz Skorupka added a comment - - edited

            Hey,

             

            Just some notes on that, if you are using remote agents for ARM they do work, but when it comes to elastic agents for Bamboo they do not.

             

            Bamboo Elastic Agents for ARM are not configurable due to error

            Unable to contact AWS to get AMI details: java.lang.IllegalArgumentException: Unable to translate [arm64] to enum class [Lcom.atlassian.aws.ec2.awssdk.AwsSupportConstants$Architecture; 

             

            I have reverse engineered the code of Bamboo to discover that this is because the enum does not contain arm entry, and that is because Bamboo once it is given AMI ID it makes request to AWS to acknowledge the AMI Architecture, that is later on used to check whether this is 32 or 64 bit system.

            Enum right now contains x86_64 and i386 architectures, so simply adding arm should solve the issue, but no.

            I do not know if I should post here a piece of code which is relevant for this, but it can be found in 

            package com.atlassian.bamboo.ww2.actions.admin.elastic; 

            One way to workaround this is to add new entry with AMI that is for x86_64, and then updating database with the AMI ID of your choice that is ARM. (Note that you need to pick the instance type relevant for ARM architecture)

            Database table that is responsible for this is called 

            elastic_image
            

             

            One more note, since the UI is no more usable for this record that was updated to AMI ID with ARM, you need to update your AMI ID only via database.

             

            Hope that solves the issue for you.

             

            Workaround

            • Add new entry for elastic agents with AMI ID that is x86_64 (at this point you already can choose instance type that works for ARM)
            • Configure all of the settings for your new entry, scripts etc.
            • Update database table (elastic_image) entry for this elastic agent at column (ami_image_id)
            • Enjoy

             

            Kind Regards,

            Tomasz

            Tomasz Skorupka added a comment - - edited Hey,   Just some notes on that, if you are using remote agents for ARM they do work, but when it comes to elastic agents for Bamboo they do not.   Bamboo Elastic Agents for ARM are not configurable due to error Unable to contact AWS to get AMI details: java.lang.IllegalArgumentException: Unable to translate [arm64] to enum class [Lcom.atlassian.aws.ec2.awssdk.AwsSupportConstants$Architecture;   I have reverse engineered the code of Bamboo to discover that this is because the enum does not contain arm entry, and that is because Bamboo once it is given AMI ID it makes request to AWS to acknowledge the AMI Architecture, that is later on used to check whether this is 32 or 64 bit system. Enum right now contains x86_64 and i386 architectures, so simply adding arm should solve the issue, but no. I do not know if I should post here a piece of code which is relevant for this, but it can be found in  package com.atlassian.bamboo.ww2.actions.admin.elastic; One way to workaround this is to add new entry with AMI that is for x86_64, and then updating database with the AMI ID of your choice that is ARM. (Note that you need to pick the instance type relevant for ARM architecture) Database table that is responsible for this is called  elastic_image   One more note, since the UI is no more usable for this record that was updated to AMI ID with ARM, you need to update your AMI ID only via database.   Hope that solves the issue for you.   Workaround Add new entry for elastic agents with AMI ID that is x86_64 (at this point you already can choose instance type that works for ARM) Configure all of the settings for your new entry, scripts etc. Update database table (elastic_image) entry for this elastic agent at column (ami_image_id) Enjoy   Kind Regards, Tomasz

            For teams working with both platforms AMD64 and ARM64 this would be a huge benefit.

            I am currently using Docker to cross compile our code on ARM because Bamboo agents are not ARM compatible (out of the box). I performed a performance test of compiling using the cross compile feature in Docker and a native build on an ARM processor. The build differential is hours cross compiling and less than half an hour on the ARM processor. 

            Ward Hopeman added a comment - For teams working with both platforms AMD64 and ARM64 this would be a huge benefit. I am currently using Docker to cross compile our code on ARM because Bamboo agents are not ARM compatible (out of the box). I performed a performance test of compiling using the cross compile feature in Docker and a native build on an ARM processor. The build differential is hours cross compiling and less than half an hour on the ARM processor. 

            Grand tip, thanks. Will give that a go in the morning.

            Marais Van Zyl added a comment - Grand tip, thanks. Will give that a go in the morning.

            @Marais Van Zyl, actually so long as you put your capabilities file in the same directory as the bamboo jar being run, it will read it.

            We've done this for many other unsupported platforms as well.

            Robert McGee added a comment - @Marais Van Zyl, actually so long as you put your capabilities file in the same directory as the bamboo jar being run, it will read it. We've done this for many other unsupported platforms as well.

            This ticket is 2 1/2 years old and I would say it should be another 4-6 years before Atlassian does it going by how long it takes them to do anything - especially on bamboo.

            The only problem with the suggestion from Jan-Albert van Ree above is that agent capabilities then need to be specified in the bamboo UI, so no chance to automate build agents by placing a bamboo-capabilities.properties in the bin as that isn't looked at. 

             

            Marais Van Zyl added a comment - This ticket is 2 1/2 years old and I would say it should be another 4-6 years before Atlassian does it going by how long it takes them to do anything - especially on bamboo. The only problem with the suggestion from Jan-Albert van Ree above is that agent capabilities then need to be specified in the bamboo UI, so no chance to automate build agents by placing a bamboo-capabilities.properties in the bin as that isn't looked at.   

            Build agent is already working , if you do some manual work. Using atlassian-bamboo-agent-installer-7.2.2.jar , opening a screen for the bamboo account and starting with 

            java -jar atlassian-bamboo-agent-installer-7.2.2.jar https://buildfarm.marin.local/agentServer/

            We've got a Raspberry Pi 4 as build agent , to build software for the AArch64 platform. OS is Rocky Linux 8.5 , using OpenJDK 1.8.0_312

            But upvoted, wrapper support would be great

            Jan-Albert van Ree added a comment - Build agent is already working , if you do some manual work. Using atlassian-bamboo-agent-installer-7.2.2.jar , opening a screen for the bamboo account and starting with  java -jar atlassian-bamboo-agent-installer-7.2.2.jar https://buildfarm.marin.local/agentServer/ We've got a Raspberry Pi 4 as build agent , to build software for the AArch64 platform. OS is Rocky Linux 8.5 , using OpenJDK 1.8.0_312 But upvoted, wrapper support would be great

            Thanks @Alexey, I've voted for that issue too.

            Robert McGee added a comment - Thanks @Alexey, I've voted for that issue too.

            d8d254a933af I think your request might be related to BAM-21363 

            Alexey Chystoprudov added a comment - d8d254a933af  I think your request might be related to BAM-21363  

            I agree with the others. Now, with Apple's new ARM systems this has become a must.

            The agent's child processes run under Intel, which makes our test setup overly complicated when we're trying to build and test universal binaries.

            The additional work it's taking to adjust our test setup has been a major delay for our own MacOS 11 release.

            Robert McGee added a comment - I agree with the others. Now, with Apple's new ARM systems this has become a must. The agent's child processes run under Intel, which makes our test setup overly complicated when we're trying to build and test universal binaries. The additional work it's taking to adjust our test setup has been a major delay for our own MacOS 11 release.

            This has become a concern for agents run on Apple Silicon Macs. There is Java 8 for arm64 provided by Azul but the wrapper is blocking execution of the agent. And running Bamboo without the wrapper is… well not what is expected in addition to being tricky.

            At the moment this is "only" annoying as macOS 11 provides Rosetta. But Rosetta is only temporary and will be removed in a future version of macOS. I say "annoying" because this still has the downside of defaulting all processes run by the bamboo agent to run under Rosetta even when they are universal binaries.

            Lucas SOLTIC added a comment - This has become a concern for agents run on Apple Silicon Macs. There is Java 8 for arm64 provided by Azul but the wrapper is blocking execution of the agent. And running Bamboo without the wrapper is… well not what is expected in addition to being tricky. At the moment this is "only" annoying as macOS 11 provides Rosetta. But Rosetta is only temporary and will be removed in a future version of macOS. I say "annoying" because this still has the downside of defaulting all processes run by the bamboo agent to run under Rosetta even when they are universal binaries.

              Unassigned Unassigned
              kmiranda Karel Miranda
              Votes:
              65 Vote for this issue
              Watchers:
              31 Start watching this issue

                Created:
                Updated: