GitHub Actions ile Web Projelerinizi Otomatik Dağıtın: WordPress, Laravel, Node.js İçin Hazır CI/CD Şablonları

GitHub Actions ile Web Projelerinizi Otomatik Dağıtın: WordPress, Laravel, Node.js İçin Hazır CI/CD Şablonları

Web geliştirme dünyasında hız ve verimlilik her zaman ön planda olmuştur. Projelerinizi manuel olarak deploy etmek zaman alıcı ve hataya açık bir süreçtir. İşte tam bu noktada GitHub Actions ve CI/CD (Sürekli Entegrasyon / Sürekli Teslimat) devreye giriyor. GitHub Actions, kodunuzu yazdığınız yerde, doğrudan GitHub’dan yönetebileceğiniz güçlü bir otomasyon platformudur. Bu yazımızda, popüler web çatısı olan WordPress, Laravel ve Node.js projeleriniz için GitHub Actions kullanarak nasıl hazır CI/CD şablonları oluşturabileceğinizi detaylıca inceleyeceğiz.

Neden CI/CD ve GitHub Actions Kullanmalısınız? 🤔

CI/CD, yazılım geliştirme süreçlerini otomatize ederek projelerin daha hızlı, daha güvenilir ve daha sık güncellenmesini sağlar. GitHub Actions, bu süreci GitHub ekosistemiyle kusursuz bir şekilde entegre eder. İşte başlıca faydaları:

  • Hız ve Verimlilik: Kod değişiklikleri otomatik olarak test edilir ve deploy edilir, bu da geliştirme döngüsünü kısaltır.
  • Hata Azaltma: Manuel işlemlerin azalması, insan hatası riskini önemli ölçüde düşürür.
  • Güvenilirlik: Otomatik testler sayesinde her deploy edilen sürümün daha stabil olması sağlanır.
  • Kolay Yönetim: Tüm CI/CD iş akışları tek bir yerde, yani GitHub reposunda yönetilir.
  • Esneklik: Farklı diller, çatılar ve altyapılar için özel iş akışları oluşturulabilir.

WordPress Projeleri İçin Otomatik Deploy 🚀

WordPress, popülerliği nedeniyle sık sık güncellemeler ve eklenti/tema entegrasyonları gerektirir. GitHub Actions ile WordPress projeleriniz için otomatik bir deploy süreci kurmak, bu süreci çok daha kolaylaştırır. Temel bir GitHub Actions iş akışı şunları içerebilir:

  • Kod Yükleme: Yeni bir kod değişikliği ana dala (genellikle `main` veya `master`) push edildiğinde tetiklenir.
  • Testler: PHPUnit gibi araçlarla birim testleri çalıştırılır.
  • Paketleme: Gerekirse, tema veya eklentiler zip dosyası olarak paketlenir.
  • Deploy: Geliştirme veya üretim sunucusuna (SSH, FTP veya özel scriptler aracılığıyla) otomatik olarak deploy edilir.

Örnek GitHub Actions İş Akışı (WordPress Temel):

Aşağıdaki örnek, basit bir WordPress teması veya eklentisi için deploy sürecini göstermektedir. Bu, FTP veya SCP tabanlı bir deploy örneğidir. Daha gelişmiş senaryolar için farklı stratejiler (örn: Docker, sunucu tarafı scriptleri) kullanılabilir.


name: WordPress Otomatik Deploy on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' # Projenizin gerektirdiği PHP sürümünü belirtin - name: Install WordPress dependencies (if any)

Gerekirse composer install gibi komutları buraya ekleyebilirsiniz

run: echo “Composer bağımlılıkları kuruluyor…” – name: Deploy to Server via SFTP uses: sebastianpopp/ftp-action@v1 with: host: ${{ secrets.FTP_HOST }} user: ${{ secrets.FTP_USER }} password: ${{ secrets.FTP_PASSWORD }} targetDir: ‘/public_html/wp-content/themes/your-theme-name’ # Hedef dizini güncelleyin sourceDir: ‘.’ # Projenizin kök dizini – name: Notify Slack on Success if: success() uses: rtCamp/action-slack-notify@v2 env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} SLACK_COLOR: ‘good’ SLACK_MESSAGE: ‘WordPress projesi başarıyla deploy edildi!’

Dikkat Edilmesi Gerekenler:

  • `secrets.FTP_HOST`, `secrets.FTP_USER`, `secrets.FTP_PASSWORD` ve `SLACK_WEBHOOK` gibi gizli bilgiler GitHub repository’nizin “Settings” -> “Secrets” bölümünde tanımlanmalıdır.
  • `targetDir` yolunu kendi sunucunuzdaki ilgili tema veya eklenti dizini ile değiştirin.
  • Bu örnek, basit bir SFTP deploy’u içindir. Daha güvenli ve ölçeklenebilir çözümler için SSH anahtar tabanlı deploy, Docker veya CI/CD araçları (örn: Deployer, Capistrano) entegrasyonu düşünülebilir.

