सामग्री पर जाएं
GitHub एकीकरण

GitHub एकीकरण

Markdown के रूप में देखें

अपने सेल्फ़-होस्टेड Status200 को अपने ख़ुद के GitHub App से GitHub से जोड़ें। Status200 से ऐप इंस्टॉल होने के बाद, इंस्टॉलेशन की रिपॉज़िटरी आपके प्रोजेक्ट में इम्पोर्ट होती हैं और सिंक रहती हैं, AI फ़िक्स टास्क pull request खोलते हैं, और आपकी टीम GitHub में ऐप का ज़िक्र करके उसे काम सौंप सकती है।

यह पेज उनके लिए है जो Status200 सर्वर चलाते हैं: आप ऐप एक बार बनाते हैं, और फिर हर प्रोजेक्ट उसे कोड से जोड़ता है।

यह कैसे काम करता है

इंस्टॉल करना GitHub पर नहीं, Status200 में शुरू होता है: Status200 जिस लिंक के साथ आपको GitHub पर भेजता है, वही इंस्टॉलेशन को आपके प्रोजेक्ट से जोड़ता है।

sequenceDiagram participant B as आपका ब्राउज़र participant O as Status200 participant G as GitHub B->>O: GitHub जोड़ें O-->>B: ऐप के इंस्टॉल<br/>पेज पर रीडायरेक्ट B->>G: ऐप इंस्टॉल और ऑथराइज़ करें G-->>B: /api/github/auth/callback<br/>पर रीडायरेक्ट B->>O: installation_id<br/>और एक बार का कोड O->>G: कोड बदलें,<br/>इंस्टॉलेशन जाँचें O->>G: इंस्टॉलेशन की<br/>रिपॉज़िटरी इम्पोर्ट करें G->>O: /api/github/webhook<br/>पर वेबहुक

GitHub App के इंस्टॉलेशन को किसी प्रोजेक्ट से जोड़ना

  • ब्राउज़र रीडायरेक्ट में इंस्टॉलेशन और एक बार इस्तेमाल होने वाला OAuth कोड होता है। Status200 यह पुष्टि करने के लिए कोड बदलता है कि ऐप इंस्टॉल करने वाला GitHub खाता उस इंस्टॉलेशन का प्रबंधन करता है, फिर उसकी रिपॉज़िटरी इम्पोर्ट करता है। पहले से मौजूद इंस्टॉलेशन इसके बजाय GitHub में साइन इन करके जोड़ा जाता है: तब कोड Status200 को बताता है कि वह खाता किन इंस्टॉलेशन का प्रबंधन करता है।
  • वेबहुक रिपॉज़िटरी की सूची सिंक रखते हैं और ऐप को काम सौंपते हैं: मेंशन, असाइनमेंट, ट्रिगर लेबल और रिव्यू अनुरोध। GitHub हर वेबहुक को webhook secret से साइन करता है, और Status200 वह हर वेबहुक अस्वीकार करता है जिसे वह सत्यापित नहीं कर पाता।

शुरू करने से पहले

  • एक GitHub खाता जो उस संगठन या उपयोगकर्ता के लिए GitHub Apps बना सके जिस पर ऐप इंस्टॉल होगा। किसी संगठन पर इंस्टॉल करने के लिए आपको उसका मालिक होना चाहिए, या किसी मालिक से अनुरोध स्वीकृत कराना चाहिए।
  • Status200 के लिए एक सार्वजनिक HTTPS होस्टनेम जिस तक GitHub वेबहुक के लिए पहुँच सके। देखें नेटवर्क एक्सेस।
  • सर्वर के कॉन्फ़िगरेशन तक पहुँच: Docker Compose के लिए config.env, या Kubernetes के लिए आपकी Helm values।

