Choosing provider for private git repositories back in the day was though.

GitHub is most known and I’d even say iconic. They started to offer unlimited private repos for paid plans in 2016.
GitLab and BitBucket at that time offered unlimited private repositories. Wow! They got me.
Currently also GitHub provides unlimited private repositories and with recent introduction of GitHub actions I think it’s good time to do the comparison between them and see who provide best services in free plan.

In this post I’m focusing on free plans but you are free to explore paid option.

Feature comparison

  GitLab GitHub BitBucket
Unlimited private repos :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Private repo user limit None Up to 3 users Up to 5 users
Builtin CICD :heavy_check_mark::information_source: :heavy_check_mark::information_source: :heavy_check_mark::information_source:
CICD free minutes 2k 2k 50
CICD self hosted worker :heavy_check_mark: :heavy_check_mark: :white_check_mark:
Issues :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Wiki :heavy_check_mark: :white_check_mark: :heavy_check_mark:
Protected branches :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Enforced PR checks :heavy_check_mark: :heavy_check_mark: :white_check_mark::information_source:
Required PR review :white_check_mark::information_source: :white_check_mark::information_source: :heavy_check_mark:
Security alerts :white_check_mark: :heavy_check_mark::information_source: :white_check_mark:
Require MFA :heavy_check_mark: :white_check_mark: :white_check_mark:

Unlimited private repos
How many private repositories can you create.

Private repo user limit
How many users can you add in private repository.

Builtin CICD
Is there a form of CICD builtin.

CICD free minutes
How many free minutes of worker time you get in builtin CICD.

Can issues be created.

Can wiki be created.

Protected branches
Is there protected branches feature avaiable.

Enforced PR checks
Merge checks are in every provider but for BitBucket it’s only optional in free plan.

Required PR review
Not accepted PRs can’t be merged. Only Bitbucket allows to enforce this in free plan.

Security alerts
GitHub sends security alerts when we detect vulnerabilities affecting your repository.

Require MFA
Owner of a group in GitLab can enforce usage of MFA for all users in group.

My perspective

I use all three of them.

GitHub was used by most companies that have hired me but I use it also for public repos.
BitBucket and GitLab are hosting my private repos.

Because GitLab CI was introduced first I have all my pipelines there, and because I have lots of pipelines most of my repos are also there. There’s really no point in migration just for sake of migration, especially that I use also require MFA feature. My self hosted CI worker deployed by Helm on Kubernetes a robust and efficient approach to CICD.

GitHub actions are also great. It’s taking industry by storm as number of templates and easiness of use is outstanding. You can also setup your own worker but keep in mind that every worker is per repo, where in GitLab you can have per repo but also per group. In documentation it states that it is upcoming feature. Additional points for GitLab.

To be fair I haven’t tried BitBuckt CI. It offers only 50 minutes a month for free and combined with no self hosted worker it’s a deal breaker for me.

For me GitLab is current winner. Competition is not far away though.