Skip to content

A beginner-friendly CI/CD example showcasing automated testing and deployment using GitHub Actions, Jest, and Docker containerization

License

Notifications You must be signed in to change notification settings

melihcanndemir/simple_ci_sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 GitHub Actions ve CI/CD Projesi

Bu proje, GitHub Actions kullanarak bir Node.js uygulamasında CI/CD süreçlerinin nasıl uygulanacağını göstermek için hazırlanmıştır. Hem başlangıç seviyesi hem de ileri düzey kullanıcılar için kapsamlı bir kaynak sunmaktadır.

📑 İçindekiler

  1. Proje Hakkında
  2. GitHub Actions Temelleri
  3. Proje Yapısı
  4. Kurulum ve Kullanım
  5. CI/CD Pipeline Detayları
  6. Test ve Geliştirme
  7. Best Practices
  8. Troubleshooting

🎯 Proje Hakkında

Bu proje şunları içerir:

  • ✨ Basit bir Node.js web uygulaması
  • 🧪 Jest ile yazılmış test senaryoları
  • 🔄 GitHub Actions ile CI/CD pipeline
  • 🐳 Docker entegrasyonu

🛠 GitHub Actions Temelleri

Temel Kavramlar

Workflow Yapısı

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

Events (Olaylar)

on:
  push:             # Push olayında tetiklen
  pull_request:     # PR olayında tetiklen
  schedule:         # Zamanlanmış çalışma
    - cron: '0 0 * * *'  # Her gece yarısı

Jobs ve Steps

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

📂 Proje Yapısı

project-root/
├── .github/
│   └── workflows/
│       └── main.yml      # 👈 CI/CD konfigürasyonu
├── src/
│   └── index.js          # 👈 Ana uygulama
├── test/
│   └── index.test.js     # 👈 Test dosyaları
├── package.json          # 👈 Proje bağımlılıkları
└── README.md            # 👈 Dokümantasyon

🚀 Kurulum ve Kullanım

Ön Gereksinimler

  • Node.js (v16+) 📦
  • npm veya yarn 🧶
  • Git 🔧

Adım Adım Kurulum

  1. Projeyi Klonlayın:
git clone <repo-url>
cd <proje-dizini>
  1. Bağımlılıkları Yükleyin:
npm install
# veya
yarn install
  1. Testleri Çalıştırın:
npm test
# veya
yarn test
  1. Uygulamayı Başlatın:
npm start
# veya
yarn start

🔄 CI/CD Pipeline Detayları

1. Build ve Test Aşaması

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

2. Docker Build Aşaması

  docker-build:
    needs: build-and-test
    runs-on: ubuntu-latest
    steps:
      - name: Build Docker image
        run: docker build -t simple-ci-cd-project:latest .

      - name: Test container
        run: |
          docker run -d -p 8080:3000 simple-ci-cd-project:latest
          curl -f http://localhost:8080

🧪 Test ve Geliştirme

Jest Test Örneği

// test/index.test.js
describe('Uygulama Testleri', () => {
  test('Temel matematik işlemi', () => {
    expect(2 + 2).toBe(4);
  });
});

Test Komutları

# Tüm testleri çalıştır
npm test

# Watch modunda testleri çalıştır
npm test -- --watch

# Test coverage raporu
npm test -- --coverage

💡 Best Practices

1. Workflow Optimizasyonu

  • ✅ Cache kullanımı
  • ✅ Paralel job çalıştırma
  • ✅ Conditional steps
jobs:
  build:
    steps:
      - uses: actions/cache@v3
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

2. Güvenlik Pratikleri

  • 🔒 Secrets kullanımı
  • 🔒 Environment variables
  • 🔒 Branch protection

3. Docker Best Practices

  • 📝 Multi-stage builds
  • 📝 Layer optimizasyonu
  • 📝 Security scanning

🔧 Troubleshooting

Sık Karşılaşılan Hatalar

  1. Build Hataları
# Node modüllerini temizleyin
rm -rf node_modules
npm install

# Cache'i temizleyin
npm cache clean --force
  1. Docker Hataları
# Docker loglarını kontrol edin
docker logs <container-id>

# Docker sistemi temizleyin
docker system prune -a

Debug İpuçları

  • 🔍 GitHub Actions debug logging aktifleştirme
  • 🔍 Workflow'da debug steps ekleme
  • 🔍 Local Docker testing

📚 Yararlanılan Kaynaklar

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasını inceleyebilirsiniz.


🤝 Katkıda Bulunma

  1. Fork yapın
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Commit yapın (git commit -m 'feat: Add amazing feature')
  4. Push yapın (git push origin feature/amazing-feature)
  5. Pull Request açın

Made with ❤️ by Melih Can Demir

About

A beginner-friendly CI/CD example showcasing automated testing and deployment using GitHub Actions, Jest, and Docker containerization

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published