GitHub App बनाएँ

  1. GitHub App की सेटिंग्स खोलें

    • किसी संगठन के लिए: https://github.com/organizations/YOUR_ORG/settings/apps
    • किसी निजी खाते के लिए: https://github.com/settings/apps

    New GitHub App चुनें।

  2. रजिस्ट्रेशन फ़ॉर्म भरें

    फ़ील्डमान
    GitHub App nameकोई भी अनोखा नाम, जैसे Status200। इसे ठीक-ठीक नोट करें: यही GITHUB_APP_NAME है।
    Homepage URLhttps://your-oneuptime-domain.com
    Callback URLhttps://your-oneuptime-domain.com/api/github/auth/callback
    Request user authorization (OAuth) during installationचालू। यह ज़रूरी है: नीचे दी गई टिप्पणी देखें।
    Setup URLअगर GitHub दर्ज करने दे, तो https://your-oneuptime-domain.com/api/github/auth/callback (नीचे देखें)।
    Redirect on updateवैकल्पिक। GitHub पर कोई इंस्टॉलेशन बदलने के बाद, Status200 उस व्यक्ति को कोड पर ले जाता है।
    Webhook URLhttps://your-oneuptime-domain.com/api/github/webhook, वेबहुक को Active रखते हुए।
    Webhook secretएक लंबी रैंडम स्ट्रिंग। इसे नोट करें: यही GITHUB_APP_WEBHOOK_SECRET है। ज़रूरी: Status200 बिना साइन वाले वेबहुक अस्वीकार करता है, इसलिए GITHUB_APP_WEBHOOK_SECRET सेट न करने पर असत्यापित पेलोड स्वीकार होने के बजाय रिपॉज़िटरी का सिंक रुक जाता है।

    GitHub के दस्तावेज़ों के अनुसार, Request user authorization (OAuth) during installation चालू होने पर आप Setup URL दर्ज नहीं कर सकते: ऐप इंस्टॉल करने के बाद उपयोगकर्ता इसके बजाय Callback URL पर भेजे जाते हैं। दोनों एक ही Status200 पते की ओर इशारा करते हैं, इसलिए रीडायरेक्ट हर हाल में सही जगह पहुँचता है।

    महत्वपूर्ण
    "Request user authorization (OAuth) during installation" क्यों ज़रूरी है। इंस्टॉल के बाद, GitHub URL में एक installation_id के साथ वापस रीडायरेक्ट करता है। सिर्फ़ यह संख्या इस बारे में कुछ साबित नहीं करती कि इंस्टॉलेशन का मालिक कौन है — कोई भी दूसरी संख्या टाइप कर सकता है। यह विकल्प चालू होने पर GitHub एक बार इस्तेमाल होने वाला OAuth code भी लौटाता है, जो इंस्टॉल करने वाले GitHub खाते से बँधा होता है, और Status200 उसे बदलकर पुष्टि करता है कि वह खाता सचमुच उस इंस्टॉलेशन का प्रबंधन करता है, उसके बाद ही उसे आपके प्रोजेक्ट से जोड़ता है।

    इसके बिना Status200 इंस्टॉलेशन जोड़ने से इनकार करता है, और डैशबोर्ड एक त्रुटि दिखाता है जो आपसे यह सेटिंग चालू करने को कहती है। यह जानबूझकर है: इंस्टॉलेशन ID को बिना सत्यापन के मान लेने से एक Status200 प्रोजेक्ट किसी दूसरे संगठन की रिपॉज़िटरी पर दावा कर सकता था।

  3. अनुमतियाँ सेट करें

    Permissions & events के नीचे ये Repository permissions सेट करें:

    अनुमतिएक्सेसStatus200 इसका किस लिए इस्तेमाल करता है
    ContentsRead and writeरिपॉज़िटरी की फ़ाइलें पढ़ना, और AI फ़िक्स pull request की ब्रांच push करना
    Pull requestsRead and writepull request खोलना और अपडेट करना, और रिव्यू पोस्ट करना
    IssuesRead and writeऐप की टिप्पणियाँ पोस्ट करना — pull request पर भी, जिनकी बातचीत GitHub issues API से होकर भेजता है
    ChecksRead-onlyवैकल्पिक। फ़िक्स pull request का CI नतीजा पढ़ना। इसके बिना उनका CI स्टेटस असत्यापित रहता है
    MetadataRead-onlyरिपॉज़िटरी का बुनियादी मेटाडेटा (GitHub के लिए ज़रूरी)

    ऐप को इंटरैक्टिव Issues: Read and write ही बनाता है। इसके बिना मेंशन मिल तो जाते हैं, पर ऐप जवाब देने की कोशिश करते ही चुपचाप विफल हो जाते हैं — GitHub pull request की बातचीत की टिप्पणियाँ issues API से देता है, इसलिए ऐप का हर जवाब इसी एक अनुमति पर निर्भर है। देखें GitHub से Status200 के साथ काम करना।

    Status200 को संगठन या खाते की कोई अनुमति नहीं चाहिए।

  4. वेबहुक इवेंट सब्सक्राइब करें

    Status200 इवेंट के दो समूह इस्तेमाल करता है, और दोनों अलग-अलग काम करते हैं।

    रिपॉज़िटरी सिंक — installation और installation_repositories। GitHub Apps को ये अपने आप मिलते हैं; ये जुड़ी हुई रिपॉज़िटरी के सेट को उससे मेल में रखते हैं जहाँ ऐप इंस्टॉल है।

    इंटरैक्टिव ऐप — इन्हें स्पष्ट रूप से सब्सक्राइब करना होता है, और हर इवेंट ऐप को काम सौंपने का एक ख़ास तरीक़ा चालू करता है:

    इवेंटक्या संभव बनाता है
    Issue commentissue और pull request पर @mention कमांड
    Issuesकिसी issue को ऐप को असाइन करना, और रिपॉज़िटरी का ट्रिगर लेबल
    Pull requestऐप से रिव्यू माँगना, और पुल रिक्वेस्ट के खुलने और बदलने पर उनकी प्रोडक्शन समीक्षा
    Pull request reviewसबमिट किए गए रिव्यू के टेक्स्ट में लिखा मेंशन
    Pull request review commentdiff की किसी इनलाइन टिप्पणी में मेंशन

    अगर इनमें से कोई भी सब्सक्राइब नहीं है, तब भी GitHub App रिपॉज़िटरी जोड़ता है और Status200 से फ़िक्स pull request खोलता है — बस GitHub में लिखी किसी भी बात का जवाब कभी नहीं देता। "बॉट मुझे अनदेखा करता है" की यही सबसे आम वजह है। कमांड क्या हैं और उन्हें कौन दे सकता है, इसके लिए GitHub से Status200 के साथ काम करना देखें।

    बाक़ी इवेंट (Push, Workflow run) स्वीकार करके अनदेखे कर दिए जाते हैं; इन्हें सब्सक्राइब करने से सूचनाएँ या CI/CD ऑटोमेशन चालू नहीं होते।

  5. चुनें कि ऐप कहाँ इंस्टॉल हो सकता है

    Where can this GitHub App be installed? के नीचे चुनें:

    • Only on this account - निजी/अंदरूनी इस्तेमाल के लिए
    • Any account - अगर आप चाहते हैं कि दूसरे भी आपका ऐप इंस्टॉल करें
  6. ऐप बनाएँ और उसकी ID नोट करें

    Create GitHub App चुनें। GitHub ऐप का सेटिंग्स पेज खोलता है। पेज के ऊपर दी गई App ID और About सेक्शन में दी गई Client ID नोट करें।

  7. client secret बनाएँ

    Client secrets के नीचे Generate a new client secret चुनें। इसे तुरंत कॉपी करें: GitHub इसे सिर्फ़ एक बार दिखाता है।

  8. प्राइवेट की बनाएँ

    Private keys के नीचे Generate a private key चुनें। GitHub एक .pem फ़ाइल डाउनलोड करता है। इसे सुरक्षित रखें: इसी से Status200 ऐप के रूप में प्रमाणीकरण करता है।

