We at Isos Technology are huge fans of Bitbucket + Bamboo for all one's version control and CI/CD needs. My Isos blog roll is littered with posts covering both products. If you are an Atlassian Cloud user, you'll quickly find out Bamboo stopped being a CI/CD option years ago. While many of us in the Atlassian community wailed and gnashed our teeth over Atlassian's decisions to drop the offering, it turns out they had something arguably better and more modern up their collective sleeves. So in the ashes of Bamboo Cloud's death, the phoenix called "Bitbucket Pipelines" was born. So what is it exactly?
So what Bitbucket Pipelines it in simple terms?
In the most simple terms, Bitbucket Pipelines is:
- A cloud based CI/CD tool
- Builds code contained in a Bitbucket repo
- The build is executed based on instructions on a bitbucket-pipelines.yml file in the root of a Bitbucket repository
- The build is executed in a Docker container
- The results of the build are show in context of your source code
How about answering some specific Q&As?
Q: Can you build and deploy code for use behind your corporate firewall?
A: Sort of. You can definitely build code to be used behind your corporate firewall. Many Isos clients use it for that very purpose. The complication is the deployment part. You can certainly set up holes in your firewall or set up scripts and triggers behind your firewall to automatically deploy artifacts from Pipelines. It goes without saying that opening up hoes in your firewall is risky and those said scripts can be sort of clunky to orchestrate. Pipelines is a 'cloud first' product and really works best if you are deploying the cloud like Amazon, Google Cloud, Azure, etc.
Q: Can you build and deploy Microsoft Windows binaries?
A: Short answer, no. Pipelines executes builds in a Linux Docker container which CAN NOT create Windows binaries.
Longer answer, yes. Here are your options:
- First, off you can create .NET Core binaries in a Linux Docker container so if you are doing .NET Core instead of .NET Framework for web dev, you are in luck.
- Second, if you are doing dev in golang you can very easily cross-compile for any architecture golang supports in the Linux based Docker container.
- Finally, you can execute the actual build from Pipelines IN Azure. This comment in JAC give a good over view of how that can be accomplished. We use this method internally here at Isos and it works very well. Just be on notice, you need to have an Azure account in addition to your Pipelines account. You'll be paying for resources in both services.
Q: If the builds are execute in a Docker container, can you build Docker images with Pipelines?
Two years ago Atlassian added the ability to build Docker containers from with their Docker build based system. However, it can be a little weird buggy. We here at issues, specifically, have had file permission issues when building some containers.
Q: How am I charged for Pipelines?
A: Here's the breakdown:
- If you are a 'free' Bitbucket user, you get 50 min of build time each month. If you are debugging a big / complex build, you can burn through that with ease.
- If you are a 'standard' account user ($3/month/user) - you get 2500 build minutes included.
- If you are a 'premium' account user ($6/month/user) - you get 3500 build minutes included.
Finally, if you need more the price is $10 per 1000 build minutes.
Oh yeah, Pipelines is a 'small' and 'large' build instance - the minutes don't seem to differentiate between the two when accounting for build time (at print time). Please do your own testing in your environment before you take my note as gospel.
I hope this short post help clarify what Bitbucket Pipelines is and answered your most burning questions about the product. If you have any further comment or questions, please comment below.