Laravel Projeleri İçin CI/CD Boru Hattı 🛣️

Laravel, geliştiricilere modern PHP uygulamaları oluşturma konusunda güçlü bir altyapı sunar. CI/CD süreçleri, Laravel projelerinin test edilmesini, derlenmesini ve dağıtılmasını otomatikleştirmek için mükemmeldir.

  • Kod Kontrolü: Git’ten kod çekilir.
  • Bağımlılık Kurulumu: Composer aracılığıyla proje bağımlılıkları yüklenir.
  • Ortam Ayarları: `.env` dosyası oluşturulur veya güncellenir.
  • Veritabanı Migrasyonları: `php artisan migrate` komutu çalıştırılır.
  • Testler: PHPUnit veya Pest ile otomatik testler çalıştırılır.
  • Derleme (Assetler): npm/yarn ile frontend varlıkları derlenir.
  • Deploy: Sunucuya (VPS, bulut, vb.) SCP, SSH, Docker veya özel scriptler ile deploy edilir.

Örnek GitHub Actions İş Akışı (Laravel Temel):

name: Laravel CI/CD
on:
  push:
    branches:
      - main
jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v3
    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.1'
        extensions: mbstring, xml, curl, gd, zip
        coverage: xdebug # Test kapsamı analizi için
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '16'
    - name: Install Composer Dependencies
      run: composer install --prefer-dist --no-progress --no-suggest
    - name: Install NPM Dependencies
      run: npm install
    - name: Copy .env.example to .env
      run: cp .env.example .env
    - name: Generate App Key
      run: php artisan key:generate
    - name: Run Database Migrations
      run: php artisan migrate --force # Üretim ortamında dikkatli kullanın
    - name: Run Tests
      run: php artisan test
    - name: Build Assets
      run: npm run build # Veya 'npm run prod'
  deploy:
    needs: build_and_test # build_and_test işi tamamlandıktan sonra çalışır
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v3
    - name: Deploy to Server (SSH)
      uses: appleboy/deploy-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SSH_PRIVATE_KEY }}
        port: ${{ secrets.SSH_PORT || 22 }}
        script: |
          cd /var/www/your-laravel-app
          git pull origin main
          composer install --no-dev --optimize-autoloader --no-suggest
          npm install --production
          npm run build
          php artisan optimize:clear
          php artisan migrate --force
          echo "Deploy tamamlandı!"
    - name: Notify Slack on Success
      if: success()
      uses: rtCamp/action-slack-notify@v2
      env:
        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
        SLACK_COLOR: 'good'
        SLACK_MESSAGE: 'Laravel projesi başarıyla deploy edildi!'

Dikkat Edilmesi Gerekenler:

  • SSH anahtar tabanlı deploy kullanmak, şifre tabanlı deploy’a göre daha güvenlidir. `SSH_PRIVATE_KEY` gizli anahtarınızın doğru formatta olduğundan emin olun.
  • `SERVER_HOST`, `SERVER_USER`, `SSH_PRIVATE_KEY`, `SSH_PORT` ve `SLACK_WEBHOOK` gibi gizli bilgiler GitHub repository’nizin “Settings” -> “Secrets” bölümünde tanımlanmalıdır.
  • `/var/www/your-laravel-app` yolunu kendi sunucunuzdaki Laravel uygulamanızın kurulu olduğu dizin ile değiştirin.
  • Bu iş akışı, kod çekme, bağımlılıkları kurma, varlıkları derleme ve ardından sunucuya deploy etme adımlarını içerir.

Node.js Uygulamaları İçin Sürekli Teslimat 🚚

Node.js ile geliştirilen uygulamalar (API’ler, frontend uygulamaları, sunucu tarafı renderlama vb.), GitHub Actions ile CI/CD süreçleri sayesinde daha hızlı teslim edilebilir.

  • Kod Kontrolü: Depodan kod çekilir.
  • Node.js Versiyonu: Belirtilen Node.js sürümü ayarlanır.
  • Bağımlılık Kurulumu: `npm install` veya `yarn install` ile bağımlılıklar yüklenir.
  • Testler: Jest, Mocha gibi framework’ler ile birim ve entegrasyon testleri çalıştırılır.
  • Derleme: Frontend projeleri için `npm run build` veya benzeri komutlar kullanılır.
  • Dockerlaştırma (İsteğe Bağlı): Uygulama bir Docker imajı olarak paketlenir.
  • Deploy: Sunucuya (VPS, bulut platformları, PaaS hizmetleri) SCP, SSH, Docker Registry veya özel scriptler ile deploy edilir.