Status200 कॉन्फ़िगर करें

Docker Compose

config.env में हर पंक्ति में एक मान होता है, इसलिए प्राइवेट की को base64 में एन्कोड करके एक ही पंक्ति में दें। Status200 उसे डीकोड करता है:

Bash
base64 < private-key.pem | tr -d '\n'
config.envBash
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_SECRET

बदलाव npm run start से लागू करें, जो कंटेनर फिर से बनाता है। docker compose restart config.env दोबारा नहीं पढ़ता।

Kubernetes

values.yamlYAML
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 में PEM को सीधे भी, कई पंक्तियों वाले ब्लॉक (privateKey: |) के रूप में दिया जा सकता है। बदलाव helm upgrade से लागू करें।

Status200 के वापस चालू होने पर, कोड में इस सर्वर पर GitHub App कॉन्फ़िगर नहीं है की जगह GitHub जोड़ें दिखता है।

एनवायरनमेंट वेरिएबल संदर्भ

Docker Compose (config.env)Helm (values.yaml)मान
GITHUB_APP_IDgitHubApp.idApp ID। ऐप के रूप में प्रमाणीकरण के लिए।
GITHUB_APP_NAMEgitHubApp.nameऐप का नाम। स्पेस और बड़े अक्षरों समेत डिस्प्ले नाम ठीक है: इंस्टॉल लिंक और ऐप का @mention हैंडल वह slug इस्तेमाल करते हैं जो GitHub ऐप के लिए बताता है, और इस नाम से (छोटे अक्षरों में, स्पेस की जगह हाइफ़न) तभी बनते हैं जब Status200 GitHub से पूछ नहीं पाता। इसके बिना कोड रिपॉजिटरी कनेक्ट नहीं कर सकता।
GITHUB_APP_CLIENT_IDgitHubApp.clientIdClient ID। यह जाँचने के लिए ज़रूरी कि ऐप किसने इंस्टॉल किया।
GITHUB_APP_CLIENT_SECRETgitHubApp.clientSecretआपका बनाया client secret। client ID के साथ ज़रूरी।
GITHUB_APP_PRIVATE_KEYgitHubApp.privateKeyप्राइवेट की: PEM, या base64 में एन्कोड किया PEM।
GITHUB_APP_WEBHOOK_SECRETgitHubApp.webhookSecretwebhook secret। हर वेबहुक इसी से सत्यापित होता है, और इसके बिना कोई भी स्वीकार नहीं होता।

छहों ज़रूरी हैं।

रिपॉज़िटरी जोड़ें

कनेक्शन GitHub पर ऐप के पेज से नहीं, Status200 से शुरू करें: Status200 जिस लिंक के साथ आपको GitHub पर भेजता है, वही इंस्टॉलेशन को आपके प्रोजेक्ट से जोड़ता है।

  1. अपने Status200 डैशबोर्ड में लॉग इन करें
  2. उत्पाद > कोड पर जाएँ
  3. GitHub जोड़ें पर क्लिक करें। Status200 आपको GitHub पर ले जाता है
  4. वह संगठन या खाता चुनें जिस पर ऐप इंस्टॉल करना है, और चुनें कि वह किन रिपॉज़िटरी तक पहुँच सकता है: All repositories (हर मौजूदा और भविष्य की रिपॉज़िटरी) या Only select repositories
  5. Install पर क्लिक करें
  6. GitHub आपको कोड पर वापस भेजता है, और इंस्टॉलेशन की हर रिपॉज़िटरी इम्पोर्ट हो जाती है। बाद में इंस्टॉलेशन में जोड़ी या उससे हटाई गई रिपॉज़िटरी अपने आप सिंक रहती हैं।

जब ऐप उस खाते पर पहले से इंस्टॉल हो, किसी दूसरे प्रोजेक्ट के लिए या सीधे GitHub से, तो उसे फिर से इंस्टॉल करने से वह नहीं जुड़ता: GitHub इंस्टॉलेशन की सेटिंग्स खोलता है और आपको कभी वापस नहीं भेजता। इसके बजाय GitHub जोड़ें के नीचे मौजूदा इंस्टॉलेशन कनेक्ट करें पर क्लिक करें। आप GitHub में साइन इन करते हैं, और Status200 वह इंस्टॉलेशन जोड़ देता है जिसका प्रबंधन आपका GitHub खाता करता है। अगर वह एक से ज़्यादा का प्रबंधन करता है, तो कोड उनकी सूची दिखाता है: वह खाता चुनें जिसकी रिपॉज़िटरी प्रोजेक्ट को इस्तेमाल करनी हैं।

