CircleCI is a service that I heard about from a friend that allows you to get continuous integration pipelines built up for your repositories... And it does it quick and easy. Also, free if you're someone like me and you don't have a large demand for getting builds done! I wanted to write about my experience with getting CircleCI wired up with BitBucket, which I like to use for my project hosting, and hopefully it'll help you get started.
First thing, signing up is super easy if you have BitBucket because you can oauth right away with it. CircleCI will show you your projects & repositories that you have in BitBucket and you can decide which one you'd like to get started with. You can navigate to the projects in their new UI from the "Add Projects" menu.
When you click "Add Projects" you'll be met with a list that looks like this but... With your own projects and not mine :)
On this screen, you'll want to select "Set Up Project" for the project of your choice. For me, I was dealing with a .NET project (which I've already setup) so I selected it and was presented with the following screen. It also allows you to pick a template out to get started:
However, I needed to change the default template to get things to work properly when I had nuget packages! We're missing a restore step. With some help from my friend Graeme, we were able to transform the sample from this:
version: 2.1
orbs:
win: circleci/[email protected]
jobs:
build:
executor: win/default
steps:
- checkout
- run: dotnet build
To now include the nuget restore step prior to building!
version: 2.1
orbs:
win: circleci/[email protected]
jobs:
build:
executor: win/default
steps:
- checkout
- run:
name: Restore
command: dotnet restore
- run:
name: Build
command: dotnet build -c Release
Once you save this, CircleCi will make a branch called "circleci-project-setup" on your remote. It then goes ahead and runs your build for you! When the build for this new remote branch succeeded, I pushed this configuration to my "master" branch so that all builds on master going forward would get continuous integration builds.
Checking the CircleCI dashboard now looks like the following:
You can see pipeline #1 is on the branch where the test circleci configuration was made (and passed). Pipeline #2 is once I added this commit onto my master branch and pushed up! Now I have continuous integration for pushing to my lib-nexus-collections-generic BitBucket project. When I check out my commit page, I can see the new commits after the configuration landed get a nice green check when the builds pass on CircleCI:
So with a few easy steps, you can not only have free source hosting in BitBucket but free continuous integration from CircleCI. Every time you push code to a remote branch, you kick off a build! This is only the starting point as you can configure CircleCI to do much more than just restore nuget packages and build .NET solutions :)