You can leave your handwriting as is, or automatically convert it into typewritten text using the Ink technology built into Mac OS X. There aren’t many downsides to Bamboo tablets.
This article covers the details of installing a Bamboo CI Server on Mac OS X.
- If you are using a Wacom Bamboo Fun pen tablet and want to avoid running into compatibility issues when connecting it to your Mac computer, make sure you download and install the latest driver. Multiple versions are available, and you need to make sure you select the right one based on the OS X version.
- A short guide for installing and configuring Bamboo Remote Agent on Mac OS X. The starting point for an agent is a server, you should either have it configured for you or install yourself. Atlassian documentation is always a good place to start. Next important thing is.
- This article covers the details of installing a Bamboo CI Server on Mac OS X. The preferred way to install Bamboo is using official Mac OS X installer. Starting point for documentation is official install guide. Follow installer steps using default values. This article assumes you are dealing with Bamboo version 5.2 and above.
The preferred way to install Bamboo is using official Mac OS X installer. Starting point for documentation is official install guide. Follow installer steps using default values.
This article assumes you are dealing with Bamboo version 5.2 and above. All examples are for version 5.7.2.
To download tar-ball using command line run this command
Bamboo needs Java to be installed, recommended versions are 1.6 or 1.7, I would advise to go with 1.7.
Make a new home for Bamboo. It could be /Applications/Bamboo
or ~/bamboo/bamboo-home
or whatever you want. For this post I’ll stick with second option. It is often recommended to create a special bamboo
user and put all things in their home directory. To create a new user use System Preferences and create Standard user.
Note that I switch user (su
) to work with Bamboo user’s files and folders. This way I stay away from possible permissions conflicts. You could login as bamboo user instead. In any case, the rest of the article assumes you are operating as bamboo user.
Once downloaded unzip the tar-ball and copy atlassian-bamboo-5.7.2
to bamboo user’s home folder. Rename it to just bamboo
to make it version agnostic.
Then go inside that folder. This is referred as installation directory and this is where you will install and run Bamboo from. Edit the file in atlassian-bamboo/WEB-INF/classes/bamboo-init.properties
. Uncomment the line with bamboo.home
and put the following.
This is where Bamboo will put all the customizations and build plan details.
Now you should run bin/start-bamboo.sh
.
Bamboo is now running on http://localhost:8085/.
Next step is to configure Bamboo, heres official documentation. Recommended way is to use Setup Wizard which presents itself when you open http://localhost:8085/ in the browser.
Start by getting a license. You can always get a 30 days free evaluation license from Atlassian.
Next select Custom Installation option. Have a look at Base URL, make sure the IP address is correct. Also this is a good moment to pause and double check that your future Bamboo server has a static IP address allocated. This will become really important when dealing with remote agents. Leave the rest unchanged and click Continue.
Select Embedded database option. It is recommended to use other DB setup for production system. I might refine the article later to include setup details for PostgreSQL database.
Next, choose to create a new Bamboo home, configure your username. Give it some time and you will be able to create your first build plan.
Bamboo For Mac Os X 10.13
Now it’s time to make sure Bamboo start automatically when build box restarts. As mentioned in this article recommended way is to use Launch Agent. Start by enabling automatic login for bamboo user in System Preferences.
Next create com.atlassian.bamboo.plist
in /Users/bamboo/Library/LaunchAgents
.
Make sure you create few aliases to start and stop Bamboo server from command line.
This section provides an example of issues you may run into while trying to fire up Bamboo.
For example, you start Bamboo and see this instead of dashboard.
To find out the reason look into Bamboo logs, specifically in /Users/bamboo/bamboo/logs/catalina.out
.
OK, so database is presumably locked by another process. In my case it meant there was another Bamboo running already. Double check it then by running ps
.
Indeed it is. I have another terminal tab open running bamboo user session and Bamboo server.
After I stop or kill all the instances I run it again and this time it works.
This is just one example of troubles, all of them will pretty much present themselves via the same starting error page. Another common case is database upgrade, you can run into this issue if using PostgreSQL and upgrade it via Homebrew, so it’s recommended to pin PostgreSQL instead.
This will get you going with basic Bamboo CI server. There’s a number of additional administrative tasks yet to be done. Like configuring user access, integration with other Atlassian products, network configuration, plugins, capabilities and much more. I wouldn’t envy anyone who would have to deal with all those tasks. Companies that take CI seriously normally have Dev Support team keeping whole infrastructure running, not just Bamboo.
A short guide for installing and configuring Bamboo Remote Agent on Mac OS X.
The starting point for an agent is a server, you should either have it configured for you or install yourself.
Atlassian documentation is always a good place to start. Next important thing is to have Java installed on remote agent machine.
You start by configuring server. Open Bamboo server dashboard in the browser and navigate to Bamboo Administration page (via Settings button in top right). Surely you have to be admin to get there.
Now select Agents on the left and click “Enable remote agent support”.
You can click “Install remote agent” now.
You are now looking at the page with further instructions. Just like Jenkins build agent Bamboo Remote Agent is a Java JAR file that needs to be downloaded to a target agent machine and then ran there.
Before you proceed you need to configure remote agent machine. Just like Bamboo server works well with a special user, remote agent will benefit from running under a designated user account. Create a Standard account from System Preferences, in this example we will name it bambooagent
so this user’s home will be /Users/bambooagent
. To make the whole process easier from now on I am assuming that you are currently logged in as bamboo-agent user.
Just like Jenkins remote agent, Bamboo remote agent needs an installation and home directories. So let’s create these two.
Installation directory is where you need to put agent JAR file and then this JAR will download other required files and keep them in installation directory. Updates will occur in this directory as well.
Home directory is the location for all the build jobs metadata, intermediate build files, artifacts and so on.
Now it’s time to install, first get the JAR and put it into installation directory.
Or simply manually download it and put in the directory.
It is time to run the JAR and let Bamboo complete installation process.
bamboo-agent-home
is the default name for Bamboo home directory, but it doesn’t hurt to be more explicit and specify it.
If you have to take proxy into account, add more -D
options, for example
The last one is useful when dealing with self-signed certificates.
As usual, nothing just works right away, as if it was designed that way…
For example, if you just experiment on your development machine where Bamboo server is already up and you want to run agent on the very same hardware, you would naturally use localhost
as host name.
OK, so it doesn’t work. Bamboo agent tries to hit so called Broker URI, which is pointing to the server, in this example it’s “tcp://10.5.50.2:54663?wireFormat.maxInactivityDuration=300000”.
Note the highlighted parts. First the fact that Broker URI uses an IP address (10.5.50.2 in this example). Second and more important is the port number in Broker URI (54663). Basically this means “say hello to Firewall!” and I’ll get back to that later.
If you change localhost
to 127.0.0.1
the results will be the same, that’s because Broker URI is part of Bamboo server configuration and has to be set manually.
This is where I have to add a note that I’m trying this on the train with no internet connection, so basically my laptop is offline. I also have HTTP_PROXY
environment variable set, so no wonder agent can’t resolve Broker URI with an IP address (even after I unset HTTP_PROXY
variable).
Anyway, let’s figure out what is that Broker URI and where it can be changed. For that open Bamboo server dashboard, navigate to Administration page and find “General configuration” menu on the left in “SYSTEM” category.
Here it is, the question remains how to set it correctly. Here are the rules I learned the hard way.
Local Server
This is the case when both the server and agent are on the same local area network. Have a look at this discussion and this one too.
Ultimately in LAN configuration you have to use your server’s hostname with .local
suffix. To get the hostname run hostname
on the server machine.
Remote Server
In this setup your server is remote from the agent’s point of view. For example your company uses Bamboo OnDemand and hosts server and elastic agents in EC2 cloud. But Mac agent is not an option for the cloud, so you end up hosting it in-house, meaning it’s sitting behind company firewall.
Another thing learned the hard way is to configure Broker client URL using IP address and not the host name. Don’t ask me why, I don’t have an exact answer. Probably this is specific for Mac agents. Most likely I missed something important, but here I give you the solution that works. This means the Bamboo server IP address needs to be static, which isn’t usually a problem and is preferred configuration anyway.
Apply Changes
You can change Broker URI using Bamboo UI, but you can also configure it with text editor. Bamboo server keeps it’s configuration in home folder (/Users/bamboo/bamboo-home
if you followed this guide). This is how properties look like.
If you are making changes via UI you will see a message saying that you need to restart all remote agents. Guess what, that’s not true. You can give it a go and restart an agent and observe no changes in failover URI. The truth is that you have to restart the server for changes to take effect.
Try It Out
So in my example I change the Broker client URL to use local hostname.
Now I start an agent and this time it works.
If I navigate to Bamboo server Agents page, I can see remote agent being online and ready to pick up builds.
Next step is to make sure that remote agent starts automatically in case Mac box restarts. Start by enabling autologin for babmooagent
user, this way system will login into the user’s account and fire up all of its launch agents.
To make the best use of Bamboo remote agent, it should be started as a launch agent, see Launch Daemon vs Agent for more details.
Create com.atlassian.bamboo-agent.plist
in /Users/bambooagent/Library/LaunchAgents
. This is an example file.
As you can see it’s all standard stuff. Specify a label (Label
), run agent at load (RunAtLoad
), keep it alive and run the session as bambooagent
user. There’s a detailed description provided and error output redirected into a file. You can see that I’m reluctant to save standard output to a file, that’s because the size of this file can become really big over time. Note that this is standard error and output for the agent runner, it may not necessary contain actual agent logs.
Finally, to start the agent a bamboo-agent.sh
runner script is used from Bamboo agent home directory.
A usual practice is to have type aliases in your favorite shell to start and stop the agent from command line if needed. In this example I’m using launch agent label to control it. The same can be done by using launchctl [load|unload] plist-file
.
You may have noticed that there are no arguments for proxy, Java home and other settings. That’s because all these settings can be set in /Users/bambooagent/bamboo-agent-home/conf/wrapper.conf
.
In this example you can see how Bamboo agent home directory is set, as well as other settings including server URL (in this case it runs on localhost). To add proxy put more additional Java arguments
Using wrapper.conf
is preferred over jamming these arguments in launch agent plist.
If you agent sits in corporate network and server is in the outer world (e.g. EC2 cloud), you will face some nasty firewall issues. Have a look at official Atlassian documentation. Ports number 8085 and 54663 (unless you specified different numbers) are used for bi-directional communication between agent and the server. Best practice is to open these ports in both directions. While lower port numbers are usually open, ports like 54663 need an exclusion rules configured in your company firewall. From experience this task can be either hard or impossible. Did you ever have that feeling that Network team is an extra layer or red tape and are there not to help you but to do the opposite? Welcome to the club then :).
Bamboo Wacom Mac Os X
To answer your question why Mac agent cannot be in the Cloud as well, see bits of my rant in Bamboo vs Jenkins and this discussion.
From this moment on you need to configure your remote agent’s Mac to be able to run Xcode builds and tests, as well as other CI tasks.
This is one of the ways to configure and run Bamboo remote agent.
If you are into Docker, check out this link. I’m only planning to give a try to this apparently awesome tool.