BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Bitbucket Pipelines Provides Continuous Delivery within Atlassian’s Bitbucket Cloud

Bitbucket Pipelines Provides Continuous Delivery within Atlassian’s Bitbucket Cloud

Bookmarks

Atlassian released Bitbucket Pipelines beta at AtlasCamp 2016 in Barcelona to provide a Continuous Delivery pipeline within Bitbucket Cloud. At the same time, Atlassian announced the end-of-life for their current cloud based CI/CD solution Bamboo Cloud by 31 January 2017, while emphasizing that Bamboo Server continues to be their on-premise CI/CD offering for Bitbucket Server (formerly Stash).

Bitbucket Pipelines is a new Continuous Delivery (CD) feature for the Cloud edition of Atlassian's source code repository hosting service Bitbucket that requires no build agent setup or integration with an external CI tool. Pipelines aims to "help teams build, test and deploy code on every push" and is supposed to make switching between tools unnecessary and provide fast feedback loops, since the entire development workflow, from code to deployment can be managed within Bitbucket Cloud. For example, the build status is displayed on all related commits, branches and pull requests and allows to drill-down into the log directly to the command that broke a build.

Atlassian Bitbucket Pipelines Overview

Similar to other popular cloud based CI/CD solutions, Bitbucket Pipelines is based on a configuration as code approach, which drives build environments based on ephemeral Docker containers that run automatically after each code push to a hosted repository. Once enabled for a repository, developers can manage their CD pipeline via a bitbucket-pipelines.yml YAML file at the repository root and specify build environments by referencing images from Docker Hub or custom registries. A simple example might look as follows:

image: python:3.4.3

pipelines:
  default: # Runs on branches that don't have a specific pipeline.
    - step:
        script:
          - pip install -U tox
          - pip --version
          - tox --version
  branches: # Container for branch-specific pipelines.
    feature/*:
      - step:
          image: python:3.5.1 # This step uses its own image.
          script:
            - echo "Runs only on branches that match this pattern."

 

InfoQ talked to Sten Pittet (Product Manager Bitbucket Pipelines) to learn more about Atlassian's integrated Continuous Delivery solution.

InfoQ: Can you tell us more about Bitbucket Pipelines and how it works?

Pittet: Atlassian has been investing in Continuous Integration and Delivery for a while with Bamboo Server and Bamboo Cloud and we wanted to find a way to help teams have great quality in their releases while moving fast. Continuous Delivery helps people achieve that but we have noticed that on the cloud it is really hard for people to adopt […] because of how difficult it is to setup. We could also see that switching context between different tools is difficult for developers. Our mission is to democratize development and help every software team to understand the potential [of Continuous Delivery] and work in a better way. Looking at what we had, we realized that the best way to do this was to simplify our offerings by bringing the CI/CD workflow into Bitbucket, close to the repository where it should be.

There are many CI/CD solutions available in the market and most integrate with Bitbucket – what has been the motivation to build a new solution right within Bitbucket Cloud?

Pittet: The main motivation is to simplify the process for software teams. It was difficult to do before because we did not have technologies such as Docker, which simplify containerization and running agents. But our main reason for bringing it to Bitbucket was that quality should not wait. Testing becomes more and more crucial today, and we wanted to make it valuable for every software team, starting from day one. So we made Bitbucket a new platform […]. We believe that we have now made Bitbucket a place where you can code, build, test, and deploy, with all the tools you need to ship great quality software.

InfoQ: If I understand Bitbucket Pipelines correctly, every build step is running a Docker image as a separate container instance?

Pittet: Yes, you create the definition of your pipeline as code in a file in YAML format […], and you can define different pipelines for specific branches to support feature branching workflows like Gitflow. Within each of those pipelines we have several steps. Like this you can define one Docker image that you want to use for all steps, or you can overwrite images at step level […]. During the beta the pipelines are limited to one step each, but we will extend that in the future to make it more flexible […].

Bitbucket provides a default Docker image as the build environment. Users can also reference images from Docker Hub or a custom registry, or create their own, be it manually or via an automated build on Docker Hub, which can also be monitored within Bitbucket in turn.

Pittet confirmed that Bitbucket Pipelines is implemented atop the Amazon EC2 Container Service (ECS). While this transparent and managed container usage is one of Pipeline’s value propositions, users have also requested the ability to execute builds in their own ECS cluster.

InfoQ: Bitbucket Pipelines itself is implemented as a Bitbucket Connect add-on – will Pipelines also be extensible in turn?

Pittet: This is something that we want to provide in the future, and one goal of the beta is to work with partners and people who want to extend Bitbucket Pipelines to understand what is the best approach. If we take Bamboo Cloud for instance, we did not have that possibility […] because of technical constraints with the Plugins 2 architecture. With Pipelines we now have much more opportunities to do so. We have to define those integrations, but we are looking forward to what we can do in the future.

InfoQ: You are already promoting integrations with third party providers like Azure and AWS – what comprises such an integration at this point, are those going to be add-ons down the road?

Pittet: At the moment, our integrations are based on documentation. This helps our beta users, for instance, to integrate Azure with Pipelines so that they can kick off deployments. We also have integrations with mobile platforms […]. We are going to keep working with partners to make these integrations even easier in the future.

InfoQ: Atlassian has recently renamed the on-premise Git solution Stash to Bitbucket Server to create a joined brand with Bitbucket Cloud, and also aligned the user interfaces and APIs – will Bitbucket Pipelines be available for Bitbucket Server too accordingly?

Pittet: We do not have a plan for that. We consider Bamboo Server to be a very good on-premise solution which already integrates very well with Bitbucket Server. Our plan is to invest more in Bamboo Server to make it an even better solution for large enterprises. Recently we launched a new 250 agents tier [see previous coverage], so we are serious about both sides and we want Bamboo Server to keep growing.

Current customers have expressed concerns about Bitbucket Pipelines supposedly replacing Bamboo Cloud, while not offering a comparable feature set yet. Notable limitations at this time are the lack of Mercurial support, the absence of notifications via email or HipChat, no artifact storage management, the inability to build and push Docker images as part of a pipeline, and a missing integration with the JIRA development panel. Users are also currently missing scheduled or manually triggered builds to decouple delivery and deployment, webhooks for integration with third party services, and the ability to restrict the number of simultaneous builds or specify a quiet time. On the other hand, Bitbucket Pipelines alike configuration as code via configuration files, templates or the API are highly requested features for Bamboo Server too.

Atlassian has not yet revealed Bitbucket Pipelines pricing and will continue to provide it for free during beta, including a build allowance of 300 minutes per user per month. For example, a team of 10 developers will have a monthly allowance of 3000 minutes, counted at the account level and reset on the first day of each month. The plan is to introduce a pricing model that scales with the number of users in a team.

The Bitbucket Pipelines documentation provides more details, including a FAQ. Support is offered via Atlassian’s Dev Tools support portal and the community curated bitbucket-pipelines topic in Atlassian’s Q&A forum. Development can be monitored via the Pipelines component in Bitbucket Cloud’s public issue tracker.

Rate this Article

Adoption
Style

BT