
Salesforce platformunda uygulama geliştirme süreçlerini yönetmek, özellikle büyük ekipler ve karmaşık projeler söz konusu olduğunda zorlayıcı olabilir. Geleneksel geliştirme yaklaşımları, manuel kontroller ve değişim yönetimi süreçleri zaman alıcı olmanın yanı sıra hata riskini de artırır. DevOps prensiplerinin Salesforce ekosistemiyle buluşması, bu zorlukların üstesinden gelmenin en etkili yollarından biridir.
Github Actions, Salesforce DevOps süreçlerinizi otomatikleştirmek için güçlü bir araç sunar. Bu yazıda, Salesforce geliştirme ekiplerinin Github Actions kullanarak nasıl daha verimli, güvenilir ve tutarlı bir geliştirme süreci oluşturabileceklerini inceleyeceğiz. Kod kalitesini artıran, deployment süreçlerini hızlandıran ve ekip işbirliğini geliştiren Github Actions entegrasyonları hakkında pratik bilgiler sunacağız.
Salesforce DevOps’un Temelleri
DevOps, yazılım geliştirme (Development) ve operasyon (Operations) süreçlerinin birleştirilmesini ifade eden bir kültür ve uygulama setidir. Salesforce ekosisteminde DevOps, geleneksel “change set” tabanlı yaklaşımdan sürüm kontrolü, otomatik testler ve sürekli entegrasyon/sürekli dağıtım (CI/CD) odaklı modern bir yaklaşıma geçiş anlamına gelir.
Geleneksel Salesforce geliştirme süreçlerinde, geliştiriciler doğrudan bir sandbox ortamında çalışır, değişikliklerini manuel olarak test eder ve sonra change set’ler veya benzer araçlarla bu değişiklikleri prodüksiyon ortamına aktarırlar. Bu yaklaşım, birkaç sorun doğurur:
- Paralel çalışma zorluğu: Birden fazla geliştirici aynı komponentler üzerinde çalıştığında çakışmalar yaşanabilir
- Sürüm kontrolü eksikliği: Değişikliklerin geçmişini takip etmek zorlaşır
- Manuel testler: Test süreçleri tutarlı değildir ve insan hatası riski yüksektir
- Yavaş deployment: Değişiklikleri üretim ortamına almak zaman alır
Salesforce DevOps ise bu sorunları şu temel prensipler etrafında çözer:
- Sürüm kontrolü: Tüm metadata ve kod değişiklikleri Git gibi bir sürüm kontrol sisteminde saklanır
- Otomasyon: Test, build ve deployment süreçleri otomatikleştirilir
- Sürekli entegrasyon: Değişiklikler sürekli olarak test edilir ve ana dala entegre edilir
- Sürekli dağıtım: Doğrulanan değişiklikler otomatik olarak hedef ortamlara dağıtılır
Bu prensiplerin uygulanmasında otomasyon kritik bir rol oynar. Tam da bu noktada Github Actions devreye girer ve Salesforce DevOps süreçlerinizi otomatikleştirmenin güçlü bir yolunu sunar.
Github Actions ile Salesforce CI/CD Pipeline Oluşturma
Github Actions, Github repository’lerinizde yazılım geliştirme workflow’larını otomatikleştirmenizi sağlayan bir CI/CD platformudur. Salesforce uygulamaları için özellikle kullanışlıdır çünkü Salesforce DX CLI ile sorunsuz entegre olur ve birçok hazır bileşen sunar.
Temel Workflow Yapısı
Github Actions workflow’ları, repository’nizin .github/workflows dizininde yer alan YAML dosyalarında tanımlanır. Temel bir Salesforce CI/CD workflow’u şu bileşenleri içerir:
name: Salesforce CI/CD
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
validate-and-test:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v3
– name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ’16’
– name: Install SFDX CLI
run: npm install -g sfdx-cli
– name: Authorize Dev Hub
run: |
echo ${{ secrets.SFDX_AUTH_URL }} > ./SFDX_AUTH_URL.txt
sfdx auth:sfdxurl:store -f ./SFDX_AUTH_URL.txt -a DevHub
– name: Create Scratch Org
run: sfdx force:org:create -f config/project-scratch-def.json -a scratch-org -s
– name: Deploy to Scratch Org
run: sfdx force:source:push -u scratch-org
– name: Run Apex Tests
run: sfdx force:apex:test:run -u scratch-org –codecoverage –resultformat json
Bu basit workflow, kod değişiklikleri yapıldığında veya Pull Request açıldığında otomatik olarak çalışır. Kodunuzu doğrular, bir scratch org oluşturur, değişiklikleri bu ortama deploy eder ve Apex testlerini çalıştırır.
SFDX CLI Entegrasyonu
Github Actions’ın Salesforce DevOps süreçleriyle entegrasyonunda en önemli unsur, Salesforce DX Command Line Interface (SFDX CLI) kullanımıdır. SFDX CLI, Salesforce ortamları üzerinde programatik işlemler yapmanızı sağlayan güçlü bir araçtır.
Github Actions workflow’larında, SFDX CLI şu görevleri otomatikleştirmek için kullanılabilir:
- Ortam Yetkilendirme: JWT veya SFDX Auth URL kullanarak DevHub veya sandbox ortamlarına bağlanma
- Org Oluşturma: Test için scratch org’lar oluşturma
- Kod Dağıtımı: Metadata’yı hedef ortamlara deploy etme
- Veri İşlemleri: Test verisi yükleme veya çıkarma
- Test Çalıştırma: Apex testlerini çalıştırma ve sonuçları analiz etme
- Statik Analiz: PMD veya ESLint gibi araçlarla kod kalitesi kontrolü
Kapsamlı Bir CI/CD Pipeline Örneği
Daha gelişmiş bir Salesforce CI/CD pipeline’ı, şu aşamaları içerebilir:
- Kod Doğrulama: Syntax hataları ve kod standartlarını kontrol etme
- Statik Kod Analizi: Kod kalitesini ve güvenlik açıklarını analiz etme
- Birim Testleri: Apex testlerini çalıştırma ve kod kapsamını kontrol etme
- Paket Oluşturma: Dağıtım için paket sürümü oluşturma
- İntegrasyon Testleri: Entegrasyon ortamında end-to-end testler
- UAT/Staging Deployment: Kullanıcı kabul testi için staging ortamına deploy
- Prodüksiyon Deployment: Onaylanan değişiklikleri prodüksiyona deploy etme
Github Actions, bu aşamaların tamamını otomatikleştirebilir ve workflow’larınızı branch’lere, ortamlara veya özel koşullara göre yapılandırmanıza olanak tanır.
Salesforce DevOps Otomasyonunda Best Practice’ler
Salesforce DevOps süreçlerinizi Github Actions ile otomatikleştirirken, verimlilik ve güvenliği artırmak için bazı best practice’leri izlemeniz önemlidir.
Kod Doğrulama ve Test Otomasyonu
Kod kalitesini sağlamak için her commit ve pull request için otomatik doğrulama süreçleri oluşturun:
- Apex PMD ile statik kod analizi yaparak potansiyel sorunları erken tespit edin
- ApexDox ile otomatik dokümantasyon oluşturun
- Minimum test kapsamı eşikleri belirleyin (genellikle %75-85)
- Eskimiş API kullanımlarını otomatik olarak tespit edin
– name: Run PMD Analysis
run: |
wget https://github.com/pmd/pmd/releases/download/pmd_releases%2F6.55.0/pmd-bin-6.55.0.zip
unzip pmd-bin-6.55.0.zip
./pmd-bin-6.55.0/bin/run.sh pmd -d force-app/ -R rulesets/apex/quickstart.xml -f text
Branch Yönetimi ve Deployment Stratejileri
Etkili bir git-flow stratejisi uygulayarak deployment süreçlerinizi yapılandırın:
- Feature Branches: Her yeni özellik için ayrı branch’ler
- Develop Branch: Tüm feature’ların birleştirildiği entegrasyon branch’i
- Release Branches: Sürüm bazlı deployment’lar için
- Hotfix Branches: Acil düzeltmeler için
Github Actions workflow’larınızı bu branch stratejinize göre yapılandırın:
on:
push:
branches: [ develop, release/*, hotfix/* ]
pull_request:
branches: [ develop, main ]
Metadata Yönetimi ve Konflikt Çözümü
Salesforce metadata yönetimi, DevOps süreçlerindeki en zorlu alanlardan biridir. Şu best practice’leri izleyin:
- Package.xml bazlı deployment yerine source format kullanın
- Destructive Changes (silinecek öğeler) için ayrı bir süreç tanımlayın
- Metadata API yerine mümkün olduğunca Source API kullanın
- Conflict Detection için pre-deployment check’ler ekleyin
- Repo’yu parçalara ayırarak (monorepo vs multirepo) büyük projeleri yönetin
Gerçek Dünya Senaryoları ve Çözümleri
Büyük Salesforce Organizasyonları için Çözümler
Kurumsal ölçekte Salesforce uygulamaları geliştirenler için özel zorluklar vardır:
- Multi-Org Stratejisi: Birden fazla Salesforce org’u yönetirken, tekrarlanan metadata için paylaşılabilir paketler oluşturun ve bunları merkezi bir repository’den yönetin.
- Koordineli Releases: Birbirine bağımlı komponentler için release koordinasyonu gerekir. Github Actions’da koşullu workflow’lar oluşturarak bağımlılıkları yönetin:
jobs:
identify-changes:
runs-on: ubuntu-latest
outputs:
core-changed: ${{ steps.filter.outputs.core }}
ui-changed: ${{ steps.filter.outputs.ui }}
steps:
– uses: actions/checkout@v3
– uses: dorny/paths-filter@v2
id: filter
with:
filters: |
core:
– ‘force-app/core/**’
ui:
– ‘force-app/ui/**’
deploy-core:
needs: identify-changes
if: ${{ needs.identify-changes.outputs.core-changed == ‘true’ }}
runs-on: ubuntu-latest
steps:
# Core deployment steps
Yaygın Problemler ve Çözüm Önerileri
- Süreli Github Actions Görevleri: Salesforce deployment’ları büyük org’larda uzun sürebilir ve Github Actions’ın 6 saatlik zaman sınırına takılabilir. Bu durumda deployment işlemlerini parçalara ayırın:
– name: Deploy Core Components
run: sfdx force:source:deploy -p force-app/core- name: Deploy UI Components
run: sfdx force:source:deploy -p force-app/ui - Güvenlik Kimlik Bilgileri Yönetimi: Github Secrets kullanarak hassas bilgileri güvende tutun ve JWT tabanlı kimlik doğrulama tercih edin:– name: JWT Auth to Salesforce
run: |
echo “${{ secrets.SF_PRIVATE_KEY }}” > server.key
sfdx auth:jwt:grant –clientid ${{ secrets.SF_CONSUMER_KEY }} –jwtkeyfile server.key –username ${{ secrets.SF_USERNAME }} –instanceurl ${{ secrets.SF_LOGIN_URL }} - Test Coverage Problems: Düşük test kapsamı sorunları için otomatik analiz ekleyin:
– name: Check Test Coverage
run: |
COVERAGE=$(sfdx force:apex:test:run -c -r json | jq ‘.result.coverage.coverage’)
if (( $(echo “$COVERAGE < 75” | bc -l) )); then
echo “Test coverage is below 75%”
exit 1
fi
Vaka Çalışması: Başarılı Salesforce DevOps Dönüşümü
Finansal hizmetler sektöründe faaliyet gösteren bir şirket, manual deployment’lardan kaynaklanan sorunlarla boğuşuyordu:
- Deployment’lar ortalama 4-5 saat sürüyordu
- Ayda 2-3 kez prodüksiyon hataları yaşanıyordu
- Geliştiricilerin %40’ı deployment süreçlerine dahil oluyordu
Github Actions tabanlı Salesforce DevOps otomasyonu uyguladıktan sonra:
- Deployment süresi 20 dakikaya düştü
- Prodüksiyon hataları %90 azaldı
- Geliştiricilerin sadece %5’i deployment süreçlerine dahil oluyor
- Release frekansı haftada bire yükseldi
Bu dönüşümün temelinde, tam otomatik test, statik kod analizi ve çok aşamalı deployment pipeline gibi Github Actions workflow’ları vardı.
DevOps Otomasyonuyla Geleceğe Adım Atın
Salesforce DevOps otomasyonu, sadece deployment süreçlerini hızlandırmakla kalmaz, aynı zamanda kod kalitesini artırır, riski azaltır ve geliştirme ekiplerinin daha yenilikçi projeler üzerine odaklanmasını sağlar. Github Actions ile bu süreçleri otomatikleştirmek, modern Salesforce geliştirme ekipleri için artık bir tercih değil, rekabetçi kalabilmek için bir zorunluluktur.
Önümüzdeki dönemde, Salesforce DevOps trendleri şu yönlerde ilerleyecek:
- Low-Code DevOps: Geliştiriciler dışındaki ekip üyelerinin de DevOps süreçlerine katılımı
- DevSecOps: Güvenlik kontrollerinin CI/CD pipeline’larına daha derin entegrasyonu
- AI Destekli Otomasyonlar: Deployment risklerini tahmin eden ve optimize eden yapay zeka uygulamaları
- Cross-Cloud DevOps: Salesforce dışındaki sistemlerle entegre DevOps süreçleri
Organizasyonunuzun DevOps yolculuğunda bir sonraki adımı atmak için, başlangıç olarak basit Github Actions workflow’ları oluşturun ve zamanla bunları genişleterek tam kapsamlı bir CI/CD pipeline’a dönüştürün. Küçük başlayın, ölçün ve büyütün – başarılı DevOps dönüşümlerinin ortak özelliği budur.