कौन जोड़ सकता है। जोड़ने से इंस्टॉलेशन की रिपॉज़िटरी प्रोजेक्ट में इम्पोर्ट होती हैं, इसलिए इसके लिए कोड रिपॉज़िटरी जोड़ने की अनुमति चाहिए: Project Owner, Project Admin, Project Member, Settings Admin, Settings Member, या Create Code Repository वाली कोई टीम। जो टीम यह अनुमति ब्लॉक करती है, वह इसे छीन लेती है। Status200 Cloud पर कोड रिपॉज़िटरी के लिए Growth प्लान या उससे ऊपर चाहिए। बाक़ी सबके लिए कार्ड लॉक रहता है और बताता है कि क्या चाहिए। GitHub पर, ऐप इंस्टॉल करने या जोड़ने वाले खाते को उस इंस्टॉलेशन का प्रबंधन करना चाहिए: यानी निजी खाते का मालिक, या कोई ऐसा व्यक्ति जिसके पास उन सभी रिपॉज़िटरी पर admin अधिकार हो जिन तक इंस्टॉलेशन पहुँच सकता है, जैसा संगठन के मालिक के पास होता है। उसकी किसी एक रिपॉज़िटरी पर सिर्फ़ पढ़ने की पहुँच काफ़ी नहीं है।

15 मिनट के भीतर, उसी ब्राउज़र में पूरा करें। लिंक एक बार, 15 मिनट तक, उसी ब्राउज़र में काम करता है जिसमें वह शुरू हुआ था। GitHub के वापस भेजने पर, Status200 कुछ भी इम्पोर्ट करने से पहले अनुमति फिर से जाँचता है।

सेल्फ़-होस्टेड डिप्लॉयमेंट के लिए नेटवर्क एक्सेस

ट्रैफ़िक की दिशा और एंडपॉइंट

ट्रैफ़िकज़रूरी एक्सेस
Status200 से GitHubGitHub App टोकन और रिपॉज़िटरी API कॉल के लिए DNS और api.github.com तक TCP 443 पर आउटबाउंड HTTPS, और OAuth टोकन एक्सचेंज और HTTPS Git ऑपरेशन के लिए github.com
GitHub से Status200इंस्टॉलेशन और रिपॉज़िटरी एक्सेस के सिंक, और इंटरैक्टिव ऐप के लिए POST /api/github/webhook तक TCP 443 पर सार्वजनिक HTTPS
उपयोगकर्ता के ब्राउज़र से Status200डैशबोर्ड एक्सेस और इंस्टॉलेशन/ऑथराइज़ेशन रीडायरेक्ट के लिए GET /api/github/auth/callback; ये उपयोगकर्ता के VPN के ज़रिए ही पहुँच योग्य रह सकते हैं

callback एक ब्राउज़र रीडायरेक्ट है, जबकि वेबहुक GitHub के सर्वरों से आने वाला अनुरोध है। किसी उपयोगकर्ता का VPN कनेक्शन GitHub को वेबहुक तक पहुँच नहीं देता। ऊपर के डोमेन एकीकरण के मुख्य अनुरोधों को कवर करते हैं; रिपॉज़िटरी के अतिरिक्त टूल, डाउनलोड, LFS या पैकेज के लिए दूसरे गंतव्य चाहिए हो सकते हैं। ये सेटिंग्स GitHub.com के बारे में हैं; फ़ायरवॉल बदलने से GitHub Enterprise Server होस्टनेम का समर्थन कॉन्फ़िगर नहीं होता।

निजी डिप्लॉयमेंट और कॉलबैक की सुरक्षा

/api/github/webhook को एक सार्वजनिक गेटवे से प्रकाशित करें, जिसमें सार्वजनिक DNS, पूरी चेन वाला सार्वजनिक रूप से भरोसेमंद HTTPS सर्टिफ़िकेट और Status200 के ingress तक एक निजी रूट हो। गेटवे तक इनबाउंड TCP 443 की अनुमति दें और सार्वजनिक फ़ॉरवर्डिंग को इसी POST रूट तक सीमित रखें। अगर उपयोगकर्ता VPN से पहुँचते हैं, तो डैशबोर्ड और ब्राउज़र callback को निजी ingress पर रखें; स्प्लिट DNS एक ही होस्टनेम को अंदर और बाहर दोनों तरफ़ दे सकता है।

config.env में HOST=status200.example.com और HTTP_PROTOCOL=https सेट करें, या Helm में host: status200.example.com और httpProtocol: https। कॉन्फ़िगरेशन लागू करें और Status200 के रीस्टार्ट होने तक रुकें। ये मान URL बनाते हैं; ये DNS, TLS या नेटवर्क एक्सेस उपलब्ध नहीं कराते। अगर होस्टनेम बदलता है, तो GitHub App के webhook, callback, setup और homepage URL अपडेट करें।

