My 2.0 experience


#1

First the good:

  • Circle 2.0 is blazing fast. This solves a big pain point for me, as my old Circle builds were getting kinda slow. I especially like how fast all of the pre-build steps run.
  • Being able to build locally is really great.
  • Having more control over the cache is great. I need to investigate it more, but I think this might be able to significantly speed up ClojureScript boot builds, as they’ll be able to cache a lot of intermediate results.

Now the not so good:

  • The new Circle setup is significantly more complex. I’ve spent around 2 hours setting up a single build, and I’m not even finished. With Circle 1, I could get started in 2 minutes, and incrementally add stuff as I went. With 2.0, I need to put a lot more time up front in.
  • I really liked having a defined structure to do my tests in, and the inference was really helpful.
  • Setting up a Docker container is something I never used to need to think about. I needed to find one that matched mostly what I needed, and then add more stuff to it to get back up to the rough state of my Circle 1 VM. Having a “CircleCI everything container” would be a big help for getting started.
  • Setting up gcloud was quite tricky as the Google docs for non-interactive installs don’t seem to work, and the path updating didn’t seem to work. This wasn’t something I needed to think about in 1.
  • While I love the control over caching, it takes a bit more thought to get it right now that caches are immutable. This seems like it’s going to be a big pain point for people as they upgrade.
  • The Docker container runs the user as root (by default?). Clojure build tools don’t like being run as root, so you need to work around that. I’m not very familiar with Docker so I don’t know if there’s a way for me to change this. Circle 1 didn’t have this problem.

Docs:

  • The best practices discourage mutable tags, but some of the language guides use them.
  • The caching docs should make it very clear that caches are immutable, and also show the trick for caching on partial keys.
  • I wanted to SSH into my Docker container locally to check some things out, but I couldn’t see any docs or instructions in the CLI for this.

Overall:

Overall, I feel like Circle 2.0 is like doing CI on hard mode. I really appreciate the speed improvements, but I wouldn’t recommend migrating the rest of our companies builds just yet. I’m sure it will get better over time, but at the moment it feels like I’ll need to do a lot of manual labour and thinking to get it right.

Edit:

I just remembered, one of the big reasons why we used Circle was that there was nothing to setup to get a headless Chrome running for browser testing. Doing the same in a Docker container seems quite difficult.


#2

Thank you sincerely for this thoughtful feedback. Makes me very excited to continue working on this product.


#3

Hi @danielcompton

Thank you for providing detailed feedback. This will be helpful as we continue to improve our 2.0 Platform.

I am glad that you liked the performance improvements and granular controls in 2.0.

We are currently working on improving the upgrade experience from 1.0 to 2.0. Today, we have released CircleCI Images to help customers who are not familiar with docker to get started on 2.0 easily. We will release additional functionality in coming weeks.

Your feedback for caching is valid and I will discuss it internally.

We are currently working on enabling SSH into Builds functionality and will have an update in coming weeks.

You are correct about Clojure tools not wanting to being run as root. These warnings can be suppressed by setting a config variable. We will be releasing a Clojure CircleCI image fairly soon that will address this problem.

I have forwarded your documentation feedback to our technical writing team.

Thank you for supporting 2.0 Beta.


#4