Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Teamcity VS Bitbucket Pipeline

Ramesh Thummanapally August 22, 2016

Hi Team,

I am currently using BitBucket Git as source version control and Teamcity for ASP.Net applications to build and deploy .

As Atlassian newly introduced BitBucket Pipeline where we can build and deploy at one place, planning to use BitBucket Pipeline instead.

Can anyone please give the information for the below mentioned

  1. Why should i change to BitBucket Pipeline when i am getting all the features that i can manage with TeamCity
  2. benefits and drawbacks of using bitbucket pipepline instead of Teamcity for application build

  3. Number of license required for using pipeline

  4. What are the changes in build/branch/deployment process compared to Teamcity

  5. Can we integrate pipeline with selenium tests

Thanks

Ramu

2 answers

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

2 votes
Sten Pittet
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 17, 2016

Hey Ramu,

I used to be the Product Manager for Bamboo which is very similar to Team City and I now work on Bitbucket Pipelines.

I'd need to know what features of TeamCity you're using to understand if Pipelines is a good fit for you today as we don't have yet scheduled and manual triggers. We plan on adding those features but today we're focused on Continuous Delivery and we run a pipeline for every push in your repository. Finally if you're building a .NET core application on Linux it will be supported but you cannot yet run pipelines in Windows environment.

Please find my answers below for your questions.

(1) Why change?

  • Pipelines comes with Bitbucket - zero setup required
    That means that you won't have to do any upgrade or maintenance of a separate server and you don't need to manage a complex agent infrastructure. You just need to enable it in your repository to start using it.
  • Pipelines automatically scales on demand
    No need to create your agents or add new licenses for it. You will get a container to run your pipeline as you as you need it and you just need to specify a Docker image as your build environment. This means that your developer won't have to queue because you don't have enough containers.
  • Easy configuration as code - no setup
    The configuration of your build and deploy flow lives in your repository (as opposed to an arbitrary repo) without requiring you additional setup. It's easy to read and it follows your branch structure.
  • Native support for Docker
    Get access to 100,000+ environments from the DockerHub, connect to your own account or a private registry. Pipelines support Docker images natively. 
  • It's self service for teams
    You don't need to create separate users and groups to use Pipelines as it's part of Bitbucket. The same users that have access to the repositories will be able to use Pipelines.

For reference here's an example of YML configuration for Bitbucket Pipelines

# This is a sample build configuration for Javascript.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:4.6.0

pipelines:
  default:
    - step:
        script: # Modify the commands below to build your repository.
          - npm install
          - npm test
  branches:
    staging:
      - step:
          script: # Modify the commands below to build your repository.
            - npm install
            - npm test
            - export HEROKU_APP_NAME=$STAGING_APP #$STAGING_APP is a Pipelines env variable.
            - ./heroku_deploy.sh
    production:
      - step:
          script: # Modify the commands below to build your repository.
            - npm install
            - npm test
            - export HEROKU_APP_NAME=$PROD_APP #$PROD_APP is a Pipelines env variable.
            - ./heroku_deploy.sh

(2) Benefits and drawbacks of building your application

  • Scale on demand
    Pipelines scales on demand so if many developers are building at the same time they will all get a build in progress without you requiring to change your licensing. With TeamCity you'd need as many agents as developers to have the same effect.
  • Easier to manage dependencies with Docker
    By using Docker we make it much easier to manage build environments. You can easily create and update a Docker image with your required capabilities and then use it in your configuration. No need to re-configure each and every agent when you have a dependency change.

In terms of current limitations we do not yet support building Windows and iOS environments. We also do not manage artifacts but we have recipes to help you send them to S3 or your preferred artifact manager.

(3) Licensing

Bitbucket Pipelines is free until the end of the year. When pricing kicks in it will be based on usage and the price will be $10/1,000 minutes. You get unlimited concurrency and you only pay for what you use by pack of 1,000 minute so that you don't need to commit for an entire year at a fixed pricing. If your team happens to use less CI in a give month then this will be reflected in your bill.

You can find more information in our pricing page.

(4) Changes in build/branch/deployment process compared to TeamCity

The main difference between Pipelines and TeamCity is that in Pipelines there's a direct relationship between a repository and its pipelines. We have a natural flow approach where each commits goes through a pipeline, gets build and tested, and then deployed if necessary.

On TeamCity the approach is more project-centric where the user has to define what repositories go into a project and how to build and deploy all repositories together.

Our approach stems from our experience and the transition to microservices that we're seeing in Software. Each repository needs to be able to be built and deployed by itself and the best practice is to version the pipeline definition with the code itself.

(5) Selenium support

As Philip said, you can run Selenium tests.

Let me know if you have any other question.

jackiecustodio September 12, 2018

Hi @Sten Pittet, when you said "you can run Selenium tests", does that mean that any automated tests should be residing inside the solution where the code of the web app is in?

What if you have separate solution that have your UI tests/perf tests/pvt tests (and any other tests), can this be "added/called" in your pipeline too?

And what about if your selenium tests have built-in reporting, like allure or extentreport, same as TeamCity, how do we show the dashboard to users of the red and greens of the test and the bdd steps and screenshots where it fails? Is this where Bamboo comes in? :)