मेथड, मूल पाथ, क्वेरी स्ट्रिंग, बॉडी, Content-Type, X-Hub-Signature-256, X-GitHub-Event और X-GitHub-Delivery बनाए रखें। भरोसेमंद प्रॉक्सी हेडर के ज़रिए सार्वजनिक होस्ट और HTTPS स्कीम बनाए रखें। वेबहुक को ब्राउज़र SSO, CAPTCHA और प्रॉक्सी के लॉगिन पेजों से छूट दें। GitHub का SSL सत्यापन चालू रखें और दोनों सिस्टम में एक ही GITHUB_APP_WEBHOOK_SECRET कॉन्फ़िगर करें: Status200 बिना साइन वाले अनुरोध अस्वीकार करता है और इस सीक्रेट के बिना वेबहुक सत्यापित नहीं कर सकता। GitHub का वेबहुक सत्यापन मार्गदर्शन देखें।

अगर आप वेबहुक के स्रोत IP भी सीमित करते हैं, तो GitHub की Meta API से मौजूदा hooks रेंज इस्तेमाल करें और उन्हें नियमित रूप से रीफ़्रेश करें; उनकी जगह GitHub Actions रनर की रेंज न रखें और सिग्नेचर सत्यापन न छोड़ें। GitHub चेतावनी देता है कि उसके पते बदलते रहते हैं और प्रकाशित सूची पूरी नहीं है।

एक्सेस सत्यापित करें और सीमाएँ समझें

  1. कोड से एक इंस्टॉलेशन जोड़ें।
  2. GitHub App की सेटिंग्स में Advanced खोलें और Recent Deliveries देखें। किसी डिलीवरी को फिर से भेजें और पुष्टि करें कि गेटवे उसे आगे भेजता है और Status200 उसे स्वीकार करता है।
  3. इंस्टॉलेशन में कोई टेस्ट रिपॉज़िटरी जोड़ें या हटाएँ, और जाँचें कि Status200 में रिपॉज़िटरी की सूची भी बदलती है।

GitHub डिलीवरी निदान दस्तावेज़ करता है और दस सेकंड के भीतर 2xx पुष्टि माँगता है। ब्राउज़र से वेबहुक पर भेजा गया GET किसी साइन किए गए POST की जाँच नहीं करता।

चेतावनी

इनबाउंड एक्सेस के बिना ब्राउज़र ऑथराइज़ेशन और आउटबाउंड API और Git ऑपरेशन काम कर सकते हैं, लेकिन वेबहुक Status200 तक नहीं पहुँच सकते: हटाए गए इंस्टॉलेशन और रिपॉज़िटरी एक्सेस के बदलाव सिंक नहीं होते, और ऐप मेंशन, असाइनमेंट या रिव्यू अनुरोधों का कभी जवाब नहीं देता।

निजी नेटवर्क पहुँच सेटिंग निजी गंतव्यों को जाने वाले आउटबाउंड अनुरोधों को नियंत्रित करती है और वेबहुक को GitHub के लिए पहुँच योग्य नहीं बनाती।

समस्या निवारण

कनेक्ट करना पूरा नहीं हुआ

जब GitHub आपको वापस भेजता है और इंस्टॉलेशन नहीं जुड़ा होता, तो कोड में GitHub कनेक्ट नहीं हुआ दिखता है, साथ में आपकी भाषा में एक वाक्य जो वजह बताता है। पेज का बाक़ी हिस्सा हमेशा की तरह लोड होता है, इसलिए आप वहीं फिर से जोड़ सकते हैं। GitHub ने ख़ुद क्या जवाब दिया, यह पेज कभी नहीं दिखाता: वह वजह के साथ Status200 सर्वर के लॉग में होता है।

