Sari la conținut

Creează GitHub App

Acest ghid îți arată cum să îi dai serverului tău propria identitate GitHub. Durează aproximativ două minute, doar proprietarul serverului îl face și trebuie făcut o singură dată per server.

Pentru a-ți conecta propriul cont ulterior, vezi Configurează integrarea GitHub.

Dintr-o singură înregistrare ies două lucruri diferite, iar aplicația este cea care le face pe amândouă oneste:

Sarcină Ce răspunde la ea De ce contează
O persoană se autentifică Id-ul client al aplicației, prin fluxul de dispozitiv Obții un credențial care este al tău, pe server, pe fiecare dispozitiv — fără niciun token de lipit sau de rotit
Serverul acționează Id-ul aplicației + cheia privată → token de instalare Webhook-urile, interogarea periodică a PR-urilor și sincronizarea tichetelor nu mai depind de faptul că tokenul unui singur om mai este valid

Observă ce nu apare în acel tabel: un client secret. Fluxul de dispozitiv al GitHub se autentifică doar cu id-ul client — atât cererea de cod de dispozitiv, cât și interogarea tokenului — așa că nu există niciun secret de păstrat pentru autentificare.

Fără o aplicație proprie, primul funcționează totuși prin id-ul client livrat de construcție; al doilea revine la credențialul proprietarului serverului, așa că munca din fundal se sprijină pe cine a făcut prima configurare.

  • Ești proprietarul serverului — operațiunile providerApps.* sunt restricționate la el, iar cardul este invizibil pentru toți ceilalți
  • Un cont GitHub, sau o organizație în care poți crea aplicații
  • Nimic accesibil public: autentificarea este un flux de dispozitiv, deci serverul nu are nevoie de niciun port de intrare, tunel, URL de callback sau domeniu
  1. Mergi la github.com/settings/apps/new (pentru o organizație: Settings → Developer settings → GitHub Apps → New GitHub App)
  2. GitHub App name — orice; Control Center (yourname) este în regulă. Apare pe commit-urile și comentariile pe care le face serverul
  3. Homepage URL — orice, de ex. https://github.com/your-name
  4. Callback URL — lasă-l gol. Fluxul de dispozitiv nu are niciunul
  5. Bifează Enable Device Flow. Aceasta este singura setare fără de care autentificarea nu poate funcționa
  6. Debifează Webhook → Active dacă nu conectezi webhook-urile separat
  7. La Repository permissions, acordă cel puțin:
    • Contents: Read and write
    • Metadata: Read-only (obligatoriu)
    • Pull requests: Read and write
    • Issues: Read and write, dacă folosești GitHub Issues pentru tichete, și pentru căutarea de comentarii din conversațiile PR ale botului (vezi Vorbește cu Control Center dintr-un PR GitHub)
    • Checks: Read-only, pentru starea CI din pagina PR-ului
  8. La Where can this GitHub App be installed?, alege ce ți se potrivește — „Only on this account” este potrivit pentru un server personal
  9. Apasă Create GitHub App

Pe pagina aplicației, imediat după creare:

Valoare Unde
App ID Fila General, aproape de sus
Client ID Fila General, sub „Client secrets”
Private key Generate a private key — se descarcă un .pem

Fișierul cu cheia privată se descarcă o singură dată, iar GitHub nu îl mai afișează niciodată. Păstrează-l până îl lipești; poți oricând genera altul.

Un client secret este opțional și îți cumpără exact un lucru: dacă lași „Expire user authorization tokens” activat, el este cel care reînnoiește silențios tokenul cuiva, în loc să îi ceară să se autentifice din nou la fiecare opt ore. Autentificarea în sine nu îl folosește niciodată.

Configurarea mai simplă este să dezactivezi acea expirare, iar atunci nu mai este nevoie de niciun secret nicăieri. Dacă o păstrezi activată, generează un secret și lipește-l în Setări → Server → Autentificare unică (cardul Aplicații provider) — nu există nicio variabilă de mediu pentru el, și niciuna nu este inclusă în construcție, așa că rămâne pe serverul tău.

