Greatking
Admin
Discord
greatking
- Katılım
- 12 Yıl 9 Ay 27 Gün
- Mesajlar
- 494
- Tepkime puanı
- 416
- Puanları
- 63
- Yaş
- 38
- Cinsiyetiniz
- Bay
- Şube
- Bursa
Node.js veya Discord bot projesi büyüdükçe yalnız kodu paylaşmak yetmez; her değişiklikte testlerin çalışması, bağımlılıkların temiz kurulması ve gerekirse paketin güvenli biçimde yayınlanması gerekir. GitHub Actions bu süreci otomatikleştirerek bot altyapılarında daha düzenli, hatası daha erken yakalanan bir geliştirme akışı kurmayı sağlar.
Küçük botlarda hata genelde elle çalıştırınca fark edilir. Fakat komut sayısı arttıkça, farklı geliştiriciler katkı verdikçe veya paket yayınlanmaya başladıkça manuel kontrol yetersiz kalır.
Aşağıdaki örnek, GitHub Actions üzerinde Node.js kurulumu, npm cache, temiz kurulum ve test adımlarını içerir. Projede test komutu yoksa önce package.json içinde anlamlı bir test veya lint komutu oluşturmak gerekir.
Bot altyapısı sadece özel sunucuda kullanılacaksa yayınlama adımı şart değildir. Ancak komut paketi, yardımcı kütüphane veya ortak bot çekirdeği npm ya da GitHub Packages üzerinden dağıtılacaksa testlerden sonra yayınlama işi ayrı bir workflow olarak kurulabilir.
Bot Projesinde CI/CD Neden Gerekir?
Küçük botlarda hata genelde elle çalıştırınca fark edilir. Fakat komut sayısı arttıkça, farklı geliştiriciler katkı verdikçe veya paket yayınlanmaya başladıkça manuel kontrol yetersiz kalır.
- Pull request açıldığında testlerin otomatik çalışması sağlanır.
- Bağımlılıklar her seferinde temiz ortamda kurulduğu için yerel bilgisayara bağlı hatalar azalır.
- Lint veya format kontrolüyle basit hatalar erken yakalanır.
- Sürüm etiketi geldiğinde paket yayınlama adımı otomatikleştirilebilir.
Temel Node.js Workflow Örneği
Aşağıdaki örnek, GitHub Actions üzerinde Node.js kurulumu, npm cache, temiz kurulum ve test adımlarını içerir. Projede test komutu yoksa önce package.json içinde anlamlı bir test veya lint komutu oluşturmak gerekir.
Kod:
name: Node.js CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Kodu al
uses: actions/checkout@v4
- name: Node.js kur
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Bağımlılıkları temiz kur
run: npm ci
- name: Testleri çalıştır
run: npm test
npm ci ve Cache Mantığı
npm install geliştirme sırasında pratik olabilir, fakat CI ortamında npm ci daha öngörülebilir sonuç verir. Çünkü package-lock.json dosyasındaki kilitli bağımlılık ağacına göre temiz kurulum yapar.- setup-node, istenen Node.js sürümünü kurar.
- cache: npm, npm indirme önbelleğini kullanarak sonraki çalışmaları hızlandırabilir.
- npm ci, CI ortamında tekrarlanabilir kurulum için daha uygundur.
Paket Yayınlama Akışı Ne Zaman Eklenmeli?
Bot altyapısı sadece özel sunucuda kullanılacaksa yayınlama adımı şart değildir. Ancak komut paketi, yardımcı kütüphane veya ortak bot çekirdeği npm ya da GitHub Packages üzerinden dağıtılacaksa testlerden sonra yayınlama işi ayrı bir workflow olarak kurulabilir.
Dikkat
Yayınlama adımlarında npm token, GitHub token veya registry bilgileri doğrudan workflow dosyasına yazılmamalı. Bu bilgiler GitHub Secrets üzerinden saklanmalı ve yalnız gerekli job içinde kullanılmalıdır.
Discord Bot Projeleri İçin Pratik Notlar
- Bot token değerini asla repoya koyma;
secretsveya ortam değişkeni kullan. - Slash command kayıt scriptini test workflow içinde otomatik çalıştırma; yanlış yapılandırmada canlı komutları bozabilir.
- Lint adımını testten önce çalıştırmak basit sözdizimi hatalarını daha hızlı gösterir.
- Birden fazla Node.js sürümü destekleniyorsa matrix strategy ile sürüm testi yapılabilir.