Skip to content

CircleCI

Note: In order to streamline development and reduce tool fatigue among engineers, we are moving select project CI/CD pipelines to GitHub Actions.

CircleCI is a tool we use to manage the continuous integration and continuous delivery (CI/CD) of our clients’ applications. CircleCI triggers automated tests every time a modification occurs in the code, guaranteeing that the newly integrated code maintains the system’s stability and does not introduce any bugs or vulnerabilities.. This streamlines our development process and ensures we’re shipping stable code.

CircleCI is integrated into our clients’ applications via a config.yml file held in a .circleci directory. This file is configured to the specific technologies used within the application, but each file follows the same basic structure:

  • CircleCI version declaration, e.g.:

    version: 2.1
  • Execution environment declaration, e.g.:

    jobs:
    build:
    docker:
    image: cimg/base:2022.05
  • List of jobs and workflows

    jobs:
    # Job one with a unique name
    say_hello:
    docker:
    - image: cimg/base:2022.05
    steps:
    - run: echo "Say hello to YAML!"
    # Job two with a unique name
    say_goodbye:
    docker:
    - image: cimg/base:2022.05
    steps:
    - run: echo "Say goodbye to YAML!"
    workflows:
    # Name of workflow
    hello_and_goodbye:
    # List of jobs that will run
    jobs:
    - say_hello
    - say_goodbye

When you onboard to a new project it is critical to review the CircleCI config.yaml file so you are aware of the jobs and workflows that will take place when you open a PR or push to a staging branch.

  • Continuous Integration (CI)

    CI is a developmental practice where changes developed on feature branches are merged back into main as often as possible. This practice relies heavily on thorough test coverage, as frequent merges increase the chance of merging broken code into the live application. With robust test coverage, however, CI helps many developers collaborate on a single application and avoid merge conflicts or bugs reaching production environments.

  • Continuous Delivery (CD)

    Taking a step forward from CI, continuous delivery is the practice of automatically deploying code to a staging environment after your build succeeds and tests pass, then manually deploying to production after a person (often the client) reviews the changes. Teams with fine-tuned CI/CD strategies deploy as often as possible in an attempt to minimize the changes in each deployment and more quickly isolate issues that make it to production.