GitHub Bağlayıcısı
Geliştirici etkileşim takibi, sürüm bildirim iş akışları ve topluluk aktivite izleme için GitHub depolarınızı Tajo üzerinden Brevo’ya bağlayın.
Genel Bakış
| Özellik | Değer |
|---|---|
| Platform | GitHub |
| Kategori | Özel |
| Kurulum Karmaşıklığı | Orta |
| Resmi Entegrasyon | Hayır |
| Senkronize Edilen Veri | Olaylar, Kullanıcılar, Depolar |
| API Türü | REST API, GraphQL API |
| Kimlik Doğrulama | GitHub App / Kişisel Erişim Belirteci / OAuth 2.0 |
| Temel URL | https://api.github.com |
| API Sürümü | 2022-11-28 (başlık tabanlı sürümleme) |
Özellikler
- Sorun ve PR takibi - Sorun ve pull request olaylarını Brevo kişi zaman çizelgelerine senkronize edin
- Sürüm bildirimleri - Yeni depo sürümlerinde Brevo kampanyalarını tetikleyin
- Katkıda bulunan senkronizasyonu - GitHub katkıda bulunanlarını topluluk etkileşimi için Brevo kişileriyle eşleştirin
- Yıldız ve fork takibi - Depo popülerlik metriklerini izleyin
- Webhook olay yönlendirme - GitHub olaylarını Brevo otomasyonlarına iletin
- Depo kataloğu - Depo meta verilerini Brevo katalog öğeleri olarak senkronize edin
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Hedef depolara erişimi olan bir GitHub hesabı
- Bir GitHub App veya Kişisel Erişim Belirteci (ince taneli önerilir)
- Webhook yapılandırması için depolara yönetici erişimi
- API erişimi olan bir Brevo hesabı
- Etkin aboneliği olan bir Tajo hesabı
Kimlik Doğrulama
GitHub birden fazla kimlik doğrulama yöntemini destekler. Tajo, kuruluş düzeyinde erişim için GitHub App kullanımını önerir.
Seçenek 1: GitHub App (Önerilen)
- Settings > Developer settings > GitHub Apps bölümüne gidin
- New GitHub App öğesine tıklayın
- Uygulamayı şu izinlerle yapılandırın:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star ForkSeçenek 2: İnce Taneli Kişisel Erişim Belirteci
- Settings > Developer settings > Personal access tokens > Fine-grained tokens bölümüne gidin
- Generate new token öğesine tıklayın
- Hedef depoları seçin
- Şu izinleri verin:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyBelirteç Güvenliği
İnce taneli belirteçlerin son kullanma tarihleri vardır. Son kullanma tarihinden önce belirteç rotasyonu ayarlayın. GitHub App kurulum belirteçleri otomatik olarak yenilenir ve üretim kullanımı için tercih edilir.
Tajo’ya Bağlanma
# GitHub App kullanaraktajo connectors install github \ --app-id $GITHUB_APP_ID \ --private-key-path ./github-app-key.pem \ --installation-id $GITHUB_INSTALLATION_ID
# Kişisel Erişim Belirteci kullanaraktajo connectors install github \ --token $GITHUB_TOKENYapılandırma
Temel Kurulum
connectors: github: enabled: true auth_type: "github_app" # veya "token"
repositories: - owner/repo-1 - owner/repo-2
sync: issues: true pull_requests: true releases: true contributors: true stars: true
lists: contributors: 20 stargazers: 21Alan Eşleştirme
GitHub kullanıcı verilerini Brevo kişi özniteliklerine eşleyin:
field_mapping: # Standart alanlar login: GITHUB_USERNAME email: email name: FIRSTNAME
# Geliştirici metrikleri contributions: GITHUB_CONTRIBUTIONS repositories_count: GITHUB_REPOS followers: GITHUB_FOLLOWERS created_at: GITHUB_JOINED
# Özel öznitelikler company: COMPANY location: LOCATION bio: GITHUB_BIOAPI Uç Noktaları
Tajo, aşağıdaki GitHub REST API uç noktalarıyla entegre olur:
| Uç Nokta | Yöntem | Amaç |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Depo sorunlarını listele |
/repos/{owner}/{repo}/pulls | GET | Pull request’leri listele |
/repos/{owner}/{repo}/releases | GET | Sürümleri listele |
/repos/{owner}/{repo}/contributors | GET | Katkıda bulunanları listele |
/repos/{owner}/{repo}/stargazers | GET | Yıldız verenleri listele |
/repos/{owner}/{repo}/forks | GET | Forkları listele |
/repos/{owner}/{repo}/events | GET | Depo olaylarını listele |
/users/{username} | GET | Kullanıcı profilini al |
/orgs/{org}/members | GET | Kuruluş üyelerini listele |
/repos/{owner}/{repo}/hooks | POST | Webhook oluştur |
Kod Örnekleri
Bağlayıcıyı Başlatma
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('github', { appId: process.env.GITHUB_APP_ID, privateKey: process.env.GITHUB_PRIVATE_KEY, installationId: process.env.GITHUB_INSTALLATION_ID});Katkıda Bulunanları Brevo’ya Senkronize Etme
await tajo.connectors.sync('github', { type: 'full', resources: ['contributors'], repositories: ['owner/repo-1', 'owner/repo-2']});
const status = await tajo.connectors.status('github');console.log(status);// {// connected: true,// lastSync: '2024-03-15T11:00:00Z',// contributorsCount: 245,// issuesTracked: 1890,// releasesTracked: 34// }Webhook Olaylarını İşleme
app.post('/webhooks/github', async (req, res) => { const signature = req.get('X-Hub-Signature-256'); const event = req.get('X-GitHub-Event');
// Webhook imzasını doğrula if (!verifyGitHubSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('github', { event, payload: req.body });
res.status(200).send('OK');});Sürüm Kampanyası Tetikleme
// Yeni sürümleri dinleyip Brevo kampanyasını tetikletajo.connectors.on('github', 'release.published', async (event) => { await tajo.campaigns.trigger('release-announcement', { listId: 21, params: { version: event.release.tag_name, release_notes: event.release.body, download_url: event.release.html_url } });});Hız Sınırları
GitHub, kimlik doğrulama yöntemine göre hız sınırları uygular:
| Kimlik Doğrulama | Birincil Hız Sınırı | Arama API |
|---|---|---|
| Kimlik doğrulamasız | saatte 60 istek | dakikada 10 istek |
| Kişisel Erişim Belirteci | saatte 5.000 istek | dakikada 30 istek |
| GitHub App (kurulum) | saatte 5.000 istek | dakikada 30 istek |
| GitHub App (kullanıcıdan sunucuya) | saatte 5.000 istek | dakikada 30 istek |
Koşullu İstekler
Tajo, API tüketimini azaltmak için koşullu istekler (If-None-Match / If-Modified-Since başlıkları) kullanır. 304 Not Modified yanıtları hız sınırlarına dahil edilmez.
Ek sınırlar:
- İkincil hız sınırları: En fazla 100 eşzamanlı istek. REST API uç noktaları için dakikada en fazla 900 puan.
- GraphQL: Saatte 5.000 puan (sorgu maliyeti karmaşıklığa göre değişir).
Sorun Giderme
Yaygın Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Süresi dolmuş belirteç veya yanlış kimlik bilgileri | Belirteci yeniden oluşturun veya GitHub App’i yeniden yükleyin |
| 403 Forbidden | Yetersiz izinler | Belirteç kapsamlarını veya App izinlerini kontrol edin |
| 404 Not Found | Erişim olmayan özel depo | Belirtece veya App’e depo erişimi verin |
| Hız sınırı aşıldı | Çok fazla API çağrısı | Koşullu istekleri etkinleştirin ve senkronizasyon sıklığını azaltın |
| Webhook’lar alınmıyor | Yanlış URL veya güvenlik duvarı | Webhook URL’sinin herkese açık olarak erişilebilir olduğunu doğrulayın |
Hata Ayıklama Modu
connectors: github: debug: true log_level: verbose log_webhooks: trueBağlantı Testi
tajo connectors test github# ✓ API kimlik doğrulaması başarılı# ✓ Depo erişimi doğrulandı# ✓ Sorun verileri okunabilir# ✓ Webhook teslimatı aktif# ✓ Hız sınırı sağlıklı (4.850/5.000 kalan)En İyi Uygulamalar
- PAT yerine GitHub App kullanın - GitHub App’ler ayrıntılı izinler ve otomatik yenilenen belirteçler sağlar
- Webhook gizli anahtarlarını etkinleştirin - Webhook imzalarını her zaman HMAC-SHA256 ile doğrulayın
- Koşullu istekler kullanın - Hız sınırı kotasını boşa harcamamak için ETag’lerden yararlanın
- Büyük yanıtları sayfalandırın - GitHub sayfa başına maksimum 100 öğe döndürür;
Linkbaşlıklarıyla yineleyin - Düşük aktivite döneminde senkronize edin - Tam senkronizasyonları yoğun geliştirme saatleri dışında planlayın
- Hız sınırı başlıklarını izleyin - Proaktif olarak kısıtlamak için
X-RateLimit-Remainingdeğerini kontrol edin
Güvenlik
- GitHub App Kimlik Doğrulaması - Kısa ömürlü kurulum belirteçleriyle RSA anahtar tabanlı JWT
- Webhook İmzaları - Tüm webhook yüklerinde HMAC-SHA256 imza doğrulama
- İnce Taneli Belirteçler - Belirli depolara ve izinlere kapsamlandırılmış
- Yalnızca HTTPS - Tüm API iletişimi TLS 1.2+ ile şifrelenir
- Şifreli Depolama - Özel anahtarlar ve belirteçler Tajo’da şifreli olarak saklanır
- Belirteç Süresi - İnce taneli belirteçler otomatik olarak süresi dolar; rotasyon uyarıları ayarlayın