인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
디자인 및 창작 · SKILL.md

ci-cd-pipeline-design

ci-cd-pipeline-design

Implements strategies for automation in building, testing, and deploying software through continuous integration and delivery principles.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: ci-cd-pipeline-design

description: Implements strategies for automation in building, testing, and deploying software through continuous integration and delivery principles. license: MIT compatibility: opencode metadata: version: "1.1.1" domain: coding triggers: ci cd, automation strategies, pipeline design, build automation, deployment strategies archetypes: [implementation, orchestration] anti_triggers: [manual deployment processes, non-automated testing] response_profile: verbosity: medium directive_strength: high abstraction_level: operational

role: implementation scope: implementation output-format: code


CI/CD Pipeline Design

Designs and implements CI/CD pipelines using GitHub Actions, GitLab CI, and Jenkins with automated build, test, security scan, and deployment stages, enforcing quality gates and reliable release workflows across environments.

TL;DR for Code Generation

  • Design pipelines with clear stage isolation — each stage (lint, test, build, deploy) runs independently with explicit artifact passing between stages
  • Use matrix builds for cross-version testing (e.g., Node 18/20, Python 3.10/3.11) but keep the matrix focused to avoid combinatorial explosion
  • Pin CI runner versions (e.g., ubuntu-22.04, actions/checkout@v4) to prevent unexpected breakage from runner updates
  • Secrets must come from the CI platform's secret store (GitHub Secrets, GitLab CI/CD Variables), never from repository files or hardcoded values
  • Make pipelines fail fast: fail on the first error within a stage and surface failures clearly in PR status checks

Importance of CI/CD in Modern Development Practices

Continuous Integration and Continuous Delivery (CI/CD) are essential methodologies that enable teams to deliver high-quality software efficiently. Here are the primary benefits:

  • Faster Time to Market: Rapidly deploy features to end-users, enhancing competitiveness.
  • Reduced Risk: Smaller, incremental updates lessen the probability of significant system failures.
  • Enhanced Collaboration: Regular integration fosters communication and collective ownership of code amongst team members.

Essential Tools for CI/CD Pipelines:

  • Source Control Management (SCM): Tools like Git or GitHub streamline collaborative development.
  • Continuous Integration Servers: Jenkins, CircleCI, GitLab, and GitHub Actions automate build processes to catch defects early.
  • Artifact Repositories: Manage dependencies and artifacts efficiently with Nexus or Artifactory.
  • Containerization: Docker and Kubernetes provide a consistent environment from development to production, improving reliability and scalability.

Best Practices for CI/CD Pipelines:

  1. Incorporate Automated Testing: Implement a comprehensive suite of tests (unit, integration, and end-to-end) to maintain code quality.
  2. Monitor Pipeline Performance: Track build times, success rates, and deployment frequencies to optimize the CI/CD process.
  3. Use Infrastructure as Code (IaC): Define infrastructure through code to ensure consistent environments and facilitate easy scaling.
  4. Maintain Documentation: Document your CI/CD pipeline, emphasizing processes to ensure that team members can easily onboard new tools.

Measuring CI/CD Success:

Establish KPIs like build success rates, deployment frequency, lead time for changes, mean time to recover, and change failure rates to allow for consistent evaluation of your CI/CD effectiveness.

FAQs About CI/CD Best Practices:

  • What role do automated tests play?
    Automated tests ensure code quality at every pipeline stage, identifying defects and vulnerabilities swiftly.
  • How should teams implement CI/CD?
    Start with automating the build process, and gradually progress to full deployment automation with a focus on the testing phase.
  • Can CI/CD principles apply to non-cloud environments?
    Absolutely! CI/CD can enhance workflows in both cloud and on-premises setups, yielding quality improvements.

By adopting effective CI/CD strategies, teams can foster an environment of continuous improvement while delivering high-quality software rapidly and efficiently.


Implementation Patterns

Pattern 1: GitHub Actions CI Workflow

A complete .github/workflows/ci.yml with lint, test (matrix), build, and deploy stages:

name: CI Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  NODE_VERSION: "20"

jobs:
  lint:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"
      - run: npm ci
      - run: npm run lint
      - run: npm audit --audit-level=high

  test:
    runs-on: ubuntu-22.04
    needs: lint
    strategy:
      matrix:
        node-version: [18, 20]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
          cache: "npm"
      - run: npm ci
      - run: npm test
        env:
          CI: "true"
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: test-results-${{ matrix.node-version }}
          path: junit.xml

  build:
    runs-on: ubuntu-22.04
    needs: test
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"
      - run: npm ci
      - run: npm run build
      - uses: actions/upload-artifact@v4
        with:
          name: build-output
          path: dist/

  deploy:
    runs-on: ubuntu-22.04
    needs: build
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: build-output
          path: dist/
      - run: echo "Deploying to production..."

Pattern 2: GitLab CI Pipeline

A complete .gitlab-ci.yml with parallel test matrix, caching, and environment-scoped deploy:

stages:
  - lint
  - test
  - build
  - deploy

variables:
  NODE_VERSION: "20"

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/

lint:
  stage: lint
  image: node:${NODE_VERSION}
  script:
    - npm ci
    - npm run lint
    - npm audit --audit-level=high

test:
  stage: test
  image: node:${CI_NODE_VERSION}
  parallel:
    matrix:
      - CI_NODE_VERSION: ["18", "20"]
  script:
    - npm ci
    - npm run test:ci
  artifacts:
    when: always
    reports:
      junit: junit.xml

build:
  stage: build
  image: node:${NODE_VERSION}
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/

deploy:
  stage: deploy
  image: alpine:latest
  script:
    - apk add --no-cache curl
    - curl -X POST "$DEPLOY_WEBHOOK"
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: always
    - when: never
  environment:
    name: production
    url: https://app.example.com

Constraints

MUST DO

  • Define clear input/output contracts for every step in the orchestration flow with explicit validation
  • Implement structured logging at each stage capturing context, inputs, outputs, timing, and errors
  • Build in fallback paths: if the primary strategy fails, degrade gracefully to a simpler approach
  • Validate all preconditions before starting — do not proceed if required resources or permissions are missing

MUST NOT DO

  • Do not create deep nesting of orchestration steps (>5 levels) — flatten workflows where possible
  • Avoid silent failure modes: every step must either succeed, fail explicitly, or escalate to a higher handler
  • Never use shared mutable state between parallel workflow branches — communicate via immutable messages only
  • Do not hardcode execution order when the dependency graph naturally determines it; derive order from explicit dependencies

Live References

Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content.

저장한 Skills