Each project in CircleCI is connected to a GitHub Repository.
Within a project, CircleCI describes the following concepts:1
- Pipeline the entirety of CircleCI configuration
- Workflows orchestrates multiple jobs.
- Jobs runs a series of steps
- Steps run commands or shell scripts
- Jobs runs a series of steps
- Workflows orchestrates multiple jobs.
These can be described in a .circleci/config.yml
file.
There are many configuration options available in CircleCI.2
The following is a simple example of a configuration file:
---
version: 2.1
commands: # a reusable command with parameters
greeting:
parameters:
to:
default: "World"
type: string
steps:
- run: echo "Hello <<parameters.to>>!"
jobs:
example-job:
machine:
image: ubuntu-2404:current
steps:
# Reusable command example
- greeting:
to: "Universe"
# Manual step example
- build
- test:
requires:
- build
- hold:
type: approval
requires:
- test
- deploy:
requires:
- hold
Steps can by run in Virtual Machines3 (for instance ubuntu-2404
) or Docker containers4 (for instance cimg/node
).
The processes involved with a release are:
- GitHub Synchronisation
Automated periodical process to synchronise production data back to the
editor
branch of repositories. - Manual Build Process
Tests the
editor
branch of repositories and provides a way to create a release. - Automated Deploy Process Automated process to deploy a release to production.
These processes should look something like this:
GitHub Synchronisation | Build | Deploy |
---|---|---|
![]() |
![]() |
![]() |