GitHub Connector
Stanje konektorja: Načrtovano Še ni izdelano. Tajo danes ne poganja tega konektorja.
Ponazoritev · vzorčni podatki
Primer sinhronizacije
Vir
GitHub
Stanje konektorja: Načrtovano
Cilj
Vaše drugo orodje
Stanje konektorja: Orodje po meri
Preslikava polj
| Izvorno polje | Ciljno polje | Vzorčna vrednost |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Osnutek
- Preglejte en zapis
- Odobrite to različico
Stanja veljajo za posamezne konektorje in ne zagotavljajo, da je ta sinhronizacija pripravljena. Polja so ponazoritvena. Pred zagonom sinhronizacije preverite dejansko shemo in dovoljenja.
Poveži svoje repozitorije GitHub z Brevo za sledenje angažiranosti razvijalcev, delovne tokove obvestil o izdajah in spremljanje aktivnosti skupnosti prek Tajo.
Pregled
| Lastnost | Vrednost |
|---|---|
| Platforma | GitHub |
| Kategorija | Po meri |
| Zahtevnost nastavitve | Srednja |
| Uradna integracija | Ne |
| Sinhronizirani podatki | Dogodki, uporabniki, repozitoriji |
| Tip API | REST API, GraphQL API |
| Avtentikacija | GitHub App / Personal Access Token / OAuth 2.0 |
| Osnovni URL | https://api.github.com |
| Različica API | 2022-11-28 (različiranje na osnovi glave) |
Funkcionalnosti
- Sledenje težavam in PR – sinhronizacija dogodkov težav in zahtevkov za potrditev na časovnice stikov Brevo
- Obvestila o izdajah – sproži kampanje Brevo ob novih izdajah repozitorija
- Sinhronizacija prispevnikov – preslikaj prispevnike GitHub v stike Brevo za angažiranje skupnosti
- Sledenje zvezdicam in vejam – spremljanje meritev priljubljenosti repozitorija
- Posredovanje webhook dogodkov – posreduj dogodke GitHub v avtomatizacije Brevo
- Katalog repozitorijev – sinhronizacija metapodatkov repozitorija kot katalognih elementov Brevo
Predpogoji
Preden začneš, se prepričaj, da imaš:
- Račun GitHub z dostopom do ciljnih repozitorijev
- GitHub App ali Personal Access Token (priporočen podrobno določen)
- Administratorski dostop do repozitorijev za konfiguracijo webhookov
- Brevo račun z dostopom do API
- Tajo račun z aktivno naročnino
Avtentikacija
GitHub podpira več metod avtentikacije. Tajo priporoča uporabo GitHub Apps za dostop na ravni organizacije.
Možnost 1: GitHub App (priporočeno)
- Pojdi na Settings > Developer settings > GitHub Apps
- Klikni New GitHub App
- Nastavi aplikacijo s temi dovoljenji:
Repository permissions: Issues: Read Pull requests: Read Contents: Read Metadata: Read
Organization permissions: Members: Read
Subscribe to events: Issues Pull request Push Release Star ForkMožnost 2: Fine-Grained Personal Access Token
- Pojdi na Settings > Developer settings > Personal access tokens > Fine-grained tokens
- Klikni Generate new token
- Izberi ciljne repozitorije
- Dodeli ta dovoljenja:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyVarnost žetonov
Podrobno določeni žetoni imajo datume poteka. Nastavi rotacijo žetonov pred potekom. Žetoni za namestitev GitHub App se samodejno osvežijo in so za produkcijsko rabo primernejši.
Povezava s Tajo
# Using GitHub Apptajo connectors install github \ --app-id $GITHUB_APP_ID \ --private-key-path ./github-app-key.pem \ --installation-id $GITHUB_INSTALLATION_ID
# Using Personal Access Tokentajo connectors install github \ --token $GITHUB_TOKENKonfiguracija
Osnovna nastavitev
connectors: github: enabled: true auth_type: "github_app" # or "token"
repositories: - owner/repo-1 - owner/repo-2
sync: issues: true pull_requests: true releases: true contributors: true stars: true
lists: contributors: 20 stargazers: 21Preslikava polj
Preslikaj podatke o uporabniku GitHub v atribute stikov Brevo:
field_mapping: # Standard fields login: GITHUB_USERNAME email: email name: FIRSTNAME
# Developer metrics contributions: GITHUB_CONTRIBUTIONS repositories_count: GITHUB_REPOS followers: GITHUB_FOLLOWERS created_at: GITHUB_JOINED
# Custom attributes company: COMPANY location: LOCATION bio: GITHUB_BIOKončne točke API
Tajo se integrira z naslednjimi končnimi točkami GitHub REST API:
| Končna točka | Metoda | Namen |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Seznam težav repozitorija |
/repos/{owner}/{repo}/pulls | GET | Seznam zahtevkov za potrditev |
/repos/{owner}/{repo}/releases | GET | Seznam izdaj |
/repos/{owner}/{repo}/contributors | GET | Seznam prispevnikov |
/repos/{owner}/{repo}/stargazers | GET | Seznam oboževalcev |
/repos/{owner}/{repo}/forks | GET | Seznam vej |
/repos/{owner}/{repo}/events | GET | Seznam dogodkov repozitorija |
/users/{username} | GET | Pridobi profil uporabnika |
/orgs/{org}/members | GET | Seznam članov organizacije |
/repos/{owner}/{repo}/hooks | POST | Ustvari webhook |
Primeri kode
Inicializacija konektorja
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});Sinhronizacija prispevnikov z Brevo
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// }Obravnava webhook dogodkov
app.post('/webhooks/github', async (req, res) => { const signature = req.get('X-Hub-Signature-256'); const event = req.get('X-GitHub-Event');
// Verify webhook signature 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');});Sprožanje kampanje ob izdaji
// Listen for new releases and trigger Brevo campaigntajo.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 } });});Omejitve hitrosti
GitHub uveljavi omejitve hitrosti glede na metodo avtentikacije:
| Avtentikacija | Primarna omejitev hitrosti | Search API |
|---|---|---|
| Brez avtentikacije | 60 zahtevkov/uro | 10 zahtevkov/min |
| Personal Access Token | 5.000 zahtevkov/uro | 30 zahtevkov/min |
| GitHub App (namestitev) | 5.000 zahtevkov/uro | 30 zahtevkov/min |
| GitHub App (uporabnik-strežnik) | 5.000 zahtevkov/uro | 30 zahtevkov/min |
Pogojni zahtevki
Tajo za zmanjšanje porabe API uporablja pogojne zahtevke (glave If-None-Match / If-Modified-Since). Odgovori s 304 Not Modified se ne štejejo pri omejitvah hitrosti.
Dodatne omejitve:
- Sekundarne omejitve hitrosti: Največ 100 sočasnih zahtevkov. Največ 900 točk na minuto za končne točke REST API.
- GraphQL: 5.000 točk na uro (stroški poizvedbe se razlikujejo glede na kompleksnost).
Odpravljanje težav
Pogoste težave
| Težava | Vzrok | Rešitev |
|---|---|---|
| 401 Unauthorized | Potekel žeton ali napačne poverilnice | Obnovi žeton ali znova namesti GitHub App |
| 403 Forbidden | Nezadostna dovoljenja | Preveri obsege žetona ali dovoljenja aplikacije |
| 404 Not Found | Zasebni repozitorij brez dostopa | Dodeli dostop do repozitorija žetonu ali aplikaciji |
| Prekoračena omejitev hitrosti | Preveč klicev API | Omogoči pogojne zahtevke in zmanjšaj pogostost sinhronizacije |
| Webhooks niso prejeti | Napačen URL ali požarni zid | Preveri, da je URL webhookov javno dostopen |
Način odpravljanja napak
connectors: github: debug: true log_level: verbose log_webhooks: truePreizkus povezave
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)Najboljše prakse
- Uporabi GitHub Apps namesto PAT – GitHub Apps zagotavljajo natančna dovoljenja in samodejno osvežujoče žetone
- Omogoči skrivnosti webhookov – vedno preverjaj podpise webhookov z HMAC-SHA256
- Uporabi pogojne zahtevke – izkoristi ETag-e, da ne zapravljaš kvote omejitve hitrosti
- Paginiraj velike odgovore – GitHub vrne največ 100 elementov na stran; iteriraj z glavami
Link - Sinhronizacija med nizko aktivnostjo – uredi polne sinhronizacije izven koničnih ur razvoja
- Spremljaj glave omejitve hitrosti – preveri
X-RateLimit-Remainingza proaktivno omejevanje
Varnost
- Avtentikacija GitHub App – JWT na osnovi ključa RSA s kratkotrajnimi žetoni namestitve
- Podpisi webhookov – preverjanje podpisa HMAC-SHA256 za vse vsebine webhookov
- Podrobno določeni žetoni – omejeni na določene repozitorije in dovoljenja
- Samo HTTPS – vsa komunikacija API šifrirana prek TLS 1.2+
- Šifrirano shranjevanje – zasebni ključi in žetoni šifrirani v mirovanju v Tajo
- Potek žetonov – podrobno določeni žetoni samodejno potečejo; nastavi opozorila za rotacijo