GitHub-koppling

Anslut dina GitHub-lager till Brevo för uppföljning av utvecklarengagemang, arbetsflöden för releasemeddelanden och övervakning av communityaktivitet via Tajo.

Översikt

EgenskapVärde
PlattformGitHub
KategoriAnpassad
InstallationskomplexitetMåttlig
Officiell integrationNej
Data som synkasHändelser, användare, lager
API-typREST API, GraphQL API
AutentiseringGitHub App / Personal Access Token / OAuth 2.0
Bas-URLhttps://api.github.com
API-version2022-11-28 (header-baserad versionering)

Funktioner

  • Uppföljning av issues och PR:er - Synka issue- och pull request-händelser till tidslinjer för Brevo-kontakter
  • Releasemeddelanden - Utlös Brevo-kampanjer vid nya lagerreleaser
  • Bidragsgivarsynk - Mappa GitHub-bidragsgivare till Brevo-kontakter för community-engagemang
  • Stjärn- och fork-spårning - Övervaka lagrens popularitetsmått
  • Vidarebefordran av webhook-händelser - Vidarebefordra GitHub-händelser till Brevo-automationer
  • Lagerkatalog - Synka lagermetadata som Brevo-katalogposter

Förutsättningar

Innan du börjar, se till att du har:

  1. Ett GitHub-konto med åtkomst till målrepo
  2. En GitHub-app eller Personal Access Token (fine-grained rekommenderas)
  3. Administratörsåtkomst till lager för webhook-konfiguration
  4. Ett Brevo-konto med API-åtkomst
  5. Ett Tajo-konto med aktivt abonnemang

Autentisering

GitHub stöder flera autentiseringsmetoder. Tajo rekommenderar att använda GitHub Apps för åtkomst på organisationsnivå.

Alternativ 1: GitHub App (rekommenderas)

  1. Navigera till Settings > Developer settings > GitHub Apps
  2. Klicka på New GitHub App
  3. Konfigurera appen med dessa behörigheter:
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å till Settings > Developer settings > Personal access tokens > Fine-grained tokens
  2. Klicka på Generate new token
  3. Välj mål-lager
  4. Bevilja dessa behörigheter:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Tokensäkerhet

Fine-grained tokens har utgångsdatum. Sätt upp tokenrotation före utgång. GitHub App-installationstokens uppdateras automatiskt och föredras för produktionsbruk.

Ansluta till 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

Grundinställning

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

Fältmappning

Mappa GitHub-användardata till Brevo-kontaktattribut:

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 integrerar med följande endpoints i GitHubs REST API:

EndpointMetodSyfte
/repos/{owner}/{repo}/issuesGETLista lagrets issues
/repos/{owner}/{repo}/pullsGETLista pull requests
/repos/{owner}/{repo}/releasesGETLista releaser
/repos/{owner}/{repo}/contributorsGETLista bidragsgivare
/repos/{owner}/{repo}/stargazersGETLista stargazers
/repos/{owner}/{repo}/forksGETLista forks
/repos/{owner}/{repo}/eventsGETLista lagerhändelser
/users/{username}GETHämta användarprofil
/orgs/{org}/membersGETLista organisationsmedlemmar
/repos/{owner}/{repo}/hooksPOSTSkapa webhook

Kodexempel

Initiera kopplingen

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

Synka bidragsgivare till 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
// }

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

Utlös releasekampanj

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

Hastighetsbegränsningar

GitHub tillämpar hastighetsbegränsningar baserat på autentiseringsmetod:

AutentiseringPrimär hastighetsbegränsningSearch API
Oautentiserad60 förfrågningar/timme10 förfrågningar/minut
Personal Access Token5 000 förfrågningar/timme30 förfrågningar/minut
GitHub App (installation)5 000 förfrågningar/timme30 förfrågningar/minut
GitHub App (user-to-server)5 000 förfrågningar/timme30 förfrågningar/minut

Villkorliga förfrågningar

Tajo använder villkorliga förfrågningar (If-None-Match / If-Modified-Since-headers) för att minska API-konsumtionen. Svar med 304 Not Modified räknas inte mot hastighetsbegränsningen.

Ytterligare gränser:

  • Sekundära hastighetsbegränsningar: Inte mer än 100 samtidiga förfrågningar. Inte mer än 900 poäng per minut för REST API-endpoints.
  • GraphQL: 5 000 poäng per timme (frågekostnad varierar beroende på komplexitet).

Felsökning

Vanliga problem

ProblemOrsakLösning
401 UnauthorizedUtgången token eller fel uppgifterÅtergenerera token eller installera om GitHub-appen
403 ForbiddenOtillräckliga behörigheterKontrollera tokens scopes eller appens behörigheter
404 Not FoundPrivat repo utan åtkomstBevilja lageråtkomst till token eller app
Hastighetsbegränsning överskridenFör många API-anropAktivera villkorliga förfrågningar och minska synkfrekvensen
Webhooks tas inte emotFel URL eller brandväggVerifiera att webhook-URL:en är offentligt tillgänglig

Felsökningsläge

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

Testa anslutning

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)

Bästa praxis

  1. Använd GitHub Apps framför PAT:er - GitHub Apps ger granulära behörigheter och automatiskt uppdaterande tokens
  2. Aktivera webhook-hemligheter - Verifiera alltid webhook-signaturer med HMAC-SHA256
  3. Använd villkorliga förfrågningar - Utnyttja ETags för att undvika att slösa hastighetsbegränsningskvot
  4. Paginera stora svar - GitHub returnerar max 100 objekt per sida; iterera med Link-headers
  5. Synka under låg aktivitet - Schemalägg fullständiga synkar utanför högaktiva utvecklingstimmar
  6. Övervaka rate limit-headers - Kontrollera X-RateLimit-Remaining för att proaktivt strypa

Säkerhet

  • GitHub App-autentisering - RSA-nyckelbaserad JWT med kortlivade installationstokens
  • Webhook-signaturer - HMAC-SHA256-signaturverifiering på alla webhook-nyttolaster
  • Fine-Grained Tokens - Scopade till specifika lager och behörigheter
  • Endast HTTPS - All API-kommunikation krypterad via TLS 1.2+
  • Krypterad lagring - Privata nycklar och tokens krypterade i vila i Tajo
  • Token-utgång - Fine-grained tokens går automatiskt ut; sätt upp rotationsvarningar

Relaterade resurser

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Fråga mig om dokumentationen.