Örnek GitHub Actions İş Akışı (Node.js Temel):

name: Node.js CI/CD
on:
  push:
    branches:
      - main
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: '18' # Projenizin gerektirdiği Node.js sürümünü belirtin
        cache: 'npm' # NPM önbelleğini kullanarak bağımlılıkları hızlandırır
    - name: Install Dependencies
      run: npm ci # Güvenli ve tekrarlanabilir bağımlılık kurulumu için 'ci' kullanılır
    - name: Run Tests
      run: npm test
  deploy:
    needs: build_and_test
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v3
    - name: Build Application (if frontend)
      if: contains(github.ref, 'refs/heads/main') # Sadece main dalında build yap
      uses: actions/setup-node@v3
      with:
        node-version: '18'
        cache: 'npm'
      run: npm run build # frontend projeleri için
    - name: Deploy to Server (via SSH and rsync)
      uses: appleboy/sync-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SSH_PRIVATE_KEY }}
        port: ${{ secrets.SSH_PORT || 22 }}
        source: './dist' # Frontend projeleri için build klasörü, API'ler için '.'
        target: '/var/www/your-node-app' # Hedef sunucu yolu
        exclude: '.git, node_modules' # Hariç tutulacak klasörler
    - name: Restart Application Service
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.SERVER_HOST }}
        username: ${{ secrets.SERVER_USER }}
        key: ${{ secrets.SSH_PRIVATE_KEY }}
        port: ${{ secrets.SSH_PORT || 22 }}
        script: |
          cd /var/www/your-node-app
          npm install --production # Production bağımlılıkları
          npm restart # Veya pm2 restart your-app-name
    - name: Notify Slack on Success
      if: success()
      uses: rtCamp/action-slack-notify@v2
      env:
        SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
        SLACK_COLOR: 'good'
        SLACK_MESSAGE: 'Node.js uygulaması başarıyla deploy edildi!'

Dikkat Edilmesi Gerekenler:

  • `npm ci` komutu, `package-lock.json` veya `yarn.lock` dosyasına dayanarak bağımlılıkları kurar, bu da daha tutarlı build’ler sağlar.
  • Eğer frontend varlıkları derlemeniz gerekiyorsa, `Build Application` adımını eklemeyi unutmayın. Frontend projelerinde genellikle `dist` veya `build` klasörü deploy edilir.
  • `/var/www/your-node-app` ve servis yeniden başlatma komutlarını kendi kurulumunuza göre ayarlayın. Node.js uygulamaları için genellikle `pm2` gibi bir process manager kullanılır.
  • Gizli bilgiler yine GitHub “Secrets” bölümünde saklanmalıdır.

Sonuç: Geleceğe Hazır Olun! 🚀

GitHub Actions ile CI/CD süreçlerini otomatize etmek, geliştirme verimliliğinizi artırmanın ve hataları azaltmanın en etkili yollarından biridir. Bu hazır şablonlar, WordPress, Laravel ve Node.js projeleriniz için hızlı bir başlangıç noktası sunar. Kendi özel ihtiyaçlarınıza göre bu şablonları genişletebilir, daha karmaşık test senaryoları ekleyebilir veya farklı deploy stratejileri uygulayabilirsiniz.

Teknobirader.com olarak, bu tür otomasyon araçlarının geliştiricilerin hayatını ne kadar kolaylaştırdığını biliyoruz. Bu araçlar sayesinde hem daha kaliteli yazılımlar geliştirilebilir hem de tekrarlayan manuel iş yükü ortadan kalkar. Web geliştirme yolculuğunuzda CI/CD prensiplerini benimsemek, sizi bir adım öne taşıyacaktır. Teknoloji dünyasındaki en güncel gelişmeler ve rehberler için takipte kalın!

Siz Ne Düşünüyorsunuz? 🤔

Siz de projelerinizde CI/CD süreçlerini kullanıyor musunuz? GitHub Actions’ın sunduğu imkanlar hakkında ne düşünüyorsunuz? Hangi araçları veya stratejileri tercih ediyorsunuz? Yorumlarda bizimle paylaşın, hep birlikte öğrenelim!

Anahtar Kelimeler:

GitHub Actions, CI/CD, Otomatik Deploy, WordPress CI/CD, Laravel CI/CD, Node.js CI/CD, Sürekli Entegrasyon, Sürekli Teslimat, Otomasyon, Web Geliştirme, Yazılım Dağıtımı, SSH Deploy, SFTP Deploy, Docker

BİR YORUM YAZIN

ZİYARETÇİ YORUMLARI - 0 YORUM

Henüz yorum yapılmamış.

©Copyright 2023 teknobirader.com