← Blog'a Dön
DEVOPS

What Is CI/CD? A Guide to Continuous Integration and Delivery

F. Çağrı Bilgehan31 Ocak 202610 dk okuma
ci/cddevopsgithub actionsautomation

What Is CI/CD? A Guide to Continuous Integration and Delivery

The era of "upload code to the server via FTP" is over. In modern software development, CI/CD ensures code reaches production safely and automatically.

Core Concepts

Continuous Integration (CI)

Developers frequently merge code into the main branch (multiple times daily), with automated tests running on every merge:

Developer Push → Build → Lint → Unit Test → Integration Test
                                              ↓
                                    ✅ Merge / ❌ Reject

Continuous Delivery (CD)

Code that passes CI is kept in a production-ready state at all times. Deploy to production with a single button click.

Continuous Deployment

Every change that passes tests is automatically deployed to production. No human intervention.

CI → CD (delivery) → Manual approval → Deploy
CI → CD (deployment) → Auto Deploy  ← This is the difference!

Why CI/CD?

| Metric | Before CI/CD | After CI/CD | |--------|-------------|-------------| | Deploy frequency | Monthly | Multiple per day | | Bug detection time | Days | Minutes | | Deploy success rate | 60-70% | 95%+ | | Rollback time | Hours | Seconds | | Manual testing effort | High | Minimal |

Pipeline Design

Stages of an ideal pipeline:

1. Source     → Detect code changes
2. Build      → Compile / create container image
3. Test       → Unit + Integration + E2E tests
4. Security   → SAST/DAST scanning
5. Staging    → Deploy to test environment
6. Approval   → Manual approval (optional)
7. Production → Deploy to production
8. Monitor    → Smoke test + monitoring

GitHub Actions Example

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint
      - run: npm test

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: google-github-actions/deploy-cloudrun@v2
        with:
          service: myapp
          region: europe-west1

CI/CD Tools Compared

| Tool | Type | Advantage | Disadvantage | |------|------|-----------|-------------| | GitHub Actions | Cloud | GitHub integration, free tier | GitHub dependency | | GitLab CI | Cloud/Self-hosted | Built-in, comprehensive | Complex config | | Jenkins | Self-hosted | Flexible, plugin ecosystem | Maintenance overhead | | CircleCI | Cloud | Fast, simple | Cost | | Azure DevOps | Cloud | Enterprise, comprehensive | Microsoft ecosystem |

Best Practices

1. Automate Everything

Lint, test, build, deploy — no manual steps.

2. Fast Feedback

Pipeline should not exceed 10 minutes. Use parallel execution and caching.

3. Trunk-Based Development

Avoid long-lived branches. Make small, frequent merges.

4. Feature Flags

Put unfinished features behind flags. Deploy ≠ Release.

5. Rollback Strategy

Always have a mechanism to revert to the previous version.

Conclusion

CI/CD is non-negotiable in modern software development. It reduces risk, increases deployment speed, and multiplies team efficiency. It requires investment upfront but pays off from the first week.

Learn CI/CD pipeline design and DevOps practices with interactive missions on LabLudus.

İlgili Yazılar

Infrastructure as Code (IaC) Nedir? Terraform ve Altyapı Otomasyonu

Infrastructure as Code nedir? Terraform, Pulumi, CloudFormation ile altyapı otomasyonu, versiyon kontrolü ve tekrarlanabilir deployment rehberi.

What Is Infrastructure as Code? Terraform & Automation Guide

IaC explained: Terraform, Pulumi, CloudFormation for infrastructure automation, version control, and repeatable deployments.