Most Read

How to Design Services for Continuous Deployment: 3 Best Practices

The benefits of continuous delivery are well-documented elsewhere. In this post I want to share s...

Marc O'Morain

How We Interview Engineers at CircleCI

Since the beginning of 2018, we have had over a thousand candidates pass through the engineering ...

Jeff Palmer

Persisting Data in Workflows: When to Use Caching, Artifacts, and Workspaces

CircleCI 2.0 provides a number of different ways to move data into and out of jobs, persist data,...

Gordon Syme


  • Automate Your Static Site Deployment with CircleCI

    This article was originally posted on Forestry.io’s blog. Forestry.io is a Git-backed CMS (content management system) providing editors and other non-technical users with a custom UI for websites and web products built using static site generators.

    Tools like Hugo, Jekyll, and Gatsby have made building static sites a popular and practical choice for developers. One major disadvantage these tools have, however, is the need to regenerate and redeploy their files every time there is new content to publish.

    Automating this process will go a long way toward making your static site feel like a dynamic CMS. It will also save you time and improve the reliability of your deployments, as the exact same steps will run every time you deploy. For this reason, automated deployment is a cornerstone of modern web development.

    Our favorite deployment tool is CircleCI, we’re using it at Forestry.io every day to deploy our Hugo site. For our tutorial today we’ll be using CircleCI to deploy a Hugo site but you can use CircleCI for any static site that needs automated deployment.

    Continue reading “Automate Your Static Site Deployment with CircleCI”


  • How to Design Services for Continuous Deployment: 3 Best Practices

    The benefits of continuous delivery are well-documented elsewhere. In this post I want to share some of the practices that we use at CircleCI to ensure that our services can safely be deployed continuously.

    Our stack is composed of services deployed on Kubernetes. Each service is largely contained in its own git repository and deployed independently of other services. When we deploy a new version of a service, the new code is rolled out pod by pod, by Kubernetes. This means that at any one time, there can be more than one version of the code in production at once.

    What follows is a list of practices that we find work well for us as team.

    1. Prevent Broken Code From Being Deployed
    2. Know When Code Is Being Deployed
    3. Ensure Messages Are Delivered

    Continue reading “How to Design Services for Continuous Deployment: 3 Best Practices”


  • How We Interview Engineers at CircleCI

    Since the beginning of 2018, we have had over a thousand candidates pass through the engineering hiring process. Our engineering interview consists of four stages following an initial screen. We broke down the percentages of candidates that pass through each stage of our hiring process, and it looks like this.

    Out of any group of 1000 applicants:

    250 will pass the initial screen.
    117 will pass the hiring manager phone screen.
    44 will pass the micro-skills assessment portion of the interview.
    7 will pass the macro-skills assessment.
    Fewer than 3 will pass the on-site interview and receive offers.

    Following our Series C, we’ve ramped up our hiring further, building on what we’ve learned so far. We’ve been talking a lot internally lately about how we interview, and thought folks might be interested in what our interview process looks like for engineering roles, and why.

    Continue reading “How We Interview Engineers at CircleCI”


  • CircleCI and Snapcraft: Everything You Need to Know

    Snapcraft, the package management system fighting for its spot at the Linux table, re-imagines how you can deliver your software. A new set of cross-distro tools are available to help you build and publish “Snaps”. We’ll cover how to use CircleCI 2.0 to power this process and some potential gotchas along the way.

    Continue reading “CircleCI and Snapcraft: Everything You Need to Know”


  • How a Seemingly Simple Logging Problem Turned into a Bear Trap: Lessons Learned

    BearTrap.jpg

    “Developers are drawn to complexity like moths to flame, frequently with the same result. Puzzle solving is fun, and developers are problem solvers. Who doesn’t like the rush of solving some incredibly complex problem? In large-scale software, though, removing accidental complexity while retaining the solution to the essential complexity is challenging.” Neal Ford

    I have been coding in Clojure for almost 4 years now. I have been fighting with logging in Clojure for almost 4 years now. This is not something for which Clojure is solely to blame, but it is something that seems to often suffer the Lisp Curse.

    This past year, while working in a field of green (ie, building Contexts), I was once again confronted with a “simple” problem in the realm of logging…namely we were spitting out all of our secrets. Figuring this was probably enough to block launching it publicly, my team took some time to dig deeper and hunt down the errant class writing all of our requests to stdout.

    Continue reading “How a Seemingly Simple Logging Problem Turned into a Bear Trap: Lessons Learned”


  • Your Gender Ratio Won't Change Overnight. Start With Inclusion, Respect, and Opportunities.

    Inclusion+Kindness.jpg

    It’s no secret that there is a gender imbalance in software engineering. While this is true at CircleCI, and something we are working on improving, it’s not something I had really registered until I recently saw our largest conference room full of our senior engineers for an onsite architecture summit. It was, with only one exception, a sea of men.

    I was surprised — enough to feel hurt. And I was surprised by my own surprise. I know the numbers. Reflecting on my own reaction, I realized the imbalance had never sunk in because of the way my teammates treat me; like each other: with respect, kindness, support, and (occasionally) eyeroll-laden mockery. Everyone is included.

    There are myriad small gestures and greater pains many of my peers have taken to make me and others feel welcomed, supported, and included. According to HBR, inclusion means “creating an atmosphere in which all people feel valued and respected and have access to the same opportunities.” Inclusion is a vital precursor to diversity because it creates an environment where people from diverse backgrounds can thrive. The counter to death by a thousand cuts is growth by a thousand kindnesses.

    Continue reading “Your Gender Ratio Won't Change Overnight. Start With Inclusion, Respect, and Opportunities.”


  • CircleCI: Helping Intuit Teams Save 40% (or more) on CI/CD

    This post was originally published on Intuit Quickbooks’ engineering blog.

    DockerCI.png Docker on CI is powerful

    CircleCI has an amazing set of features in a simple package that allows our developers to move faster than ever before. Coming from our old build system, we wanted to push Circle to the limits such that we could squeeze as much speed out of it as possible.

    Goals

    1. Be as small as possible
    2. Be reliable/reproducible
    3. Be fault tolerant

    From the outset, we wanted to make sure that we could build at scale with the least amount of friction possible. That meant embracing open source, and interweaving it our internal solutions. At each step of our build process, we focused on these things.

    Continue reading “CircleCI: Helping Intuit Teams Save 40% (or more) on CI/CD”


  • We’re Sunsetting CircleCI 1.0: August 31, 2018 is the Final Day for 1.0 Builds

    TL;DR: After August 31, 2018, CircleCI 1.0 will no longer be available for Linux and macOS users. You can find guides for transitioning from 1.0 to 2.0 and a full timeline on planned changes here.

    We launched CircleCI 2.0 for general availability in July 2017, providing users with increased flexibility, power, and control. Since then, build times on both our Linux and macOS fleets have been dramatically reduced. We’ve been able to handle increasing numbers of users and jobs, while simultaneously decreasing average job time across every language we serve. The addition of Workflows in 2.0 has also made it possible to match your pipeline to your team’s needs.

    Continue reading “We’re Sunsetting CircleCI 1.0: August 31, 2018 is the Final Day for 1.0 Builds”


  • A Brief History of DevOps, Part IV: Continuous Delivery and Continuous Deployment

    (This is part four of a four-part series. Read parts one, two, and three here.)

    This is it, folks: the final chapter in our epic trek through the history of DevOps! Last time, we talked about how the Agile movement gave rise to the more defensive practices of automated testing and continuous integration. This time, we’ll be discussing the progression of that theme with continuous delivery and continuous deployment.

    Admittedly, the introduction of two more “continuous” terms is a bit confusing, especially because the lines between one term and the next are so blurry; it doesn’t help that they are recent developments and could be renamed at any moment.

    But fear not! We’re well-equipped to deal with this kind of volatility and will tread carefully. At this point in our saga, “history” is hardly even the right word for what we’re discussing. What we’re really talking are current events, which is very exciting but also much squishier than more concrete subjects like waterfall development or Agile methodology.

    Continue reading “A Brief History of DevOps, Part IV: Continuous Delivery and Continuous Deployment”


  • Preserve Build Integrity and Prevent Future Problems with Deterministic Builds

    DeterministicBuilds.png

    Why are Deterministic Builds Important?

    Reproducibility and reliability.

    The most common thing a customer will say in a support ticket is that their builds are suddenly failing even though “nothing has changed” on their end. This is almost never true.

    In this post, I want to talk about deterministic builds. The idea here is to reduce as many changing parts as possible within a build. This means fewer mysterious failing builds, fewer support tickets (for you and us), and perhaps identically reproducing that accidentally deleted binary by simply re-running the build.

    Continue reading “Preserve Build Integrity and Prevent Future Problems with Deterministic Builds”


Get New Posts Delivered

Sign up to receive fortnightly blog highlights

Thank You for Submitting Your Info


You should receive an automated response notifying you that we received your info. Someone from our Enterprise team will be reaching out to you shortly.


CircleCI Success Logo