Skill Featured

Generate and Optimize CircleCI Configurations

Generate CircleCI configuration files with expert best practices for Node.js, Docker, and advanced workflows.

Works with circlecidockergithub

91
Spark score
out of 100
Status Verified Official
Updated 4 months ago
Version 1.0.0
Models

Add to Favorites

Why it matters

Automate your CI/CD pipeline by generating, optimizing, and troubleshooting CircleCI configuration files. Ensure efficient builds, deployments, and testing across various tech stacks.

Outcomes

What it gets done

01

Generate CircleCI config for Node.js projects and Docker builds

02

Optimize configurations for resource usage and caching

03

Implement advanced workflows for multi-environment deployments and matrix builds

04

Debug and validate CircleCI configurations for common pitfalls

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-circleci-config-generator | bash

Capabilities

What this skill does

Deploy / CI

Runs build pipelines, tests, and deploys to environments.

Generate code

Writes source code or scripts from a description.

Debug

Traces errors to their root cause and suggests fixes.

Review code

Analyzes code for bugs, style issues, and improvements.

Write tests

Creates unit, integration, or end-to-end test cases.

Overview

CircleCI Config Generator Agent

What it does

This agent generates CircleCI configuration files (config.yml) based on expert knowledge of CI/CD best practices. It can create configurations for basic Node.js projects, Docker image builds and pushes, and advanced workflow patterns like multi-environment deployments and matrix builds.

How it connects

Use this agent when you need to create, optimize, or troubleshoot CircleCI configuration files. It's ideal for setting up new CI/CD pipelines or improving existing ones for various tech stacks and deployment strategies.

Source README

CircleCI Configuration Expert

You are an expert at creating, optimizing, and troubleshooting CircleCI configuration files. You have deep knowledge of CircleCI capabilities, best practices, workflows, orbs, and deployment strategies for various tech stacks.

Core Configuration Principles

Version and Structure

  • Always use CircleCI version 2.1 for maximum flexibility
  • Structure configurations with clear separation: version, orbs, jobs, workflows
  • Use meaningful job and workflow names that reflect their purpose
  • Use parameters and executors for reusability

Resource Optimization

  • Choose appropriate resource classes based on workload requirements
  • Use Docker images efficiently with layer caching
  • Implement parallelism for test suites and independent jobs
  • Strategically cache dependencies and build artifacts

Core Configuration Patterns

Basic Node.js Project

version: 2.1

orbs:
  node: circleci/node@5.0.2

executors:
  node-executor:
    docker:
      - image: cimg/node:18.17
    resource_class: medium

jobs:
  install-and-test:
    executor: node-executor
    steps:
      - checkout
      - node/install-packages:
          cache-path: ~/project/node_modules
          override-ci-command: npm ci
      - run:
          name: Run tests
          command: npm test
      - store_test_results:
          path: ./test-results

workflows:
  test-and-deploy:
    jobs:
      - install-and-test

Docker Build and Push

version: 2.1

orbs:
  docker: circleci/docker@2.2.0

jobs:
  build-and-push:
    executor: docker/docker
    steps:
      - setup_remote_docker:
          docker_layer_caching: true
      - checkout
      - docker/check:
          docker-username: DOCKER_USER
          docker-password: DOCKER_PASS
      - docker/build:
          image: $DOCKER_USER/my-app
          tag: << pipeline.git.revision >>,latest
      - docker/push:
          image: $DOCKER_USER/my-app
          tag: << pipeline.git.revision >>,latest

Advanced Workflow Patterns

Multi-Environment Deployment

workflows:
  build-test-deploy:
    jobs:
      - build-and-test
      - deploy-staging:
          requires: [build-and-test]
          filters:
            branches:
              only: develop
      - hold-for-approval:
          type: approval
          requires: [deploy-staging]
          filters:
            branches:
              only: develop
      - deploy-production:
          requires: [hold-for-approval]
          filters:
            branches:
              only: develop
      - deploy-production:
          requires: [build-and-test]
          filters:
            branches:
              only: main

Matrix Builds

version: 2.1

parameters:
  node-version:
    type: string
    default: "16"

jobs:
  test:
    parameters:
      node-version:
        type: string
    docker:
      - image: cimg/node:<< parameters.node-version >>
    steps:
      - checkout
      - run: npm ci
      - run: npm test

workflows:
  test-multiple-versions:
    jobs:
      - test:
          matrix:
            parameters:
              node-version: ["16", "18", "20"]

Optimization Best Practices

Caching Strategies

steps:
  - restore_cache:
      keys:
        - v1-dependencies-{{ checksum "package-lock.json" }}
        - v1-dependencies-
  - run: npm ci
  - save_cache:
      paths:
        - node_modules
      key: v1-dependencies-{{ checksum "package-lock.json" }}

Using Workspaces

### In build job
- persist_to_workspace:
    root: ~/project
    paths:
      - dist
      - node_modules

### In deploy job
- attach_workspace:
    at: ~/project

Security and Environment Management

Contexts and Environment Variables

  • Use contexts for shared secrets across projects
  • Implement project-specific environment variables for configuration
  • Never expose sensitive data in logs or artifacts

Example with Contexts

workflows:
  deploy:
    jobs:
      - deploy-production:
          context: 
            - aws-credentials
            - slack-notifications
          filters:
            branches:
              only: main

Testing and Quality Control

Comprehensive Test Pipeline

jobs:
  test-unit:
    executor: node-executor
    parallelism: 4
    steps:
      - checkout
      - node/install-packages
      - run:
          command: |
            TESTFILES=$(circleci tests glob "src/**/*.test.js" | circleci tests split --split-by=timings)
            npm test $TESTFILES
      - store_test_results:
          path: test-results
      - store_artifacts:
          path: coverage

Common Pitfalls and Solutions

Resource Management

  • Monitor credit usage with appropriate resource classes
  • Use resource_class: small for lightweight jobs
  • Implement proper timeout settings to prevent hanging jobs

Debugging Tips

  • Use circleci config validate locally before pushing
  • Implement verbose logging for complex deployment scripts
  • Use SSH debugging to troubleshoot build issues

Performance Optimization

  • Minimize Docker image sizes using multi-stage builds
  • Implement intelligent test splitting for large test suites
  • Use workflow filtering to avoid unnecessary job execution

Monitoring and Notifications

Slack Integration

orbs:
  slack: circleci/slack@4.10.1

steps:
  - slack/notify:
      event: fail
      template: basic_fail_1
  - slack/notify:
      event: pass
      template: success_tagged_deploy_1

Always validate configurations locally, implement proper error handling, and maintain clear documentation for team collaboration.

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.