ChatGPT
GitHub Actions ile CI/CD Pipeline Kurulumu
Projenizin teknolojisini ve dağıtım hedefini verin; test, lint, derleme ve dağıtım adımları önbellekli, gizli bilgileri güvenli, dal stratejisine uygun bir GitHub Actions iş akışı dosyası alın.
Prompt
Sen hızlı ve güvenilir dağıtım hatları kuran bir DevOps mühendisisin.
Proje, dil ve test araçları: [PROJE]
Dal stratejisi (main, develop, PR akışı): [DAL_STRATEJISI]
Dağıtım hedefi ve yöntemi: [DAGITIM]
Özel gereksinimler (veritabanı testi, onay adımı, bildirim): [GEREKSINIMLER]
Başlamadan önce: Eksik bir bilgi varsa en fazla 3 kısa soru sor ve yanıtımı bekle.
Çıktı:
1. Akış şeması: Hangi olayda (PR, push, etiket) hangi işler çalışır; kısa bir liste.
2. İş akışı YAML dosyası:
- Lint, test ve derleme işleri; bağımsız işler paralel.
- Bağımlılık önbelleği.
- Test için gerekiyorsa servis konteyneri (ör. veritabanı).
- Yalnızca ana dala birleştirmede çalışan dağıtım işi; canlı ortam için manuel onay (environment protection).
- Aynı dalda eş zamanlı çalışmaları iptal eden concurrency ayarı.
- Gizli bilgiler yalnızca secrets üzerinden; en az yetki ilkesine uygun permissions bloğu.
3. Gerekli secrets listesi ve nereden alınacakları.
4. Geri alma (rollback) yöntemi.
5. Pipeline süresini kısaltmak için 3 öneri.
Kurallar: Üçüncü taraf eylemleri belirli bir sürüme sabitle. YAML'ı yorum satırlarıyla açıkla.
PROJE
DAL_STRATEJISI
DAGITIM
GEREKSINIMLER
144 kez kopyalandı
Örnek çıktı
1. Akış
- PR → develop: lint + phpstan + phpunit (paralel)
- push → develop: testler + staging dağıtımı
- push → main: testler + canlı ortam onayı + canlı dağıtım + Slack bildirimi
2. YAML (kısaltılmış)
name: ci-cd
on:
pull_request:
branches: [develop]
push:
branches: [develop, main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-24.04
services:
mysql:
image: mysql:8.0
...
3. Secrets: STAGING_SSH_KEY, PROD_SSH_KEY, PROD_HOST, SLACK_WEBHOOK_URL
4. Rollback: Her dağıtım releases/zaman-damgası klasörüne yapılır ve "current" sembolik bağlantısı değiştirilir; geri almak için bağlantı önceki klasöre çevrilir.
- PR → develop: lint + phpstan + phpunit (paralel)
- push → develop: testler + staging dağıtımı
- push → main: testler + canlı ortam onayı + canlı dağıtım + Slack bildirimi
2. YAML (kısaltılmış)
name: ci-cd
on:
pull_request:
branches: [develop]
push:
branches: [develop, main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-24.04
services:
mysql:
image: mysql:8.0
...
3. Secrets: STAGING_SSH_KEY, PROD_SSH_KEY, PROD_HOST, SLACK_WEBHOOK_URL
4. Rollback: Her dağıtım releases/zaman-damgası klasörüne yapılır ve "current" sembolik bağlantısı değiştirilir; geri almak için bağlantı önceki klasöre çevrilir.
İleri SeviyeKurumsal
Yorumlar (0)
Yorum yapmak için giriş yapın veya kayıt olun.
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap