Yazılım geliştirme süreçlerinde, dağıtım işlemleri sırasında ekibin bilgilendirilmesi, sorunsuz iş birliği ve hata takibi için kritik öneme sahiptir. GitHub Actions ile Slack’i entegre ederek, dağıtım sürecinin başlangıcı, başarılı bir şekilde tamamlanması veya hata durumları için ekibinize otomatik bildirimler gönderebilirsiniz. Bu makalede, bunu nasıl yapabileceğinizi adım adım anlatıyoruz.


Neden Slack Bildirimleri?

Slack bildirimleri şu avantajları sağlar:

  • Gerçek Zamanlı Güncellemeler: Dağıtım durumlarını anında ekibinizle paylaşabilirsiniz.
  • Kolay Takip: Hata durumlarında GitHub Actions loglarına hızlı erişim sağlayabilirsiniz.
  • Görünürlük Artışı: Tüm ekip üyeleri sürecin farkında olur.

GitHub Actions ile Slack Bildirimleri Nasıl Eklenir?

1. Slack Incoming Webhook Oluşturun

  1. Slack API sayfasına giderek yeni bir uygulama oluşturun.
  2. Incoming Webhooks özelliğini etkinleştirin.
  3. Bir webhook URL’si oluşturun ve bildirimlerin gönderileceği kanalı seçin.

2. Webhook URL’sini GitHub Secrets’a Ekleyin

  1. GitHub projenizde Settings > Secrets and variables > Actions bölümüne gidin.
  2. New repository secret butonuna tıklayın.
  3. Secret adını SLACK_WEBHOOK_URL olarak belirleyin ve Slack’ten aldığınız webhook URL’sini ekleyin.

3. GitHub Actions Workflow’unuzu Güncelleyin

Aşağıda, Slack bildirimlerini içeren bir GitHub Actions örneği verilmiştir:

name: Deploy to VPS

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Notify Slack on Workflow Start
      run: |
        curl -X POST -H 'Content-type: application/json' \
        --data "{
          \"text\": \"*FrontrowAI Web*: 🚀 Dağıtım süreci başladı.\",
          \"attachments\": [
            {
              \"text\": \"GitHub Actions loglarını görüntülemek için: <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|Tıklayın>\"
            }
          ]
        }" \
        ${{ secrets.SLACK_WEBHOOK_URL }}

    - name: Checkout code
      uses: actions/checkout@v3

    - name: Add SSH key
      uses: webfactory/ssh-agent@v0.5.3
      with:
        ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

    - name: Deploy to VPS
      run: |
        ssh -o StrictHostKeyChecking=no ${{ secrets.DROPLET_USERNAME }}@${{ secrets.DROPLET_IP }} "bash -s" << 'EOF'
        cd /path/to/project
        git pull origin main
        docker compose down
        docker compose up -d
        EOF

    - name: Notify Slack on Success
      if: success()
      run: |
        curl -X POST -H 'Content-type: application/json' \
        --data "{
          \"text\": \"*FrontrowAI Web*: ✅ Dağıtım başarıyla tamamlandı.\",
          \"attachments\": [
            {
              \"text\": \"GitHub Actions loglarını görüntülemek için: <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|Tıklayın>\"
            }
          ]
        }" \
        ${{ secrets.SLACK_WEBHOOK_URL }}

    - name: Notify Slack on Failure
      if: failure()
      run: |
        curl -X POST -H 'Content-type: application/json' \
        --data "{
          \"text\": \"*FrontrowAI Web*: ❌ Dağıtım başarısız oldu. Lütfen logları kontrol edin.\",
          \"attachments\": [
            {
              \"text\": \"GitHub Actions loglarını görüntülemek için: <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|Tıklayın>\"
            }
          ]
        }" \
        ${{ secrets.SLACK_WEBHOOK_URL }}

Bu Workflow’un Özellikleri

  1. Gerçek Zamanlı Slack Bildirimleri:
    • Başlangıç: 🚀 Dağıtım süreci başladı.
    • Başarı: ✅ Dağıtım başarıyla tamamlandı.
    • Hata: ❌ Dağıtım başarısız oldu.
  2. GitHub Actions Log Linki:
    • Her bildirim, ilgili loglara hızlı erişim için bir bağlantı içerir.

Sonuç

Slack ve GitHub Actions entegrasyonu, dağıtım süreçlerinizi daha görünür ve etkili hale getirir. Ekibinizi anlık olarak bilgilendirebilir, hata durumlarında hızlı aksiyon alabilirsiniz. Bu adımları uygulayarak projelerinizi daha verimli bir şekilde yönetebilirsiniz.