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ış

ÖzellikDeğer
PlatformGitHub
KategoriÖzel
Kurulum KarmaşıklığıOrta
Resmi EntegrasyonHayır
Senkronize Edilen VeriOlaylar, Kullanıcılar, Depolar
API TürüREST API, GraphQL API
Kimlik DoğrulamaGitHub App / Kişisel Erişim Belirteci / OAuth 2.0
Temel URLhttps://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:

  1. Hedef depolara erişimi olan bir GitHub hesabı
  2. Bir GitHub App veya Kişisel Erişim Belirteci (ince taneli önerilir)
  3. Webhook yapılandırması için depolara yönetici erişimi
  4. API erişimi olan bir Brevo hesabı
  5. 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)

  1. Settings > Developer settings > GitHub Apps bölümüne gidin
  2. New GitHub App öğesine tıklayın
  3. 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
Fork

Seçenek 2: İnce Taneli Kişisel Erişim Belirteci

  1. Settings > Developer settings > Personal access tokens > Fine-grained tokens bölümüne gidin
  2. Generate new token öğesine tıklayın
  3. Hedef depoları seçin
  4. Şu izinleri verin:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Belirteç 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

Terminal window
# GitHub App kullanarak
tajo 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 kullanarak
tajo connectors install github \
--token $GITHUB_TOKEN

Yapı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: 21

Alan 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_BIO

API Uç Noktaları

Tajo, aşağıdaki GitHub REST API uç noktalarıyla entegre olur:

Uç NoktaYöntemAmaç
/repos/{owner}/{repo}/issuesGETDepo sorunlarını listele
/repos/{owner}/{repo}/pullsGETPull request’leri listele
/repos/{owner}/{repo}/releasesGETSürümleri listele
/repos/{owner}/{repo}/contributorsGETKatkıda bulunanları listele
/repos/{owner}/{repo}/stargazersGETYıldız verenleri listele
/repos/{owner}/{repo}/forksGETForkları listele
/repos/{owner}/{repo}/eventsGETDepo olaylarını listele
/users/{username}GETKullanıcı profilini al
/orgs/{org}/membersGETKuruluş üyelerini listele
/repos/{owner}/{repo}/hooksPOSTWebhook 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ı tetikle
tajo.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ğrulamaBirincil Hız SınırıArama API
Kimlik doğrulamasızsaatte 60 istekdakikada 10 istek
Kişisel Erişim Belirtecisaatte 5.000 istekdakikada 30 istek
GitHub App (kurulum)saatte 5.000 istekdakikada 30 istek
GitHub App (kullanıcıdan sunucuya)saatte 5.000 istekdakikada 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

SorunNedenÇözüm
401 UnauthorizedSüresi dolmuş belirteç veya yanlış kimlik bilgileriBelirteci yeniden oluşturun veya GitHub App’i yeniden yükleyin
403 ForbiddenYetersiz izinlerBelirteç kapsamlarını veya App izinlerini kontrol edin
404 Not FoundErişim olmayan özel depoBelirtece 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ıyorYanlış 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: true

Bağlantı Testi

Terminal window
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

  1. PAT yerine GitHub App kullanın - GitHub App’ler ayrıntılı izinler ve otomatik yenilenen belirteçler sağlar
  2. Webhook gizli anahtarlarını etkinleştirin - Webhook imzalarını her zaman HMAC-SHA256 ile doğrulayın
  3. Koşullu istekler kullanın - Hız sınırı kotasını boşa harcamamak için ETag’lerden yararlanın
  4. Büyük yanıtları sayfalandırın - GitHub sayfa başına maksimum 100 öğe döndürür; Link başlıklarıyla yineleyin
  5. Düşük aktivite döneminde senkronize edin - Tam senkronizasyonları yoğun geliştirme saatleri dışında planlayın
  6. Hız sınırı başlıklarını izleyin - Proaktif olarak kısıtlamak için X-RateLimit-Remaining değ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

İlgili Kaynaklar

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.