Package, ship, and re-use config with orbs.

/ôrb/ noun

A reusable package of YAML configuration that condenses repeated pieces of config into a single line of code.

Why use an orb?

Orbs are reusable snippets of code that help automate repeated processes, speed up project setup, and make it easy to integrate with third-party tools.

  • Save time on project configuration
  • Increase organizational efficiency
  • Simplify third-party integrations
How to use an orb

Use a pre-built orb

To use a pre-built orb, copy the config code from the orbs registry into your team’s config file. Our extensive list of orbs are held in an open source code library. Try something new without committing days of engineering time to setting up a new system, feature, or DevOps practice.

or

Create an orb for your team

If you don’t see an orb that fits your needs, create a specialized orb using our Best Practices and Getting Started guides. Our Orb Development Kit makes the authoring process simple, with automated testing and deployment on CircleCI. If your team wants to share configuration across multiple projects, exclusive to your organization, you can create private orbs. All the orbs you create can be easily tracked, saved for future use, and updated from within the CircleCI application.

Explore orb use cases

Save time on project configuration and easily set up third-party integrations.

Orb Use Cases

Integrate with Kubernetes

Automate Kubernetes deployments with CircleCI. Use orbs to execute pre-configured operations directly from your CI/CD pipeline.

Orb Use Cases

Integrate with Amazon Web Services

Explore our full suite of AWS integrations. Out of the box integrations to manage your development process from source code to runtime with CircleCI and AWS.

Orb Use Cases

DevSecOps

Build security into your CI/CD pipeline

CircleCI integrates with tools for vulnerability scanning, secrets management, and policy compliance.

Orb Use Cases

Deployment

Automate deployments with CircleCI orbs

A fast, out-of-the-box solution for integrating with AWS Lambda, GCP, Kubernetes, and other deployment services.

Cory Virok
“There were so many of our customers that were already using orbs and already using CircleCI that their ability to take the orb and adopt it was trivial. It was so easy that it gave them access to that feature without having to do any additional work.”

Cory Virok
Co-founder and CTO at Rollbar

Kelsey Steinbeck
“Almost all of our workflows follow the same large pattern…It was really nice that we could define the ‘how to’ in one spot, get all of the repos set up with the one orb so when we made updates we only had to make that change in 1 place. It’s a noticeable time difference for when we have to roll out changes. It could save us days of updates.”

Kelsey Steinbeck
Director of Software Engineering at Indigo

Reusable commands, executors, and jobs

Orbs define reusable commands, executors, and jobs so that commonly used pieces of configuration can be condensed into a single line of code.

    
      
          version: 2.1

          description: An orb with some simple ways to help you with your first build.
          
          commands:
            circleci-env-highlights:
              steps:
              - run:
                  command: |-
                    echo "TRIGGERER: ${CIRCLE_USERNAME}"
                    echo "BUILD_NUMBER: ${CIRCLE_BUILD_NUM}"
                    echo "BUILD_URL: ${CIRCLE_BUILD_URL}"
                    echo "BRANCH: ${CIRCLE_BRANCH}"
                    echo "RUNNING JOB: ${CIRCLE_JOB}"
                    echo "JOB PARALLELISM: ${CIRCLE_NODE_TOTAL}"
                    echo "CIRCLE_REPOSITORY_URL: ${CIRCLE_REPOSITORY_URL}"
                  name: Show some of the CircleCI runtime env vars

            hello-triggerer:
              parameters:
                to:
                  default: ${CIRCLE_USERNAME}
                  type: string
              steps:
              - run: echo "Hello << parameters.to >>"

            system-info:
              steps:
              - run:
                  command: |-
                    echo "uname:" $(uname -a)
                    echo "arch: " $(arch)
                  name: Show system information
          
          executors:
            default:
              docker:
              - image: circleci/buildpack-deps:<< parameters.tag >>
              parameters:
                tag:
                  default: curl-browsers
                  type: string
          
          jobs:
            hello-build:
              executor: default
              steps:
              - hello-triggerer
              - circleci-env-highlights
              - system-info