GitHub-kobling

Koble GitHub-repositoriene dine til Brevo for sporing av utviklerengasjement, arbeidsflyter for release-varslinger og overvåking av samfunnsaktivitet gjennom Tajo.

Oversikt

EgenskapVerdi
PlattformGitHub
KategoriCustom
OppsettskompleksitetModerat
Offisiell integrasjonNei
Synkroniserte dataHendelser, brukere, repositorier
API-typeREST API, GraphQL API
AutentiseringGitHub App / Personal Access Token / OAuth 2.0
Base URLhttps://api.github.com
API-versjon2022-11-28 (header-basert versjonering)

Funksjoner

  • Sporing av issues og PR-er - Synkroniser issue- og pull request-hendelser til Brevo-kontakttidslinjer
  • Release-varslinger - Utløs Brevo-kampanjer på nye repository-releases
  • Synkronisering av bidragsytere - Mapp GitHub-bidragsytere til Brevo-kontakter for samfunnsengasjement
  • Sporing av stjerner og forks - Overvåk metrikk for repository-popularitet
  • Videresending av webhook-hendelser - Videresend GitHub-hendelser til Brevo-automatiseringer
  • Repository-katalog - Synkroniser repository-metadata som Brevo-katalogelementer

Forutsetninger

Før du begynner, sørg for at du har:

  1. En GitHub-konto med tilgang til målrepositorier
  2. En GitHub App eller Personal Access Token (fine-grained anbefales)
  3. Admin-tilgang til repositorier for webhook-konfigurasjon
  4. En Brevo-konto med API-tilgang
  5. En Tajo-konto med aktivt abonnement

Autentisering

GitHub støtter flere autentiseringsmetoder. Tajo anbefaler å bruke GitHub Apps for tilgang på organisasjonsnivå.

Alternativ 1: GitHub App (anbefalt)

  1. Naviger til Settings > Developer settings > GitHub Apps
  2. Klikk New GitHub App
  3. Konfigurer appen med disse tillatelsene:
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

Alternativ 2: Fine-Grained Personal Access Token

  1. Gå til Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Klikk Generate new token
  3. Velg målrepositorier
  4. Gi disse tillatelsene:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Tokensikkerhet

Fine-grained tokens har utløpsdatoer. Sett opp token-rotering før utløp. GitHub App installation-tokens oppdateres automatisk og foretrekkes for produksjonsbruk.

Koble 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

Konfigurasjon

Grunnleggende oppsett

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

Mapp GitHub-brukerdata 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-endepunkter

Tajo integreres med følgende GitHub REST API-endepunkter:

EndepunktMetodeFormål
/repos/{owner}/{repo}/issuesGETList repository-issues
/repos/{owner}/{repo}/pullsGETList pull requests
/repos/{owner}/{repo}/releasesGETList releases
/repos/{owner}/{repo}/contributorsGETList bidragsytere
/repos/{owner}/{repo}/stargazersGETList stargazers
/repos/{owner}/{repo}/forksGETList forks
/repos/{owner}/{repo}/eventsGETList repository-hendelser
/users/{username}GETHent brukerprofil
/orgs/{org}/membersGETList organisasjonsmedlemmer
/repos/{owner}/{repo}/hooksPOSTOpprett webhook

Kodeeksempler

Initialiser kobling

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

Synkroniser bidragsytere 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åndter webhook-hendelser

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

Utløs release-kampanje

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

Hastighetsgrenser

GitHub håndhever hastighetsgrenser basert på autentiseringsmetode:

AutentiseringPrimær hastighetsgrenseSearch API
Uautentisert60 forespørsler/time10 forespørsler/minutt
Personal Access Token5 000 forespørsler/time30 forespørsler/minutt
GitHub App (installation)5 000 forespørsler/time30 forespørsler/minutt
GitHub App (user-to-server)5 000 forespørsler/time30 forespørsler/minutt

Betingede forespørsler

Tajo bruker betingede forespørsler (If-None-Match / If-Modified-Since-headere) for å redusere API-forbruk. Responser med 304 Not Modified teller ikke mot hastighetsgrenser.

Ytterligere grenser:

  • Sekundære hastighetsgrenser: Ikke mer enn 100 samtidige forespørsler. Ikke mer enn 900 poeng per minutt for REST API-endepunkter.
  • GraphQL: 5 000 poeng per time (spørringskostnad varierer med kompleksitet).

Feilsøking

Vanlige problemer

ProblemÅrsakLøsning
401 UnauthorizedUtløpt token eller feil legitimasjonGenerer tokenet på nytt eller installer GitHub App på nytt
403 ForbiddenUtilstrekkelige tillatelserSjekk tokenets scopes eller App-tillatelser
404 Not FoundPrivat repo uten tilgangGi repository-tilgang til token eller App
Hastighetsgrense overskredetFor mange API-kallAktiver betingede forespørsler og reduser synkroniseringsfrekvens
Webhooks ikke mottattFeil URL eller brannmurVerifiser at webhook-URL er offentlig tilgjengelig

Feilsøkingsmodus

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

Test tilkobling

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)

Beste praksis

  1. Bruk GitHub Apps fremfor PAT-er - GitHub Apps gir granulære tillatelser og selvoppdaterende tokens
  2. Aktiver webhook-hemmeligheter - Verifiser alltid webhook-signaturer med HMAC-SHA256
  3. Bruk betingede forespørsler - Utnytt ETags for å unngå å kaste bort hastighetsgrense-kvote
  4. Paginér store responser - GitHub returnerer maks 100 elementer per side; iterer med Link-headere
  5. Synkroniser i lavaktivitetsperioder - Planlegg fulle synkroniseringer utenfor utviklingsarbeidstid
  6. Overvåk hastighetsgrense-headere - Sjekk X-RateLimit-Remaining for å proaktivt strupe

Sikkerhet

  • GitHub App-autentisering - RSA-nøkkelbasert JWT med kortlivede installation-tokens
  • Webhook-signaturer - HMAC-SHA256-signaturverifisering på alle webhook-payloader
  • Fine-Grained Tokens - Begrenset til spesifikke repositorier og tillatelser
  • Kun HTTPS - All API-kommunikasjon kryptert via TLS 1.2+
  • Kryptert lagring - Private nøkler og tokens kryptert i ro i Tajo
  • Token-utløp - Fine-grained tokens utløper automatisk; sett opp rotasjonsvarsler

Relaterte ressurser

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hei! Spør meg om dokumentasjonen.