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.
- Proje Hakkında
- GitHub Actions Temelleri
- Proje Yapısı
- Kurulum ve Kullanım
- CI/CD Pipeline Detayları
- Test ve Geliştirme
- Best Practices
- Troubleshooting
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
name: CI/CD Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
on:
push: # Push olayında tetiklen
pull_request: # PR olayında tetiklen
schedule: # Zamanlanmış çalışma
- cron: '0 0 * * *' # Her gece yarısı
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
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
- Node.js (v16+) 📦
- npm veya yarn 🧶
- Git 🔧
- Projeyi Klonlayın:
git clone <repo-url>
cd <proje-dizini>
- Bağımlılıkları Yükleyin:
npm install
# veya
yarn install
- Testleri Çalıştırın:
npm test
# veya
yarn test
- Uygulamayı Başlatın:
npm start
# veya
yarn start
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
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/index.test.js
describe('Uygulama Testleri', () => {
test('Temel matematik işlemi', () => {
expect(2 + 2).toBe(4);
});
});
# Tüm testleri çalıştır
npm test
# Watch modunda testleri çalıştır
npm test -- --watch
# Test coverage raporu
npm test -- --coverage
- ✅ 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') }}
- 🔒 Secrets kullanımı
- 🔒 Environment variables
- 🔒 Branch protection
- 📝 Multi-stage builds
- 📝 Layer optimizasyonu
- 📝 Security scanning
- Build Hataları
# Node modüllerini temizleyin
rm -rf node_modules
npm install
# Cache'i temizleyin
npm cache clean --force
- Docker Hataları
# Docker loglarını kontrol edin
docker logs <container-id>
# Docker sistemi temizleyin
docker system prune -a
- 🔍 GitHub Actions debug logging aktifleştirme
- 🔍 Workflow'da debug steps ekleme
- 🔍 Local Docker testing
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasını inceleyebilirsiniz.
- Fork yapın
- Feature branch oluşturun (
git checkout -b feature/amazing-feature
) - Commit yapın (
git commit -m 'feat: Add amazing feature'
) - Push yapın (
git push origin feature/amazing-feature
) - Pull Request açın
Made with ❤️ by Melih Can Demir