We're trying to run many unit-test jobs in parallel. Our Bamboo plan consists of one build job, followed by many (up to 40) unit test jobs, that may take long (up to 30 minutes each or more). We want to drastically reduce the time it takes to run these tests by having a lot of Bamboo agents running them in parallel.
We're using docker to spawn light-weight VMs, but we are wondering how to best use it:
Option 1) Many Bamboo agents running on the host machine. Each agent spawns a Docker container (Docker task in Bamboo), runs the test and then shuts down the container.
Option 2) Many detached Docker containers on the host machine, each running one Bamboo agent. We don't use the Bamboo Docker task, we just run the executable in each agent.
Have you faced the same problem? What option do you think will work best in the long term?
In Option 1, your builds will always start in a clean environment, so checkouts, Maven fetches etc will take longer to complete. This may be an advantage (stable builds) or a disadvantage. Option 2 has the reverse property.
In Option 2, you get the agent process isolation without modifications to your plans, which Option 3.
Note that you can also run multiple agents on the same host without Docker, just provide them with a separate home dir.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.