GitHub Connector

Forbind dine GitHub-repositories med Brevo til sporing af udvikler-engagement, workflows til udgivelsesnotifikationer og overvågning af fællesskabsaktivitet gennem Tajo.

Oversigt

EgenskabVærdi
PlatformGitHub
KategoriBrugerdefineret
OpsætningskompleksitetModerat
Officiel integrationNej
Synkroniserede dataHændelser, brugere, repositories
API-typeREST API, GraphQL API
AutentifikationGitHub App / Personal Access Token / OAuth 2.0
Base-URLhttps://api.github.com
API-version2022-11-28 (header-baseret versionering)

Funktioner

  • Sporing af issues og PR’er - Synkronisér issue- og pull request-hændelser til Brevo-kontakttidslinjer
  • Udgivelsesnotifikationer - Udløs Brevo-kampagner ved nye repository-udgivelser
  • Synkronisering af bidragydere - Kortlæg GitHub-bidragydere til Brevo-kontakter til fællesskabs-engagement
  • Sporing af stars og forks - Overvåg repository-popularitetsmetrikker
  • Videresendelse af webhook-hændelser - Videresend GitHub-hændelser til Brevo-automatiseringer
  • Repository-katalog - Synkronisér repository-metadata som Brevo-katalogelementer

Forudsætninger

Før du begynder, skal du sikre dig, at du har:

  1. En GitHub-konto med adgang til målrepositories
  2. En GitHub App eller et Personal Access Token (fine-grained anbefales)
  3. Admin-adgang til repositories til webhook-konfiguration
  4. En Brevo-konto med API-adgang
  5. En Tajo-konto med aktivt abonnement

Autentifikation

GitHub understøtter flere autentifikationsmetoder. Tajo anbefaler at bruge GitHub Apps til adgang på organisationsniveau.

Mulighed 1: GitHub App (anbefalet)

  1. Gå til Settings > Developer settings > GitHub Apps
  2. Klik på New GitHub App
  3. Konfigurér appen med disse tilladelser:
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

Mulighed 2: Fine-Grained Personal Access Token

  1. Gå til Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Klik på Generate new token
  3. Vælg målrepositories
  4. Tildel disse tilladelser:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Token-sikkerhed

Fine-grained tokens har udløbsdatoer. Opsæt token-rotation før udløb. GitHub App-installationstokens opdateres automatisk og foretrækkes til produktionsbrug.

Forbind til Tajo

Terminal window
# Using GitHub App
tajo connectors install github \
--app-id $GITHUB_APP_ID \
--private-key-path ./github-app-key.pem \
--installation-id $GITHUB_INSTALLATION_ID
# Using Personal Access Token
tajo connectors install github \
--token $GITHUB_TOKEN

Konfiguration

Grundlæggende opsætning

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

Feltmapping

Kortlæg GitHub-brugerdata til Brevo-kontaktattributter:

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_BIO

API-endpoints

Tajo integrerer med følgende GitHub REST API-endpoints:

EndpointMetodeFormål
/repos/{owner}/{repo}/issuesGETVis repository-issues
/repos/{owner}/{repo}/pullsGETVis pull requests
/repos/{owner}/{repo}/releasesGETVis udgivelser
/repos/{owner}/{repo}/contributorsGETVis bidragydere
/repos/{owner}/{repo}/stargazersGETVis stargazers
/repos/{owner}/{repo}/forksGETVis forks
/repos/{owner}/{repo}/eventsGETVis repository-hændelser
/users/{username}GETHent brugerprofil
/orgs/{org}/membersGETVis organisationsmedlemmer
/repos/{owner}/{repo}/hooksPOSTOpret webhook

Kodeeksempler

Initialisér connector

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
});

Synkronisér bidragydere til 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
// }

Håndtér webhook-hændelser

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');
});

Udløs udgivelseskampagne

// Listen for new releases and trigger Brevo campaign
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
}
});
});

Rate limits

GitHub håndhæver rate limits baseret på autentifikationsmetode:

AutentifikationPrimær rate limitSearch API
Uautentificeret60 anmodninger/time10 anmodninger/minut
Personal Access Token5.000 anmodninger/time30 anmodninger/minut
GitHub App (installation)5.000 anmodninger/time30 anmodninger/minut
GitHub App (user-to-server)5.000 anmodninger/time30 anmodninger/minut

Betingede anmodninger

Tajo bruger betingede anmodninger (If-None-Match / If-Modified-Since-headers) for at reducere API-forbruget. Svar med 304 Not Modified tæller ikke med i rate limits.

Yderligere grænser:

  • Sekundære rate limits: Ikke mere end 100 samtidige anmodninger. Ikke mere end 900 point pr. minut for REST API-endpoints.
  • GraphQL: 5.000 point pr. time (forespørgselsomkostninger varierer efter kompleksitet).

Fejlfinding

Almindelige problemer

ProblemÅrsagLøsning
401 UnauthorizedUdløbet token eller forkerte legitimationsoplysningerRegenerér token eller geninstallér GitHub App
403 ForbiddenUtilstrækkelige tilladelserTjek token-scopes eller app-tilladelser
404 Not FoundPrivat repo uden adgangGiv repository-adgang til token eller app
Rate limit overskredetFor mange API-kaldAktivér betingede anmodninger og reducér synkroniseringsfrekvens
Webhooks ikke modtagetForkert URL eller firewallVerificér, at webhook-URL er offentligt tilgængelig

Debug-tilstand

connectors:
github:
debug: true
log_level: verbose
log_webhooks: true

Testforbindelse

Terminal window
tajo connectors test github
# ✓ API authentication successful
# ✓ Repository access verified
# ✓ Issue data readable
# ✓ Webhook delivery active
# ✓ Rate limit healthy (4,850/5,000 remaining)

Bedste praksis

  1. Brug GitHub Apps frem for PAT’er - GitHub Apps giver granulære tilladelser og automatisk opdaterende tokens
  2. Aktivér webhook-secrets - Verificér altid webhook-signaturer med HMAC-SHA256
  3. Brug betingede anmodninger - Udnyt ETags for at undgå at spilde rate limit-kvote
  4. Paginér store svar - GitHub returnerer maks. 100 elementer pr. side; itérér med Link-headers
  5. Synkronisér uden for spidsbelastning - Planlæg fulde synkroniseringer uden for peak-udviklingstider
  6. Overvåg rate limit-headers - Tjek X-RateLimit-Remaining for proaktivt at throttle

Sikkerhed

  • GitHub App-autentifikation - RSA-nøglebaseret JWT med kortvarige installationstokens
  • Webhook-signaturer - HMAC-SHA256-signaturverifikation på alle webhook-payloads
  • Fine-Grained tokens - Scoped til specifikke repositories og tilladelser
  • Kun HTTPS - Al API-kommunikation krypteres via TLS 1.2+
  • Krypteret opbevaring - Private nøgler og tokens krypteres i hvile i Tajo
  • Token-udløb - Fine-grained tokens udløber automatisk; opsæt rotationsalarmer

Relaterede ressourcer

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Spørg mig om dokumentationen.