Do I need to manually upgrade my Bamboo Agents?
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
This article describes how Bamboo controls its Agents upgrades, how it is triggered and when to take manual steps.
Solution
Do I need to manually upgrade my Bamboo Agents?
Short answer: No. The Bamboo Agent auto-updates and synchronizes with the server's version.
Long answer: It depends . In most cases, you don't need to perform any actions to update your agents as the Java binaries are automatically updated. However, the Tanuki Service Wrapper (wrapper/wrapper.exe) software used to monitor the application is not updated automatically and on rare occasions may need further updates. Check the What does not get updated session below for details.
The bootstrap auto-upgrade process
Whenever a Bamboo Agent bootstraps – either Remote or Elastic, a series of checks will happen to guarantee that the present files are synchronised with the Server. The Agent will:
- Authenticate to the Server using its Agent UUID and Security Token (when applicable)
- Check if its Bootstrap code <agent-home>/lib/bamboo-agent-bootstrap.jar is up to date and update itself if necessary (this will restart the bootstrap process)
- Request a list of manifests, being:
- Main classpath - <agent-home>/classpath
- Framework bundles - <agent-home>/framework-bundles
- System provided plugins - <agent-home>/plugins/system-provided
- User-installed plugins - <agent-home>/plugins/user-installed
- After receiving the Manifest list, the Agent will compare its local folders with the manifest contents matching the file sizes and ADLER32 checksums, download and install any missing files
- Files that are not listed on the Manifest list but are contained in one of the Manifest folders will be deleted
- The Agent may restart to apply any updates
Manifest contents
The manifest list is dynamic and is generated by the Bamboo Server. It contains the manifest type, file location, size and ADLER32 checksum:
classpath|classpath/FastInfoset-1.2.15.jar|311876|3637245447
classpath|classpath/HikariCP-4.0.3.jar|159222|3610116550
classpath|classpath/accessors-smart-2.4.7.jar|29489|2481403750
classpath|classpath/acegi-security-1.0.7.jar|548722|3728754039
classpath|classpath/activemq-broker-5.16.4.jar|1207999|3862738926
classpath|classpath/activemq-client-5.16.4.jar|1438793|3189588408
classpath|classpath/activemq-http-5.16.4.jar|110047|831293854
classpath|classpath/activemq-jms-pool-5.16.4.jar|52898|3596936001
(...)
framework-bundles|framework-bundles/gemini-blueprint-extender-3.0.0.M01.jar|183872|3766788219
framework-bundles|framework-bundles/gemini-blueprint-io-3.0.0.M01.jar|33741|2017868341
framework-bundles|framework-bundles/jcl-over-slf4j-1.7.32.jar|16630|510277465
framework-bundles|framework-bundles/org.apache.servicemix.bundles.aopalliance-1.0_6.jar|16513|3943574372
framework-bundles|framework-bundles/org.apache.servicemix.bundles.spring-aop-5.3.19_1.jar|737018|13914581
(...)
system-provided-plugins|plugins/system-provided/atlassian-spring-scanner-annotation-3.0.0.jar|21492|1527557615
system-provided-plugins|plugins/system-provided/atlassian-spring-scanner-runtime-3.0.0.jar|35714|2000018420
system-provided-plugins|plugins/system-provided/bamboo-artifact-downloader-plugin-8.2.5.jar|55148|750470965
system-provided-plugins|plugins/system-provided/bamboo-conditional-tasks-7.1.1.jar|42094|2093108514
system-provided-plugins|plugins/system-provided/bamboo-docker-plugin-8.2.0.jar|142151|329618511
system-provided-plugins|plugins/system-provided/bamboo-nodejs-plugin-7.2.0.jar|91999|2720750047
(...)
user-installed-plugins|plugins/user-installed/plugin_14453951188317959654_variable-updater-generic-1.1.30.jar|2363160|2971621390
If you are interested to know the manifest list along with each file's expected size and ADLER32 checksums, please run the following script. The script requires an Agent UUID and a valid Security Token (if applicable).
#!/bin/bash
# Replace the variables below with you Server instance and Agent details
# Only one agent detail is necessary
BAMBOO_SERVER="https://bamboo825.mydomain.net"
AGENT_NAME="agent9"
AGENT_UUID="a8e0070d-9e6a-4dee-a868-f4a871f65e21"
SECURITY_TOKEN="a09c22b7d8a8390717a9bb5da05249546e1cb6ed"
# Loads Server and Instance fingerprints
eval $(curl -s -k \
"${BAMBOO_SERVER}/agentServer/GetFingerprint.action?hostName=${AGENT_NAME}&version=3&agentUuid=${AGENT_UUID}&securityToken=${SECURITY_TOKEN}" \
| awk 'BEGIN { RS="&"; } $1 ~ /ingerprint/ { print $1 }')
# List all file manifests
for i in classpath framework-bundles system-provided-plugins user-installed-plugins ; do
echo "####"
echo "#### Manifest: $i"
echo "####"
curl -s -k \
-H "Atlassian-Bamboo-Server-Fingerprint: $fingerprint" \
-H "Atlassian-Bamboo-Fingerprint: $instanceFingerprint" \
"${BAMBOO_SERVER}/agentServer/bootstrap/${i}/manifest" | sort
done
What does not get updated
- Any files that are contained in the following folders will not be touched by the Agent upgrade process:
/bin
/caches
/conf
/configuration
/logs
/temp
/xml-data
- The Tanuki Wrapper software – Check this page for instructions and use cases (Are you upgrading your version of Bamboo?)