1. Home
  2. /
  3. Circleci-config
  4. /
  5. Simple CircleCI Pipeline

Simple CircleCI Pipeline - Circleci-config Typing CST Test

Loading…

Simple CircleCI Pipeline — Circleci-config Code

A simple CircleCI config to build and test a Node.js application.

# .circleci/config.yml
version: 2.1
jobs:
	build:
		docker:
		- image: cimg/node:16.14
		steps:
		- checkout
		- run: npm install
		- run: npm run build

test:
	docker:
		- image: cimg/node:16.14
		steps:
		- checkout
		- run: npm install
		- run: npm test

workflows:
	version: 2
	build_and_test:
		jobs:
		- build
		- test

Circleci-config Language Guide

CircleCI is a cloud-based and on-premises continuous integration and continuous delivery (CI/CD) platform that automates software builds, tests, and deployments using pipeline configurations.

Primary Use Cases

  • ▸Automating build, test, and deployment pipelines
  • ▸Parallelizing CI/CD jobs for faster feedback
  • ▸Integrating with cloud and container environments
  • ▸Automating release management and artifact handling
  • ▸Ensuring reproducible and versioned builds

Notable Features

  • ▸YAML-based pipeline configuration
  • ▸Orbs for reusable jobs and commands
  • ▸Caching and workspace management
  • ▸Parallelism and matrix builds
  • ▸VCS integration for automated pipelines

Origin & Creator

Created by Paul Biggar and Allen Rohner in 2011 and maintained by CircleCI, Inc.

Industrial Note

CircleCI is widely used in enterprise DevOps for complex multi-environment pipelines, including cloud-native, microservices, and hybrid deployment workflows.

Quick Explain

  • ▸CircleCI uses YAML-based configuration files (`.circleci/config.yml`) to define pipelines.
  • ▸Supports multiple workflows, jobs, and steps for parallel and sequential execution.
  • ▸Integrates with VCS platforms like GitHub, GitLab, and Bitbucket.
  • ▸Enables caching, artifact storage, and Docker-based job execution.
  • ▸Facilitates automated deployment to cloud and on-prem environments.

Core Features

  • ▸Jobs - define a unit of work
  • ▸Workflows - define execution order of jobs
  • ▸Steps - commands within jobs
  • ▸Orbs - reusable packages of jobs, commands, and executors
  • ▸Executors - environments for running jobs (Docker, machine, MacOS)

Learning Path

  • ▸Week 1: Understanding config.yml syntax and jobs
  • ▸Week 2: Workflows and dependencies
  • ▸Week 3: Caching, artifacts, and environment variables
  • ▸Week 4: Using Orbs and reusable commands
  • ▸Week 5: Multi-environment deployments and insights dashboard

Practical Examples

  • ▸Build and test Node.js project with caching
  • ▸Run Python tests in parallel across multiple versions
  • ▸Deploy Docker images to AWS ECR
  • ▸Automate Terraform infrastructure deployment
  • ▸Trigger workflows across multiple repositories

Comparisons

  • ▸CircleCI vs Jenkins -> Cloud-native vs self-hosted flexibility
  • ▸CircleCI vs GitHub Actions -> Config-driven vs VCS-native CI
  • ▸CircleCI vs Travis CI -> Parallelism and caching advantages
  • ▸CircleCI vs GitLab CI -> Cloud-focused vs integrated DevOps platform
  • ▸CircleCI vs Bitbucket Pipelines -> Feature richness vs Bitbucket-native integration

Strengths

  • ▸Automates CI/CD pipelines end-to-end
  • ▸Supports parallel and matrix builds for speed
  • ▸Integrates with popular VCS and cloud platforms
  • ▸Provides reusable Orbs for common tasks
  • ▸Tracks artifacts, logs, and test results

Limitations

  • ▸Learning YAML syntax for complex pipelines can be challenging
  • ▸Limited free concurrency on cloud plans
  • ▸Debugging complex workflows may require careful logging
  • ▸Enterprise self-hosting requires infrastructure management
  • ▸Limited UI customization for pipeline visualization

When NOT to Use

  • ▸Projects with minimal CI/CD requirements
  • ▸Environments without Git integration
  • ▸Tasks requiring heavy on-prem orchestration
  • ▸Non-YAML-based pipeline preferences
  • ▸When alternative CI/CD tools already fully adopted

Cheat Sheet

  • ▸circleci config validate -> validate config.yml
  • ▸circleci local execute -> test job locally
  • ▸circleci orb install -> add reusable Orbs
  • ▸circleci pipeline -> trigger or inspect pipelines
  • ▸circleci build -> execute pipeline manually

FAQ

  • ▸Is CircleCI free? -> Yes, with limited concurrency
  • ▸Does CircleCI support on-premise? -> Yes, via CircleCI Server
  • ▸Can CircleCI run Docker jobs? -> Yes, Docker executor supported
  • ▸Does CircleCI support multiple VCS? -> Yes, GitHub, GitLab, Bitbucket
  • ▸Can CircleCI integrate with Kubernetes? -> Yes, via deployment jobs

30-Day Skill Plan

  • ▸Master YAML pipeline configuration
  • ▸Learn caching and workspace optimizations
  • ▸Implement reusable Orbs and commands
  • ▸Integrate deployments to cloud providers
  • ▸Monitor and analyze pipeline metrics

Final Summary

  • ▸CircleCI automates CI/CD pipelines using YAML configuration.
  • ▸Supports jobs, steps, workflows, and reusable Orbs.
  • ▸Integrates with VCS, cloud, Docker, and deployment environments.
  • ▸Facilitates parallel and matrix builds for efficiency.
  • ▸Crucial for enterprise DevOps and cloud-native workflows.

Project Structure

  • ▸.circleci/ directory for configuration
  • ▸config.yml - main pipeline definition
  • ▸Scripts/ - optional scripts used in steps
  • ▸Environment variable configuration
  • ▸README.md documenting pipeline usage

Monetization

  • ▸CI/CD consulting using CircleCI
  • ▸Pipeline optimization services
  • ▸Orbs and reusable pipeline packages
  • ▸Training and workshops
  • ▸Enterprise pipeline implementation

Productivity Tips

  • ▸Use caching and workspaces
  • ▸Parallelize tests and jobs
  • ▸Implement reusable Orbs
  • ▸Monitor pipelines regularly
  • ▸Automate deployment steps

Basic Concepts

  • ▸Job - unit of work executed in an executor
  • ▸Workflow - sequence or parallelization of jobs
  • ▸Step - command or action inside a job
  • ▸Executor - environment for job execution
  • ▸Orb - reusable set of jobs, commands, and executors

Official Docs

  • ▸CircleCI Documentation
  • ▸CircleCI Orbs Registry
  • ▸CircleCI GitHub Repository

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher