GitHub-integration
Anslut din egenvärdade Status200 till GitHub med en GitHub App som du själv äger. När appen har installerats från Status200 importeras installationens repositories till ditt projekt och hålls synkroniserade, AI-korrigeringsuppgifter öppnar pull requests, och ditt team kan ge appen uppgifter från GitHub genom att nämna den.
Den här sidan är till för den som driver Status200-servern: du skapar appen en gång, och sedan ansluter varje projekt den från Kod.
Så fungerar det
Installationen börjar i Status200, inte på GitHub: länken som Status200 skickar dig till GitHub med är det som knyter installationen till ditt projekt.
Ansluta en installation av GitHub-appen till ett projekt
- Omdirigeringen i webbläsaren bär installationen och en OAuth-engångskod. Status200 byter koden för att bekräfta att GitHub-kontot som installerade appen administrerar installationen och importerar sedan dess repositories. En installation som redan finns ansluts i stället genom att logga in på GitHub: koden talar då om för Status200 vilka installationer kontot administrerar.
- Webhooks håller listan över repositories synkroniserad och ger appen uppgifter: omnämnanden, tilldelningar, utlösaretiketter och granskningsbegäranden. GitHub signerar var och en med webhook-hemligheten, och Status200 avvisar dem som den inte kan verifiera.
Innan du börjar
- Ett GitHub-konto som kan skapa GitHub Apps för organisationen eller användaren som appen ska installeras på. För att installera den i en organisation måste du vara ägare till den eller få en ägare att godkänna begäran.
- Ett offentligt HTTPS-värdnamn för Status200 som GitHub kan nå för webhooks. Se Nätverksåtkomst.
- Åtkomst till serverns konfiguration:
config.envför Docker Compose, eller dina Helm-values för Kubernetes.
Skapa GitHub-appen
Öppna inställningarna för GitHub Apps
- För en organisation:
https://github.com/organizations/YOUR_ORG/settings/apps - För ett personligt konto:
https://github.com/settings/apps
Välj New GitHub App.
- För en organisation:
Fyll i registreringsformuläret
Fält Värde GitHub App name Valfritt unikt namn, till exempel Status200. Anteckna det exakt: det ärGITHUB_APP_NAME.Homepage URL https://your-oneuptime-domain.comCallback URL https://your-oneuptime-domain.com/api/github/auth/callbackRequest user authorization (OAuth) during installation På. Den är obligatorisk: se anmärkningen nedan. Setup URL https://your-oneuptime-domain.com/api/github/auth/callback, om GitHub låter dig ange en (se nedan).Redirect on update Valfritt. När någon har ändrat en installation på GitHub tar Status200 dem till Kod. Webhook URL https://your-oneuptime-domain.com/api/github/webhook, med webhooken satt till Active.Webhook secret En lång slumpmässig sträng. Anteckna den: den är GITHUB_APP_WEBHOOK_SECRET. Obligatorisk: Status200 avvisar osignerade webhooks, så omGITHUB_APP_WEBHOOK_SECRETinte är satt stoppas synkroniseringen av repositories i stället för att overifierade nyttolaster godtas.Enligt GitHubs dokumentation kan du med Request user authorization (OAuth) during installation påslagen inte ange en Setup URL: användare skickas i stället till Callback URL efter att de har installerat appen. Båda pekar på samma Status200-adress, så omdirigeringen hamnar rätt i båda fallen.
ViktigtVarför "Request user authorization (OAuth) during installation" är obligatorisk. Efter en installation omdirigerar GitHub tillbaka med ettinstallation_idi URL:en. Det numret ensamt bevisar ingenting om vem som äger installationen — vem som helst kan skriva in ett annat. Med det här alternativet påslaget returnerar GitHub också en OAuth-codeför engångsbruk, kopplad till GitHub-kontot som utförde installationen, som Status200 byter för att bekräfta att kontot verkligen administrerar installationen innan den ansluts till ditt projekt.Utan det vägrar Status200 att ansluta installationen, och dashboarden visar ett fel som ber dig slå på inställningen. Det är avsiktligt: att godta installations-ID:t overifierat skulle låta ett Status200-projekt göra anspråk på en annan organisations repositories.
Ange behörigheterna
Ange de här Repository permissions under Permissions & events:
Behörighet Åtkomst Vad Status200 använder den till Contents Read and write Läsa filer i repositoryt och pusha grenarna för AI-korrigeringarnas pull requests Pull requests Read and write Öppna och uppdatera pull requests och publicera granskningar Issues Read and write Publicera appens kommentarer — även på pull requests, vars konversation GitHub skickar via issues-API:t Checks Read-only Valfritt. Läsa CI-resultatet för korrigeringarnas pull requests. Utan den förblir deras CI-status overifierad Metadata Read-only Grundläggande metadata för repositoryt (krävs av GitHub) Det är Issues: Read and write som gör appen interaktiv. Utan den tas omnämnanden emot men misslyckas sedan tyst när appen försöker svara — GitHub levererar kommentarer i pull request-konversationer från issues-API:t, så den här enda behörigheten avgör varje svar som appen skriver. Se Arbeta med Status200 från GitHub.
Status200 behöver inga behörigheter på organisations- eller kontonivå.
Prenumerera på webhook-händelser
Status200 använder två uppsättningar händelser, och de gör olika jobb.
Synkronisering av repositories —
installationochinstallation_repositories. GitHub Apps tar emot dessa automatiskt; de håller uppsättningen anslutna repositories i takt med var appen är installerad.Den interaktiva appen — dessa måste du prenumerera på uttryckligen, och var och en möjliggör ett visst sätt att ge appen uppgifter:
Händelse Vad den möjliggör Issue comment @mention-kommandon i issues och i pull requestsIssues att tilldela appen en issue, och repositoryts utlösaretikett Pull request att be appen om en granskning, och produktionsgranskningar av pull requests när de öppnas och ändras Pull request review ett omnämnande i texten till en inskickad granskning Pull request review comment ett omnämnande i en inbäddad kommentar i diffen Om du inte prenumererar på någon av dessa ansluter GitHub-appen fortfarande repositories och öppnar fortfarande korrigeringarnas pull requests från Status200 — den svarar bara aldrig på något som skrivs i GitHub. Det är den vanligaste orsaken till ”boten ignorerar mig”. Se Arbeta med Status200 från GitHub för vilka kommandona är och vem som får ge dem.
Andra händelser (Push, Workflow run) kvitteras och ignoreras; att prenumerera på dem slår inte på aviseringar eller CI/CD-automatisering.
Välj var appen kan installeras
Välj under Where can this GitHub App be installed?:
- Only on this account - För privat/intern användning
- Any account - Om du vill att andra ska kunna installera din app
Skapa appen och anteckna dess ID:n
Välj Create GitHub App. GitHub öppnar appens inställningssida. Anteckna App ID högst upp på sidan och Client ID i avsnittet About.
Generera en client secret
Välj Generate a new client secret under Client secrets. Kopiera den direkt: GitHub visar den bara en gång.
Generera en privat nyckel
Välj Generate a private key under Private keys. GitHub laddar ned en
.pem-fil. Förvara den säkert: den låter Status200 autentisera sig som appen.
Konfigurera Status200
Docker Compose
config.env har ett värde per rad, så ange den privata nyckeln base64-kodad på en enda rad. Status200 avkodar den:
base64 < private-key.pem | tr -d '\n'GITHUB_APP_ID=YOUR_APP_ID
GITHUB_APP_NAME=YOUR_APP_NAME
GITHUB_APP_CLIENT_ID=YOUR_CLIENT_ID
GITHUB_APP_CLIENT_SECRET=YOUR_CLIENT_SECRET
GITHUB_APP_PRIVATE_KEY=YOUR_BASE64_ENCODED_PRIVATE_KEY
GITHUB_APP_WEBHOOK_SECRET=YOUR_WEBHOOK_SECRETTillämpa ändringen med npm run start, som återskapar containrarna. docker compose restart läser inte in config.env igen.
Kubernetes
gitHubApp:
id: "YOUR_APP_ID"
name: "YOUR_APP_NAME" # The exact name of your GitHub App
clientId: "YOUR_CLIENT_ID"
clientSecret: "YOUR_CLIENT_SECRET"
privateKey: "<BASE64_ENCODED_PRIVATE_KEY_CONTENT>"
webhookSecret: "YOUR_WEBHOOK_SECRET"privateKey tar också själva PEM-filen, som ett block över flera rader (privateKey: |). Tillämpa ändringen med helm upgrade.
När Status200 är igång igen visar Kod knappen Anslut GitHub i stället för GitHub App är inte konfigurerad på den här servern.
Referens för miljövariabler
Docker Compose (config.env) | Helm (values.yaml) | Värde |
|---|---|---|
GITHUB_APP_ID | gitHubApp.id | App ID. Används för att autentisera som appen. |
GITHUB_APP_NAME | gitHubApp.name | Appens namn. Visningsnamnet går bra, med mellanslag och versaler: installationslänken och appens @mention-handtag använder den slug som GitHub anger för appen, och byggs från det här namnet (med gemener, bindestreck i stället för mellanslag) bara när Status200 inte kan fråga GitHub. Utan det kan Kod inte ansluta repositorier. |
GITHUB_APP_CLIENT_ID | gitHubApp.clientId | Client ID. Behövs för att kontrollera vem som installerade appen. |
GITHUB_APP_CLIENT_SECRET | gitHubApp.clientSecret | Den client secret du genererade. Behövs tillsammans med client ID. |
GITHUB_APP_PRIVATE_KEY | gitHubApp.privateKey | Den privata nyckeln: PEM-filen, eller PEM-filen base64-kodad. |
GITHUB_APP_WEBHOOK_SECRET | gitHubApp.webhookSecret | Webhook-hemligheten. Varje webhook verifieras med den, och ingen godtas utan den. |
Alla sex är obligatoriska.
Anslut repositories
Starta anslutningen från Status200, inte från appens sida på GitHub: länken som Status200 skickar dig till GitHub med är det som knyter installationen till ditt projekt.
- Logga in på din Status200-dashboard
- Gå till Produkter > Kod
- Klicka på Anslut GitHub. Status200 tar dig till GitHub
- Välj organisationen eller kontot som appen ska installeras på, och välj vilka repositories den får komma åt: All repositories (alla nuvarande och framtida repositories) eller Only select repositories
- Klicka på Install
- GitHub skickar tillbaka dig till Kod, och varje repository i installationen importeras. Repositories som senare läggs till i eller tas bort från installationen hålls synkroniserade automatiskt.
När appen redan är installerad på kontot, för ett annat projekt eller direkt från GitHub, ansluts den inte av att installera den igen: GitHub öppnar installationens inställningar och skickar aldrig tillbaka dig. Klicka i stället på Anslut en befintlig installation under Anslut GitHub. Du loggar in på GitHub, och Status200 ansluter installationen som ditt GitHub-konto administrerar. Administrerar det mer än en, visar Kod dem: välj kontot vars repositories projektet ska använda.
Vem som kan ansluta. Anslutningen importerar installationens repositories till projektet och kräver därför behörighet att lägga till kodrepositorier: Project Owner, Project Admin, Project Member, Settings Admin, Settings Member, eller ett team med Create Code Repository. Ett team som blockerar behörigheten tar bort den. På Status200 Cloud kräver kodrepositorier Growth-abonnemanget eller högre. För alla andra är kortet låst och säger vad som krävs. På GitHub måste kontot som installerar eller ansluter appen administrera installationen: ägaren till ett personligt konto, eller någon med admin-behörighet till varje repository som installationen har åtkomst till, så som en ägare av organisationen har. Läsåtkomst till ett av dess repositories räcker inte.
Slutför inom 15 minuter, i samma webbläsare. Länken fungerar en gång, i 15 minuter, i webbläsaren som startade den. När GitHub skickar tillbaka dig kontrollerar Status200 behörigheten igen innan den importerar något.
Nätverksåtkomst för egenvärdade installationer
Trafikriktning och slutpunkter
| Trafik | Nödvändig åtkomst |
|---|---|
| Status200 till GitHub | DNS och utgående HTTPS på TCP 443 till api.github.com för token till GitHub-appen och API-anrop mot repositories, och till github.com för utbyte av OAuth-token och Git-åtgärder över HTTPS |
| GitHub till Status200 | Offentlig HTTPS på TCP 443 till POST /api/github/webhook för synkronisering av installationer och repository-åtkomst, och för den interaktiva appen |
| Användarens webbläsare till Status200 | Åtkomst till dashboarden och GET /api/github/auth/callback för omdirigeringar vid installation och auktorisering; de kan fortsatt nås via användarens VPN |
Callbacken är en omdirigering i webbläsaren, medan webhooken är en begäran från GitHubs servrar. En användares VPN-anslutning ger inte GitHub åtkomst till webhooken. Domänerna ovan täcker integrationens kärnbegäranden; ytterligare verktyg för repositories, nedladdningar, LFS eller paket kan kräva andra mål. De här inställningarna beskriver GitHub.com; att ändra brandväggen konfigurerar inte stöd för värdnamnet till en GitHub Enterprise Server.
Privata installationer och säkerhet för callbacks
Exponera /api/github/webhook via en offentlig gateway med offentlig DNS, ett offentligt betrott HTTPS-certifikat med fullständig kedja och en privat rutt till Status200s ingress. Tillåt inkommande TCP 443 till gatewayen och begränsa den offentliga vidarebefordringen till den här POST-rutten. Behåll dashboarden och webbläsarens callback på den privata ingressen om användarna når dem över VPN; med delad DNS kan samma värdnamn levereras internt och externt.
Ange HOST=status200.example.com och HTTP_PROTOCOL=https i config.env, eller host: status200.example.com och httpProtocol: https i Helm. Tillämpa konfigurationen och vänta tills Status200 har startat om. De här värdena genererar URL:er; de skapar inte DNS, TLS eller nätverksåtkomst. Om värdnamnet ändras uppdaterar du GitHub-appens URL:er för webhook, callback, setup och startsida.
Bevara metoden, den ursprungliga sökvägen, frågesträngen, bodyn, Content-Type, X-Hub-Signature-256, X-GitHub-Event och X-GitHub-Delivery. Bevara den offentliga värden och HTTPS-schemat via betrodda proxyhuvuden. Undanta webhooken från webbläsar-SSO, CAPTCHA och proxyns inloggningssidor. Låt GitHubs SSL-verifiering vara påslagen och konfigurera samma GITHUB_APP_WEBHOOK_SECRET i båda systemen: Status200 avvisar osignerade begäranden och kan inte validera webhooks utan den här hemligheten. Se GitHubs vägledning om validering av webhooks.
Om du också begränsar webhooks käll-IP:er använder du de aktuella hooks-intervallen från GitHubs Meta API och uppdaterar dem regelbundet; ersätt dem inte med intervallen för GitHub Actions-runners, och hoppa inte över signaturverifieringen. GitHub varnar för att deras adresser ändras och att den publicerade listan inte är fullständig.
Kontrollera åtkomsten och förstå begränsningarna
- Anslut en installation från Kod.
- Öppna Advanced i GitHub-appens inställningar och titta på Recent Deliveries. Leverera om en leverans och bekräfta att gatewayen vidarebefordrar den och att Status200 godtar den.
- Lägg till eller ta bort ett testrepository i installationen och kontrollera att listan över repositories i Status200 följer med.
GitHub dokumenterar felsökning av leveranser och kräver en 2xx-kvittering inom tio sekunder. En GET från webbläsaren mot webhooken testar inte en signerad POST.
Utan inkommande åtkomst kan auktorisering i webbläsaren och utgående API- och Git-åtgärder fungera, men webhooks kan inte nå Status200: borttagna installationer och ändringar i repository-åtkomst synkroniseras inte, och appen svarar aldrig på omnämnanden, tilldelningar eller granskningsbegäranden.
Inställningen för åtkomst till privata nätverk styr utgående begäranden till privata mål och gör inte webhooken nåbar för GitHub.
Felsökning
Anslutningen slutfördes inte
När GitHub skickar tillbaka dig och installationen inte anslöts visar Kod meddelandet GitHub anslöts inte, med en mening på ditt språk som säger varför. Resten av sidan laddas som vanligt, så du kan ansluta igen direkt där. Den visar aldrig vad GitHub själv svarade: det står i Status200-serverns logg, tillsammans med orsaken.
| Sidan säger | Vad du gör |
|---|---|
| "Den här anslutningslänken är ogiltig, har gått ut eller har redan använts. Börja om." | Länken fungerar en gång, i 15 minuter, i webbläsaren som startade den. Börja om från Kod och slutför på GitHub inom 15 minuter, i samma webbläsare. Att installera appen från dess sida på GitHub ansluter den inte till något projekt: en installation som gjorts där ansluter du med Anslut en befintlig installation. |
| "Du har inte behörighet att lägga till kodrepositories i det här projektet." | Anslutningen kräver behörighet att lägga till kodrepositorier (se Anslut repositories). Be en projektadministratör att ge den. Den kontrolleras igen när GitHub skickar tillbaka dig, så en behörighet som tagits bort under tiden avslutar också anslutningen här. |
| "Att ansluta GitHub kräver ...-abonnemanget." | På Status200 Cloud kräver kodrepositorier det abonnemang som meningen nämner. Uppgradera projektets abonnemang och anslut igen. |
| "GitHub bekräftade inte vem som installerade appen, så installationen kunde inte kontrolleras." | Slå på Request user authorization (OAuth) during installation i GitHub-appens inställningar (se Skapa GitHub-appen) och anslut igen. |
| "Status200 kunde inte bekräfta att ditt GitHub-konto kan hantera den här installationen." | GitHub-kontot som slutförde installationen administrerar den inte (se Anslut repositories för vem som gör det). Appen förblir installerad på GitHub, så be någon som administrerar installationen att ansluta den med Anslut en befintlig installation. |
| "GitHub skickade inte tillbaka någon installation." | När en medlem i organisationen begär appen i stället för att installera den måste en ägare av organisationen godkänna begäran först. Därefter ansluter någon som administrerar installationen den med Anslut en befintlig installation. |
| "Ditt GitHub-konto hanterar ännu ingen installation av appen." | GitHub-kontot du loggade in med administrerar ingen installation av appen (se Anslut repositories för vem som gör det). Om appen ännu inte är installerad på kontot installerar du den med Anslut GitHub. Om den är det ansluter du igen, inloggad på GitHub med ett konto som administrerar installationen, eller ber någon som gör det. |
| "GitHub App är inte konfigurerad på den här Status200-servern." | Ange både GITHUB_APP_CLIENT_ID och GITHUB_APP_CLIENT_SECRET (se Konfigurera Status200) och starta om Status200. |
| "Status200 kunde inte slutföra anslutningen. Försök igen." | GitHub svarade med ett fel, eller så misslyckades en begäran eller en skrivning under slutförandet. Status200-serverns logg säger vilken. Försök igen; om det fortsätter, kontrollera loggen och GitHub-appens inställningar. |
Andra problem
Kod säger "GitHub App är inte konfigurerad på den här servern"
GITHUB_APP_NAME är inte angiven. Ange appens exakta namn tillsammans med de fem andra värdena och starta om Status200.
Jag skickas inte tillbaka till Status200 efter att jag har installerat appen
Om appen redan är installerad på kontot öppnar GitHub i stället installationens inställningar och skickar inte tillbaka någon därifrån: anslut den med Anslut en befintlig installation. Annars kontrollerar du att appens Callback URL är https://your-oneuptime-domain.com/api/github/auth/callback, och likaså Setup URL om en sådan är angiven. Båda måste peka på samma slutpunkt /api/github/auth/callback, på värdnamnet i HOST.
GitHubs Recent Deliveries visar "Invalid webhook signature"
Webhook-hemligheten i GitHub-appen och GITHUB_APP_WEBHOOK_SECRET skiljer sig åt, GITHUB_APP_WEBHOOK_SECRET är inte angiven, eller så har en proxy ändrat begärandens body. Ange samma hemlighet på båda ställena, starta om Status200 och se till att gatewayen vidarebefordrar bodyn oförändrad.
Webhook-händelser tas inte emot
Kontrollera att webhook-URL:en kan nås offentligt över HTTPS, och titta sedan på Advanced > Recent Deliveries i GitHub-appens inställningar för varje försök och dess svar. Webhooks avvisas så länge GITHUB_APP_WEBHOOK_SECRET inte är angiven.
Repositories eller korrigeringsuppgifter misslyckas med ett autentiseringsfel
Status200 autentiserar sig som appen med GITHUB_APP_ID och GITHUB_APP_PRIVATE_KEY. Kontrollera att App ID är rätt och att nyckeln är den fullständiga PEM-filen, inklusive raderna BEGIN och END, eller den PEM-filen base64-kodad. Om appen har avinstallerats från GitHub ansluter du den igen från Kod.
Repositories saknas efter installationen
Kontrollera i installationens inställningar på GitHub vilka repositories den har åtkomst till. Repositories som du lägger till där importeras automatiskt, så länge webhooks når Status200.
Appen ignorerar omnämnanden i GitHub
Ge appen Issues: Read and write och prenumerera den på de interaktiva händelserna i Prenumerera på webhook-händelser. Omnämnanden matchar dessutom bara appens handtag, dess slug på GitHub: appens namn med gemener och bindestreck i stället för mellanslag. Status200 läser det från GitHub och bygger det från GITHUB_APP_NAME bara när det inte går.
Bästa praxis för säkerhet
- Rotera hemligheter regelbundet. Generera nya client secrets och privata nycklar med jämna mellanrum.
- Låt webhook-hemligheten vara angiven. Status200 avvisar webhooks som den inte kan verifiera.
- Begränsa åtkomsten till repositories. Ge installationen bara de repositories som behöver anslutas.
- Bevaka webhook-leveranser. Kontrollera regelbundet om det finns misslyckade leveranser eller misstänkt aktivitet.
- Håll privata nycklar utanför versionshanteringen.