पेज कहता हैक्या करें
"यह कनेक्शन लिंक अमान्य है, इसकी समय-सीमा समाप्त हो गई है, या इसका पहले ही उपयोग हो चुका है। कृपया फिर से शुरू करें।"लिंक एक बार, 15 मिनट तक, उसी ब्राउज़र में काम करता है जिसमें वह शुरू हुआ था। कोड से फिर से शुरू करें और उसी ब्राउज़र में 15 मिनट के भीतर GitHub पर पूरा करें। GitHub पर ऐप के पेज से इंस्टॉल करने से वह किसी प्रोजेक्ट से नहीं जुड़ता: वहाँ बना इंस्टॉलेशन जोड़ने के लिए मौजूदा इंस्टॉलेशन कनेक्ट करें पर क्लिक करें।
"आपको इस प्रोजेक्ट में कोड रिपॉजिटरी जोड़ने की अनुमति नहीं है।"जोड़ने के लिए कोड रिपॉज़िटरी जोड़ने की अनुमति चाहिए (देखें रिपॉज़िटरी जोड़ें)। किसी प्रोजेक्ट एडमिन से यह अनुमति देने को कहें। GitHub के वापस भेजने पर यह फिर से जाँची जाती है, इसलिए बीच में हटाई गई अनुमति भी यहाँ कनेक्शन ख़त्म कर देती है।
"GitHub जोड़ने के लिए ... प्लान चाहिए।"Status200 Cloud पर कोड रिपॉज़िटरी के लिए वह प्लान चाहिए जिसका नाम वाक्य में है। प्रोजेक्ट का प्लान अपग्रेड करें, फिर से जोड़ें।
"GitHub ने यह पुष्टि नहीं की कि ऐप किसने इंस्टॉल किया, इसलिए इंस्टॉलेशन की जाँच नहीं हो सकी।"GitHub App की सेटिंग्स में Request user authorization (OAuth) during installation चालू करें (देखें GitHub App बनाएँ), फिर से जोड़ें।
"Status200 यह पुष्टि नहीं कर सका कि आपका GitHub खाता इस इंस्टॉलेशन को प्रबंधित कर सकता है।"इंस्टॉलेशन पूरा करने वाला GitHub खाता उसका प्रबंधन नहीं करता (कौन करता है, यह रिपॉज़िटरी जोड़ें में देखें)। ऐप GitHub पर इंस्टॉल ही रहता है, इसलिए इंस्टॉलेशन का प्रबंधन करने वाले किसी व्यक्ति से कहें कि वह उसे मौजूदा इंस्टॉलेशन कनेक्ट करें से जोड़ दे।
"GitHub ने कोई इंस्टॉलेशन वापस नहीं भेजा।"जब संगठन का कोई सदस्य ऐप इंस्टॉल करने के बजाय उसका अनुरोध करता है, तो संगठन के किसी मालिक को पहले अनुरोध स्वीकृत करना होता है। स्वीकृति के बाद, इंस्टॉलेशन का प्रबंधन करने वाला कोई व्यक्ति उसे मौजूदा इंस्टॉलेशन कनेक्ट करें से जोड़ता है।
"आपका GitHub खाता अभी तक ऐप के किसी इंस्टॉलेशन को प्रबंधित नहीं करता है।"जिस GitHub खाते से आपने साइन इन किया, वह ऐप के किसी इंस्टॉलेशन का प्रबंधन नहीं करता (कौन करता है, यह रिपॉज़िटरी जोड़ें में देखें)। अगर ऐप अभी उस खाते पर इंस्टॉल नहीं है, तो उसे GitHub जोड़ें से इंस्टॉल करें। अगर है, तो इंस्टॉलेशन का प्रबंधन करने वाले खाते से GitHub में साइन इन करके फिर से जोड़ें, या ऐसे किसी व्यक्ति से कहें।
"इस Status200 सर्वर पर GitHub App सेट अप नहीं है।"GITHUB_APP_CLIENT_ID और GITHUB_APP_CLIENT_SECRET दोनों सेट करें (देखें Status200 कॉन्फ़िगर करें) और Status200 को रीस्टार्ट करें।
"Status200 कनेक्ट करना पूरा नहीं कर सका। कृपया फिर से कोशिश करें।"GitHub ने त्रुटि के साथ जवाब दिया, या पूरा करते समय कोई अनुरोध या राइट विफल हुआ। Status200 सर्वर का लॉग बताता है कि कौन-सा। फिर से कोशिश करें; अगर यह होता रहे, तो लॉग और GitHub App की सेटिंग्स जाँचें।

अन्य समस्याएँ

कोड कहता है "इस सर्वर पर GitHub App कॉन्फ़िगर नहीं है"

GITHUB_APP_NAME सेट नहीं है। इसे बाक़ी पाँच मानों के साथ ऐप के सटीक नाम पर सेट करें और Status200 को रीस्टार्ट करें।