Then when you run the selenium tests, do they run within the same machine the bitbucket server/agent is installed and would actually launch the browser and do all this clicks/sendkeys/etc?

Sorry, I am also a bit confused transitioning from a Bitbucket repo just for source control then TeamCity for CI then Octopus for CD... Looks like Bitbucket pipeline offers all these CI/CD just using 1 tool, i.e. Atlassian.


1 vote
Philip Hodder
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
August 22, 2016

Hi Ramu,

I haven't used TeamCity, so I can't give direct comparisons. But let me see if I can help. smile

  1. Because you're already using Bitbucket. The advantages listed in 2. And the Beta is free, so you can just try it out and see how you like Bitbucket Pipelines. smile
  2. The main advantage of Bitbucket Pipelines is that your CI/CD is hosted with your source code. This makes it very easy to jump between the two. When a build fails, you can quickly check to see what changed in the source code that may have broken your builds. Another advantage is that your build configuration is version with your source control. So if you need to rollback a deployment that used a different deployment process, you don't need to reconfigure your builds. It's already stored with that version of the code!
  3. Right now Bitbucket Pipelines is in Beta. You can sign up for the beta for free here: https://bitbucket.org/product/features/pipelines No pricing plans have been announced for after beta yet.
  4. I can't answer this one, as I haven't used TeamCity.
  5. You sure can!
Ramesh Thummanapally August 29, 2016

Hi Hodder

Thanks for the Reply. This is helpful ,however can i get more info on benefits over team city?

As you mentioned "The main advantage of Bitbucket Pipelines is that your CI/CD is hosted with your source code" - this is also possibe in Teamcity

"you can quickly check to see what changed in the source code that may have broken your builds" - also this as well is possible with team city

See if you can help in getting the major benefits upon temacity

Thanks
Ramu

 

Ramesh Thummanapally October 17, 2016

Hi- I am still waiting if i would be helped by getting more information from this discussion

Thanks
Ramesh 

 

Philip Hodder
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 17, 2016

Hi Ramesh,

Sorry, I missed your previous message.

I haven't used TeamCity, so I can't compare the features between the products. However, we built Pipelines as cloud hosted CI/CD tool, which means you get a few things:

  • Pay as you go (we are free for the rest of the year). We will only charge for minutes spent building, rather than the cost of an agent and keeping it available.
  • We have no limit on concurrent builds. We scale our build agents to meet the demand of our users.
  • You don't need to maintain your own build infrastructure.

You can also see this video of the Atlassian keynote where we talk about Bitbucket Pipelines https://www.youtube.com/watch?v=XB7Z3akRmV8&feature=youtu.be&t=710

Also, keep in mind that currently Bitbucket Pipelines has limited Windows support at the moment: we don't support all of .Net yet, only .Net Core. That may affect if you can use Bitbucket Pipelines at the moment.

If that hasn't cleared anything up, I'd recommend trying out Bitbucket Pipelines on a small project and see how you like it. Bitbucket Pipelines is free for the rest of this year, and next year we are charging 1 cent per build minute used.

Thanks for your patience. smile

Cheers,

Phil

Ramesh Thummanapally October 21, 2016

Thanks Sten and Philip

Sten- we are using teamcity just build feature, and then move manual builds to environments

Bitbucket- we are using to commit our code to Git. 

Now our intention is to have automated build moved to staging/prod environments, so here my concern was to move teamcity along with octopus for both building and moving builds OR Bitbucket Bamboo ? We have to choose anyone from Teamcity/Bitbucket smile

Coming to your comments

Can you brief more on your comment "you cannot yet run pipelines in Windows environment" , as we are building .Net application from visual studio which will be on windows environment and will be committing our code to Git from there itself. 

Yes, I see few benefits for pipelines over Teamcity in the below

  • Configuration(.yml) is simple in pipeline compared to teamcity cofiguration
  • Pipeline uses docker image for moving builds to all environments and can scale whereas teamcity has to create multiple build agents with softwares installed based on load
  • Testing is simple with docker image .yml setting  whereas Team city lot of settings

Few more questions

Security - is there any authorization that we can implement for build moving to production and what else we have more benefits in security compared to teamcity?

and help me in adding more and more benefits to choose Bitbucket CD

 

Thanks
Ramu

 

Philip Hodder
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 24, 2016

Hi Ramu,

Because of the way Docker works, our build environments only support applications that will build and run on a Linux system. Microsoft has just announced Docker support, so in the future we will be able to support Windows builds. I can not give an estimate on when we will have full Windows support available.

i.e. We support .Net Core (as Microsoft has made that available on all operating systems), but not the entirety of the .Net framework (as the entire framework is still only available on Windows systems). 

In regards to your security question, yes! You can use 'Branch Permissions' in Bitbucket to lock down a specific branch (which adds restrictions to who and how users can add code to a branch). You can then set your production deployments to only deploy from the locked down branch.

If we apply this to the example bitbucket-pipelines.yml file Sten shared, you would make the "production" branch a restricted branch with the Bitbucket branch permissions. You then add your production deployment code to the "production" section of the bitbucket-pipelines.yml file. 

Does that help? smile

Cheers,

Phil

Ramesh Thummanapally October 28, 2016

Yes, Thanks to all for giving me enough information, helped me.

TAGS
AUG Leaders

Atlassian Community Events