Σύνδεσμος GitHub
Κατάσταση συνδέσμου: Προγραμματισμένο Δεν έχει κατασκευαστεί ακόμη. Το Tajo δεν εκτελεί σήμερα αυτόν τον σύνδεσμο.
Απεικόνιση · δείγμα δεδομένων
Παράδειγμα συγχρονισμού
Πηγή
GitHub
Κατάσταση συνδέσμου: Προγραμματισμένο
Προορισμός
Το άλλο σας εργαλείο
Κατάσταση συνδέσμου: Προσαρμοσμένο εργαλείο
Αντιστοίχιση πεδίων
| Πεδίο πηγής | Πεδίο προορισμού | Ενδεικτική τιμή |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Σχέδιο
- Ελέγξτε μία εγγραφή
- Εγκρίνετε αυτή την έκδοση
Οι καταστάσεις αφορούν μεμονωμένους συνδέσμους και δεν εγγυώνται ότι αυτός ο συγχρονισμός είναι έτοιμος. Ενδεικτικά πεδία. Ελέγξτε το πραγματικό σχήμα και τα δικαιώματα πριν εκτελεστεί συγχρονισμός.
Συνδέστε τα αποθετήριά σας GitHub με το Brevo για παρακολούθηση δέσμευσης developer, ροές εργασίας ειδοποίησης κυκλοφορίας και παρακολούθηση κοινοτικής δραστηριότητας μέσω Tajo.
Επισκόπηση
| Ιδιότητα | Τιμή |
|---|---|
| Πλατφόρμα | GitHub |
| Κατηγορία | Προσαρμοσμένο |
| Πολυπλοκότητα Ρύθμισης | Μεσαία |
| Επίσημη Ενσωμάτωση | Όχι |
| Δεδομένα που Συγχρονίζονται | Εκδηλώσεις, Χρήστες, Αποθετήρια |
| Τύπος API | REST API, GraphQL API |
| Πιστοποίηση | GitHub App / Personal Access Token / OAuth 2.0 |
| Βασικό URL | https://api.github.com |
| Έκδοση API | 2022-11-28 (έκδοση βάσει header) |
Χαρακτηριστικά
- Παρακολούθηση ζητημάτων και PR - Συγχρονισμός εκδηλώσεων ζητημάτων και pull request στα χρονοδιαγράμματα επαφών Brevo
- Ειδοποιήσεις κυκλοφορίας - Ενεργοποίηση καμπανιών Brevo σε νέες κυκλοφορίες αποθετηρίου
- Συγχρονισμός συνεισφερόντων - Αντιστοίχιση συνεισφερόντων GitHub σε επαφές Brevo για κοινοτική δέσμευση
- Παρακολούθηση αστεριών και forks - Παρακολούθηση μετρήσεων δημοτικότητας αποθετηρίου
- Προώθηση εκδηλώσεων webhook - Προώθηση εκδηλώσεων GitHub σε αυτοματισμούς Brevo
- Κατάλογος αποθετηρίου - Συγχρονισμός metadata αποθετηρίου ως στοιχεία καταλόγου Brevo
Προαπαιτούμενα
Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:
- Λογαριασμό GitHub με πρόσβαση στα στοχευόμενα αποθετήρια
- GitHub App ή Personal Access Token (συνιστάται λεπτομερής)
- Πρόσβαση διαχειριστή στα αποθετήρια για ρύθμιση webhook
- Λογαριασμό Brevo με πρόσβαση API
- Λογαριασμό Tajo με ενεργή συνδρομή
Πιστοποίηση
Το GitHub υποστηρίζει πολλαπλές μεθόδους πιστοποίησης. Το Tajo συνιστά τη χρήση GitHub Apps για πρόσβαση σε επίπεδο οργανισμού.
Επιλογή 1: GitHub App (Συνιστάται)
- Μεταβείτε στο Settings > Developer settings > GitHub Apps
- Κάντε κλικ στο New GitHub App
- Ρυθμίστε την εφαρμογή με αυτά τα δικαιώματα:
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Επιλογή 2: Λεπτομερής Personal Access Token
- Μεταβείτε στο Settings > Developer settings > Personal access tokens > Fine-grained tokens
- Κάντε κλικ στο Generate new token
- Επιλέξτε στοχευόμενα αποθετήρια
- Παραχωρήστε αυτά τα δικαιώματα:
Repository access: Selected repositoriesPermissions: Issues: Read-only Pull requests: Read-only Contents: Read-only Metadata: Read-onlyΑσφάλεια Token
Τα λεπτομερή tokens έχουν ημερομηνίες λήξης. Ρυθμίστε εναλλαγή token πριν τη λήξη. Τα tokens εγκατάστασης GitHub App ανανεώνονται αυτόματα και προτιμώνται για χρήση παραγωγής.
Σύνδεση με 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_TOKENΔιαμόρφωση
Βασική Ρύθμιση
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Αντιστοίχιση Πεδίων
Αντιστοιχίστε δεδομένα χρήστη GitHub σε χαρακτηριστικά επαφών 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_BIOEndpoints API
Το Tajo ενσωματώνεται με τα παρακάτω endpoints REST API GitHub:
| Endpoint | Μέθοδος | Σκοπός |
|---|---|---|
/repos/{owner}/{repo}/issues | GET | Λίστα ζητημάτων αποθετηρίου |
/repos/{owner}/{repo}/pulls | GET | Λίστα pull requests |
/repos/{owner}/{repo}/releases | GET | Λίστα κυκλοφοριών |
/repos/{owner}/{repo}/contributors | GET | Λίστα συνεισφερόντων |
/repos/{owner}/{repo}/stargazers | GET | Λίστα παρατηρητών αστεριών |
/repos/{owner}/{repo}/forks | GET | Λίστα forks |
/repos/{owner}/{repo}/events | GET | Λίστα εκδηλώσεων αποθετηρίου |
/users/{username} | GET | Λήψη προφίλ χρήστη |
/orgs/{org}/members | GET | Λίστα μελών οργανισμού |
/repos/{owner}/{repo}/hooks | POST | Δημιουργία webhook |
Παραδείγματα Κώδικα
Αρχικοποίηση Συνδέσμου
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});Συγχρονισμός Συνεισφερόντων στο 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// }Χειρισμός Εκδηλώσεων Webhook
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');});Ενεργοποίηση Καμπάνιας Κυκλοφορίας
// 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 } });});Όρια Ρυθμού
Το GitHub επιβάλλει όρια ρυθμού βάσει μεθόδου πιστοποίησης:
| Πιστοποίηση | Κύριο Όριο Ρυθμού | Search API |
|---|---|---|
| Χωρίς πιστοποίηση | 60 αιτήματα/ώρα | 10 αιτήματα/λεπτό |
| Personal Access Token | 5.000 αιτήματα/ώρα | 30 αιτήματα/λεπτό |
| GitHub App (εγκατάσταση) | 5.000 αιτήματα/ώρα | 30 αιτήματα/λεπτό |
| GitHub App (user-to-server) | 5.000 αιτήματα/ώρα | 30 αιτήματα/λεπτό |
Υπό Όρους Αιτήματα
Το Tajo χρησιμοποιεί υπό όρους αιτήματα (headers If-None-Match / If-Modified-Since) για μείωση κατανάλωσης API. Οι αποκρίσεις με 304 Not Modified δεν υπολογίζονται έναντι ορίων ρυθμού.
Πρόσθετα όρια:
- Δευτερεύοντα όρια ρυθμού: Όχι περισσότερα από 100 ταυτόχρονα αιτήματα. Όχι περισσότεροι από 900 πόντοι ανά λεπτό για endpoints REST API.
- GraphQL: 5.000 πόντοι ανά ώρα (το κόστος ερωτήματος ποικίλλει ανάλογα με την πολυπλοκότητα).
Αντιμετώπιση Προβλημάτων
Συνηθισμένα Προβλήματα
| Πρόβλημα | Αιτία | Λύση |
|---|---|---|
| 401 Unauthorized | Ληγμένο token ή λανθασμένα διαπιστευτήρια | Αναγέννηση token ή επανεγκατάσταση GitHub App |
| 403 Forbidden | Ανεπαρκή δικαιώματα | Ελέγξτε scopes token ή δικαιώματα App |
| 404 Not Found | Ιδιωτικό αποθετήριο χωρίς πρόσβαση | Παραχωρήστε πρόσβαση αποθετηρίου στο token ή App |
| Υπέρβαση ορίου ρυθμού | Πολλές κλήσεις API | Ενεργοποιήστε υπό όρους αιτήματα και μειώστε συχνότητα συγχρονισμού |
| Δεν λαμβάνονται webhooks | Λάθος URL ή firewall | Επαληθεύστε ότι το URL webhook είναι δημόσια προσβάσιμο |
Λειτουργία Εντοπισμού Σφαλμάτων
connectors: github: debug: true log_level: verbose log_webhooks: trueΔοκιμή Σύνδεσης
tajo connectors test github# ✓ API authentication successful# ✓ Repository access verified# ✓ Issue data readable# ✓ Webhook delivery active# ✓ Rate limit healthy (4,850/5,000 remaining)Βέλτιστες Πρακτικές
- Χρησιμοποιήστε GitHub Apps αντί PATs - Τα GitHub Apps παρέχουν λεπτομερή δικαιώματα και αυτόματα ανανεούμενα tokens
- Ενεργοποιήστε secrets webhook - Επαληθεύετε πάντα υπογραφές webhook με HMAC-SHA256
- Χρησιμοποιήστε υπό όρους αιτήματα - Αξιοποιήστε ETags για αποφυγή σπατάλης ποσόστωσης ορίου ρυθμού
- Σελιδοποίηση μεγάλων αποκρίσεων - Το GitHub επιστρέφει μέγ. 100 στοιχεία ανά σελίδα· επαναλάβετε με headers
Link - Συγχρονίστε σε ώρες χαμηλής δραστηριότητας - Προγραμματίστε πλήρεις συγχρονισμούς εκτός ωρών αιχμής ανάπτυξης
- Παρακολουθήστε headers ορίου ρυθμού - Ελέγξτε
X-RateLimit-Remainingγια προληπτική δυνατότητα ρύθμισης
Ασφάλεια
- Πιστοποίηση GitHub App - JWT βάσει κλειδιού RSA με βραχύβια tokens εγκατάστασης
- Υπογραφές Webhook - Επαλήθευση υπογραφής HMAC-SHA256 σε όλα τα payloads webhook
- Λεπτομερή Tokens - Περιορισμένα σε συγκεκριμένα αποθετήρια και δικαιώματα
- Μόνο HTTPS - Όλη η επικοινωνία API κρυπτογραφημένη μέσω TLS 1.2+
- Κρυπτογραφημένη Αποθήκευση - Ιδιωτικά κλειδιά και tokens κρυπτογραφημένα σε ηρεμία στο Tajo
- Λήξη Token - Τα λεπτομερή tokens λήγουν αυτόματα· ρυθμίστε ειδοποιήσεις εναλλαγής