ऐप इंस्टॉल करने के बाद मुझे Status200 पर वापस नहीं भेजा जाता

अगर ऐप उस खाते पर पहले से इंस्टॉल है, तो GitHub इसके बजाय इंस्टॉलेशन की सेटिंग्स खोलता है और वहाँ से किसी को वापस नहीं भेजता: उसे मौजूदा इंस्टॉलेशन कनेक्ट करें से जोड़ें। नहीं तो जाँचें कि ऐप का Callback URL https://your-oneuptime-domain.com/api/github/auth/callback है, और अगर Setup URL सेट है तो वह भी। दोनों को HOST वाले होस्टनेम पर एक ही /api/github/auth/callback एंडपॉइंट की ओर इशारा करना चाहिए।

GitHub की Recent Deliveries में "Invalid webhook signature" दिखता है

GitHub App का webhook secret और GITHUB_APP_WEBHOOK_SECRET अलग हैं, GITHUB_APP_WEBHOOK_SECRET सेट नहीं है, या किसी प्रॉक्सी ने अनुरोध की बॉडी बदल दी। दोनों में एक ही सीक्रेट सेट करें, Status200 को रीस्टार्ट करें, और पक्का करें कि गेटवे बॉडी बिना बदले आगे भेजता है।

वेबहुक इवेंट नहीं मिल रहे

जाँचें कि वेबहुक URL HTTPS पर सार्वजनिक रूप से पहुँच योग्य है, फिर हर कोशिश और उसके जवाब के लिए GitHub App की सेटिंग्स में Advanced > Recent Deliveries देखें। जब तक GITHUB_APP_WEBHOOK_SECRET सेट नहीं है, वेबहुक अस्वीकार होते हैं।

रिपॉज़िटरी या फ़िक्स टास्क प्रमाणीकरण त्रुटि के साथ विफल होते हैं

Status200 GITHUB_APP_ID और GITHUB_APP_PRIVATE_KEY से ऐप के रूप में प्रमाणीकरण करता है। जाँचें कि App ID सही है और की पूरा PEM है, अपनी BEGIN और END पंक्तियों समेत, या वही PEM base64 में एन्कोड किया हुआ। अगर ऐप GitHub से अनइंस्टॉल हो गया था, तो उसे कोड से फिर से जोड़ें।

इंस्टॉलेशन के बाद रिपॉज़िटरी ग़ायब हैं

GitHub पर इंस्टॉलेशन की सेटिंग्स में जाँचें कि इंस्टॉलेशन किन रिपॉज़िटरी तक पहुँच सकता है। वहाँ जोड़ी गई रिपॉज़िटरी अपने आप इम्पोर्ट होती हैं, बशर्ते वेबहुक Status200 तक पहुँचें।

ऐप GitHub में मेंशन को अनदेखा करता है

ऐप को Issues: Read and write दें और उसे वेबहुक इवेंट सब्सक्राइब करें के इंटरैक्टिव इवेंट से सब्सक्राइब करें। साथ ही, मेंशन सिर्फ़ ऐप के हैंडल, यानी GitHub पर उसके slug से मेल खाते हैं: ऐप का नाम छोटे अक्षरों में, स्पेस की जगह हाइफ़न के साथ। Status200 इसे GitHub से पढ़ता है, और पढ़ न पाने पर ही इसे GITHUB_APP_NAME से बनाता है।

सुरक्षा के सर्वोत्तम तरीक़े

  • सीक्रेट नियमित रूप से बदलें। समय-समय पर नए client secret और प्राइवेट की बनाएँ।
  • webhook secret सेट रखें। Status200 ऐसे वेबहुक अस्वीकार करता है जिन्हें वह सत्यापित नहीं कर पाता।
  • रिपॉज़िटरी एक्सेस सीमित रखें। इंस्टॉलेशन को सिर्फ़ वही रिपॉज़िटरी दें जिन्हें जोड़ना ज़रूरी है।
  • वेबहुक डिलीवरी पर नज़र रखें। विफल डिलीवरी या संदिग्ध गतिविधि के लिए नियमित रूप से जाँच करें।
  • प्राइवेट की को वर्ज़न कंट्रोल से बाहर रखें।

अगले कदम