O aplicație înregistrată, dar neinstalată, poate autentifica oameni și nu poate citi nimic.

  1. Pe pagina aplicației, deschide Install App
  2. Instalează-o pe contul sau organizația ta
  3. Alege All repositories sau selectează depozitele pe care acest server ar trebui să le vadă
  1. Mergi la Setări → Server → Autentificare unică și derulează până la cardul Aplicații provider
  2. În blocul GitHub, setează fiecare câmp:
    • App id — ID-ul numeric al aplicației
    • Cheie privată — lipește tot fișierul .pem, inclusiv liniile BEGIN și END
    • Client id — de pe aceeași pagină
    • Client secret — doar dacă ai generat unul (pentru reînnoirea tokenului)
  3. Apasă Test

Cheia este analizată în momentul în care este salvată, așa că o lipire trunchiată sau cu format greșit este respinsă pe loc, în loc să eșueze într-o cerere din fundal ore mai târziu. Test merge mai departe și îl întreabă pe GitHub pe ce conturi este instalată aplicația — „salvat” și „funcționează” sunt afirmații diferite, iar doar a doua înseamnă că ceva va rula.

Punct de verificare: blocul GitHub afișează „Serverul poate acționa ca el însuși, iar oamenii se pot autentifica”, iar rândul GitHub din Setări → Spațiu de lucru → Profil și identitate → Găzduire de cod oferă acum Autentifică-te cu GitHub.

Pentru o instalare headless sau scriptată, serverul inițializează fiecare câmp din mediul înconjurător prima dată când nu are o valoare stocată:

Fereastră terminal
GITHUB_APP_ID=123456
GITHUB_APP_PRIVATE_KEY="$(cat control-center.private-key.pem)"
GITHUB_CLIENT_ID=Iv1.0123456789abcdef

Nu există opțiuni de linie de comandă pentru acestea — un secret de pe linia de comandă este citibil de orice proces de pe gazdă prin ps. Mediul înconjurător este singurul loc unde le poți configura, și are prioritate față de ce livrează construcția. .env.template este lista completă.

Pentru dezvoltarea locală, .env din rădăcina depozitului conține aceleași valori, iar aplicația desktop le transmite serverului pe care îl pornește. Pune cheia pe o singură linie acolo: o valoare din .env este o singură linie, iar \n dintre ghilimele duble se decodează într-o linie nouă.

GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEow…\n-----END RSA PRIVATE KEY-----"

GITHUB_APP_ID și GITHUB_APP_PRIVATE_KEY sunt aceleași nume pe care le citește deja brokerul de tokenuri al sandbox-ului, așa că o gazdă care a configurat tokenuri de agent cu granulație fină primește gratuit calea de autentificare. Inițializarea se face o singură dată per câmp — după aceea câștigă valoarea stocată, așa că editarea din Setări nu este anulată la următoarea repornire.

Linear nu are flux de dispozitiv, așa că autentificarea sa este un tur dus-întors prin browser și chiar are nevoie de un URL de callback — cardul Aplicații provider îți arată exact ce URL să înregistrezi.

  1. Creează o aplicație OAuth la linear.app/settings/api/applications/new
  2. Setează Callback URL la URL-ul pe care îl arată cardul, întocmai
  3. Lipește Client ID și Client secret în blocul Linear
  4. Opțional, adaugă o cheie API de spațiu de lucru — acesta este credențialul pe care serverul îl folosește pentru a sincroniza tichete când nu a cerut niciun om

Dialogul de autentificare spune că furnizorul nu a returnat niciun cod de dispozitiv

Secțiune intitulată „Dialogul de autentificare spune că furnizorul nu a returnat niciun cod de dispozitiv”

Enable Device Flow este dezactivat în aplicație. Activează-l la General și încearcă din nou.

Testul spune că datele de autentificare funcționează, dar aplicația nu este instalată nicăieri

Secțiune intitulată „Testul spune că datele de autentificare funcționează, dar aplicația nu este instalată nicăieri”

Înregistrarea și instalarea sunt pași separați. Deschide Install App pe pagina aplicației și instalează-o.

Lipește tot fișierul .pem, inclusiv liniile -----BEGIN și -----END. O cheie ed25519 sau EC nu poate fi folosită — GitHub Apps semnează cu RSA.

Aplicația nu este instalată pe contul care le deține, sau instalarea ei selectează alte depozite. Autentificarea proprie a membrului acordă doar ce are voie să vadă aplicația.