{"id":45963308,"url":"https://github.com/neurodivergent-dev/simple_ci_sample","last_synced_at":"2026-04-29T23:04:43.983Z","repository":{"id":269834881,"uuid":"908604118","full_name":"neurodivergent-dev/simple_ci_sample","owner":"neurodivergent-dev","description":"A beginner-friendly CI/CD example showcasing automated testing and deployment using GitHub Actions, Jest, and Docker containerization","archived":false,"fork":false,"pushed_at":"2025-02-10T17:30:23.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-28T15:55:10.889Z","etag":null,"topics":["automation","ci-cd","continuous-deployment","continuous-integration","devops","docker","github-actions","jest-testing","nodejs","testing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neurodivergent-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-26T13:34:52.000Z","updated_at":"2025-02-10T17:30:26.000Z","dependencies_parsed_at":"2025-02-10T18:35:33.877Z","dependency_job_id":null,"html_url":"https://github.com/neurodivergent-dev/simple_ci_sample","commit_stats":null,"previous_names":["melihcanndemir/simple_ci_sample","melihdemirdev/simple_ci_sample","neurodivergent-dev/simple_ci_sample"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neurodivergent-dev/simple_ci_sample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodivergent-dev%2Fsimple_ci_sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodivergent-dev%2Fsimple_ci_sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodivergent-dev%2Fsimple_ci_sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodivergent-dev%2Fsimple_ci_sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neurodivergent-dev","download_url":"https://codeload.github.com/neurodivergent-dev/simple_ci_sample/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurodivergent-dev%2Fsimple_ci_sample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32447312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"ssl_error","status_checked_at":"2026-04-29T22:10:49.234Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","ci-cd","continuous-deployment","continuous-integration","devops","docker","github-actions","jest-testing","nodejs","testing"],"created_at":"2026-02-28T14:00:15.552Z","updated_at":"2026-04-29T23:04:43.711Z","avatar_url":"https://github.com/neurodivergent-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 GitHub Actions ve CI/CD Projesi\n\nBu 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.\n\n## 📑 İçindekiler\n\n1. [Proje Hakkında](#-proje-hakkında)\n2. [GitHub Actions Temelleri](#-github-actions-temelleri)\n3. [Proje Yapısı](#-proje-yapısı)\n4. [Kurulum ve Kullanım](#-kurulum-ve-kullanım)\n5. [CI/CD Pipeline Detayları](#-cicd-pipeline-detayları)\n6. [Test ve Geliştirme](#-test-ve-geliştirme)\n7. [Best Practices](#-best-practices)\n8. [Troubleshooting](#-troubleshooting)\n\n## 🎯 Proje Hakkında\n\nBu proje şunları içerir:\n- ✨ Basit bir Node.js web uygulaması (Çalışan demo: http://localhost:3000)\n- 🧪 Jest ile yazılmış test senaryoları\n- 🔄 GitHub Actions ile CI/CD pipeline\n- 🐳 Docker entegrasyonu\n- 🌐 \"Hello, World!\" endpoint'i\n\n### 📌 Proje Durumu\n- ✅ Uygulama başarıyla çalışıyor\n- ✅ Testler hazır\n- ✅ CI/CD pipeline aktif\n- ✅ Docker entegrasyonu hazır\n\n## 🛠 GitHub Actions Temelleri\n\n### Temel Kavramlar\n\n#### Workflow Yapısı\n```yaml\nname: CI/CD Pipeline\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n```\n\n#### Events (Olaylar)\n```yaml\non:\n  push:             # Push olayında tetiklen\n  pull_request:     # PR olayında tetiklen\n  schedule:         # Zamanlanmış çalışma\n    - cron: '0 0 * * *'  # Her gece yarısı\n```\n\n#### Jobs ve Steps\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v3\n```\n\n## 📂 Proje Yapısı\n\n```plaintext\nproject-root/\n├── .github/\n│   └── workflows/\n│       └── main.yml      # 👈 CI/CD konfigürasyonu\n├── src/\n│   └── index.js          # 👈 Ana uygulama\n├── test/\n│   └── index.test.js     # 👈 Test dosyaları\n├── package.json          # 👈 Proje bağımlılıkları\n└── README.md            # 👈 Dokümantasyon\n```\n\n## 🚀 Kurulum ve Kullanım\n\n### Ön Gereksinimler\n- Node.js (v16+) 📦\n- npm veya yarn 🧶\n- Git 🔧\n\n### Adım Adım Kurulum\n\n1. **Projeyi Klonlayın:**\n```bash\ngit clone \u003crepo-url\u003e\ncd \u003cproje-dizini\u003e\n```\n\n2. **Bağımlılıkları Yükleyin:**\n```bash\nnpm install\n# veya\nyarn install\n```\n\n3. **Testleri Çalıştırın:**\n```bash\nnpm test\n# veya\nyarn test\n```\n\n4. **Uygulamayı Başlatın:**\n```bash\nnpm start\n# veya\nyarn start\n```\n\n## 🔄 CI/CD Pipeline Detayları\n\n### 1. Build ve Test Aşaması\n```yaml\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v3\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: 16\n\n      - name: Install dependencies\n        run: npm install\n\n      - name: Run tests\n        run: npm test\n```\n\n### 2. Docker Build Aşaması\n```yaml\n  docker-build:\n    needs: build-and-test\n    runs-on: ubuntu-latest\n    steps:\n      - name: Build Docker image\n        run: docker build -t simple-ci-cd-project:latest .\n\n      - name: Test container\n        run: |\n          docker run -d -p 8080:3000 simple-ci-cd-project:latest\n          curl -f http://localhost:8080\n```\n\n## 🧪 Test ve Geliştirme\n\n### Jest Test Örneği\n```javascript\n// test/index.test.js\ndescribe('Uygulama Testleri', () =\u003e {\n  test('Temel matematik işlemi', () =\u003e {\n    expect(2 + 2).toBe(4);\n  });\n});\n```\n\n### Test Komutları\n```bash\n# Tüm testleri çalıştır\nnpm test\n\n# Watch modunda testleri çalıştır\nnpm test -- --watch\n\n# Test coverage raporu\nnpm test -- --coverage\n```\n\n## 💡 Best Practices\n\n### 1. Workflow Optimizasyonu\n- ✅ Cache kullanımı\n- ✅ Paralel job çalıştırma\n- ✅ Conditional steps\n\n```yaml\njobs:\n  build:\n    steps:\n      - uses: actions/cache@v3\n        with:\n          path: ~/.npm\n          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}\n```\n\n### 2. Güvenlik Pratikleri\n- 🔒 Secrets kullanımı\n- 🔒 Environment variables\n- 🔒 Branch protection\n\n### 3. Docker Best Practices\n- 📝 Multi-stage builds\n- 📝 Layer optimizasyonu\n- 📝 Security scanning\n\n## 🔧 Troubleshooting\n\n### Sık Karşılaşılan Hatalar\n\n1. **Build Hataları**\n```bash\n# Node modüllerini temizleyin\nrm -rf node_modules\nnpm install\n\n# Cache'i temizleyin\nnpm cache clean --force\n```\n\n2. **Docker Hataları**\n```bash\n# Docker loglarını kontrol edin\ndocker logs \u003ccontainer-id\u003e\n\n# Docker sistemi temizleyin\ndocker system prune -a\n```\n\n### Debug İpuçları\n- 🔍 GitHub Actions debug logging aktifleştirme\n- 🔍 Workflow'da debug steps ekleme\n- 🔍 Local Docker testing\n\n## 📚 Yararlanılan Kaynaklar\n\n- [GitHub Actions Documentation](https://docs.github.com/en/actions)\n- [Node.js Best Practices](https://github.com/goldbergyoni/nodebestpractices)\n- [Docker Documentation](https://docs.docker.com)\n- [Jest Documentation](https://jestjs.io/docs/getting-started)\n\n## 📝 Lisans\n\nBu proje MIT lisansı altında lisanslanmıştır. Detaylar için [LICENSE](LICENSE) dosyasını inceleyebilirsiniz.\n\n---\n\n## 🤝 Katkıda Bulunma\n\n1. Fork yapın\n2. Feature branch oluşturun (`git checkout -b feature/amazing-feature`)\n3. Commit yapın (`git commit -m 'feat: Add amazing feature'`)\n4. Push yapın (`git push origin feature/amazing-feature`)\n5. Pull Request açın\n\n---\n\nMade with ❤️ by Melih Can Demir","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodivergent-dev%2Fsimple_ci_sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneurodivergent-dev%2Fsimple_ci_sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurodivergent-dev%2Fsimple_ci_sample/lists"}