Single Beginner 14 Maret 2024 5 min

CI/CD Pipeline Basics

Introduction to Continuous Integration and Continuous Deployment pipelines

CI/CD Pipeline Basics

CI/CD (Continuous Integration/Continuous Deployment) adalah praktik otomatisasi dalam software development.

Continuous Integration (CI)

Praktik merge code changes ke main branch secara otomatis.

Key Concepts

  • Automated Testing: Test jalan otomatis saat push
  • Build Automation: Compile dan build otomatis
  • Code Quality: Linting dan code analysis
  • Merge Conflicts: Deteksi dini konflik

Continuous Deployment (CD)

Otomatis deploy code ke production setelah CI pass.

Key Concepts

  • Automated Deployment: Deploy tanpa manual intervention
  • Rollback: Mudah rollback jika error
  • Environment Management: Manage dev, staging, production
  • Monitoring: Track deployment metrics
  1. GitHub Actions: Integrated dengan GitHub
  2. GitLab CI: Built-in dengan GitLab
  3. Jenkins: Open-source, highly customizable
  4. CircleCI: Cloud-based, easy setup
  5. Travis CI: Popular untuk open-source

Basic Pipeline Example (GitHub Actions)

name: CI/CD Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm install
      - run: npm test
      
  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v3
      - name: Deploy to production
        run: |
          echo "Deploying to production..."

Pipeline Stages

  1. Build: Compile code
  2. Test: Run unit tests, integration tests
  3. Security: Scan vulnerabilities
  4. Deploy: Deploy to target environment
  5. Verify: Smoke tests, health checks

Best Practices

  • Keep builds fast (< 10 minutes)
  • Fail fast (test yang cepat dulu)
  • Parallelize tests
  • Use caching
  • Monitor pipeline metrics