GitHub-koppling
Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.
Illustration · exempeldata
Exempel på synkronisering
Källa
GitHub
Kopplingens status: Planerad
Mål
Ditt andra verktyg
Kopplingens status: Eget verktyg
Fältmappning
| Källfält | Målfält | Exempelvärde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Granska en post
- Godkänn den här versionen
Status gäller varje enskild koppling och garanterar inte att den här synkroniseringen är klar. Fälten är illustrativa. Kontrollera det faktiska schemat och behörigheterna innan synkronisering körs.
Anslut dina GitHub-lager till Brevo för uppföljning av utvecklarengagemang, arbetsflöden för releasemeddelanden och övervakning av communityaktivitet via Tajo.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | GitHub |
| Kategori | Anpassad |
| Installationskomplexitet | Måttlig |
| Officiell integration | Nej |
| Data som synkas | Händelser, användare, lager |
| API-typ | REST API, GraphQL API |
| Autentisering | GitHub App / Personal Access Token / OAuth 2.0 |
| Bas-URL | https://api.github.com |
| API-version | 2022-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:
- Ett GitHub-konto med åtkomst till målrepo
- En GitHub-app eller Personal Access Token (fine-grained rekommenderas)
- Administratörsåtkomst till lager för webhook-konfiguration
- Ett Brevo-konto med API-åtkomst
- 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)
- Navigera till Settings > Developer settings > GitHub Apps
- Klicka på New GitHub App
- 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 ForkAlternativ 2: Fine-Grained Personal Access Token
- Gå till Settings > Developer settings > Personal access tokens > Fine-grained tokens
- Klicka på Generate new token
- Välj mål-lager
- Bevilja dessa behörigheter:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyTokensä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
# 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_TOKENKonfiguration
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: 21Fä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_BIOAPI-endpoints
Tajo integrerar med följande endpoints i GitHubs REST API:
| Endpoint | Metod | Syfte |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Lista lagrets issues |
/repos/{owner}/{repo}/pulls | GET | Lista pull requests |
/repos/{owner}/{repo}/releases | GET | Lista releaser |
/repos/{owner}/{repo}/contributors | GET | Lista bidragsgivare |
/repos/{owner}/{repo}/stargazers | GET | Lista stargazers |
/repos/{owner}/{repo}/forks | GET | Lista forks |
/repos/{owner}/{repo}/events | GET | Lista lagerhändelser |
/users/{username} | GET | Hämta användarprofil |
/orgs/{org}/members | GET | Lista organisationsmedlemmar |
/repos/{owner}/{repo}/hooks | POST | Skapa 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 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 } });});Hastighetsbegränsningar
GitHub tillämpar hastighetsbegränsningar baserat på autentiseringsmetod:
| Autentisering | Primär hastighetsbegränsning | Search API |
|---|---|---|
| Oautentiserad | 60 förfrågningar/timme | 10 förfrågningar/minut |
| Personal Access Token | 5 000 förfrågningar/timme | 30 förfrågningar/minut |
| GitHub App (installation) | 5 000 förfrågningar/timme | 30 förfrågningar/minut |
| GitHub App (user-to-server) | 5 000 förfrågningar/timme | 30 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
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Utgången token eller fel uppgifter | Återgenerera token eller installera om GitHub-appen |
| 403 Forbidden | Otillräckliga behörigheter | Kontrollera tokens scopes eller appens behörigheter |
| 404 Not Found | Privat repo utan åtkomst | Bevilja lageråtkomst till token eller app |
| Hastighetsbegränsning överskriden | För många API-anrop | Aktivera villkorliga förfrågningar och minska synkfrekvensen |
| Webhooks tas inte emot | Fel URL eller brandvägg | Verifiera att webhook-URL:en är offentligt tillgänglig |
Felsökningsläge
connectors: github: debug: true log_level: verbose log_webhooks: trueTesta anslutning
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
- Använd GitHub Apps framför PAT:er - GitHub Apps ger granulära behörigheter och automatiskt uppdaterande tokens
- Aktivera webhook-hemligheter - Verifiera alltid webhook-signaturer med HMAC-SHA256
- Använd villkorliga förfrågningar - Utnyttja ETags för att undvika att slösa hastighetsbegränsningskvot
- Paginera stora svar - GitHub returnerar max 100 objekt per sida; iterera med
Link-headers - Synka under låg aktivitet - Schemalägg fullständiga synkar utanför högaktiva utvecklingstimmar
- Övervaka rate limit-headers - Kontrollera
X-RateLimit-Remainingfö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