Orbit

Deploy Hooks के माध्यम से Deployments को ट्रिगर करना

A deploy hook is a secret URL that queues a new deployment when something sends it an HTTP POST. There is no authentication header: the secrecy of the URL is the authentication. Use hooks to let a…

डिप्लॉय हुक्स के माध्यम से डिप्लॉयमेंट ट्रिगर करना

डिप्लॉय हुक एक गुप्त URL है जो किसी चीज़ के द्वारा HTTP POST भेजे जाने पर एक नई डिप्लॉयमेंट को कतार में डालता है। कोई प्रमाणीकरण हेडर नहीं होता: URL की गोपनीयता ही प्रमाणीकरण है। हुक्स का उपयोग करके एक हेडलेस CMS, एक cron जॉब, एक CI पाइपलाइन या किसी अन्य वेबहुक को git push के बिना आपके प्रोजेक्ट को फिर से बनाने दें।

डिप्लॉय हुक्स कहाँ खोजें

हुक्स के पास अपना टैब है: Kapsule Orbit में अपना प्रोजेक्ट खोलें और Hooks पर क्लिक करें, /orbit/<project-id>/hooks पर।

वही Deploy hooks पैनल प्रोजेक्ट के Settings टैब के मध्य में भी दिखाई देता है, इसलिए आप उन्हें किसी भी स्थान से प्रबंधित कर सकते हैं।

Kapsule Orbit में डिप्लॉय हुक्स पैनल

डिप्लॉय हुक बनाना

  1. Kapsule Orbit खोलें, फिर अपना प्रोजेक्ट, फिर Hooks
  2. Add deploy hook पर क्लिक करें।
  3. एक Hook name दर्ज करें जो छह महीने बाद भी समझ में आए। प्लेसहोल्डर आकार का सुझाव देता है: "Contentful publish", "Nightly cron"।
  4. एक Target environment चुनें। यह डिफ़ॉल्ट रूप से Production (default) पर सेट होता है। यदि आपके प्रोजेक्ट के पास एक स्टेजिंग environment है, तो आप हुक को स्टेजिंग की ओर इंगित कर सकते हैं।
  5. Create hook पर क्लिक करें।

हुक सूची में दिखाई देता है जिसमें इसका URL, एक Copy URL बटन और एक Delete hook बटन होता है।

हुक URL

हुक URLs इस तरह दिखते हैं:

https://kpanel.kapsulehost.com/api/orbit/hooks/<token>

टोकन एक अद्वितीय गुप्त है जो हुक बनाते समय जेनरेट होता है।

एक हुक URL को बिल्कुल एक API कुंजी की तरह मानें। जिसके पास भी यह है वह आपके प्रोजेक्ट की डिप्लॉयमेंट को ट्रिगर कर सकता है, और Kapsule Orbit की कोई भी डिप्लॉय गेट उन्हें नहीं रोकेगी: डिप्लॉय लॉक, आवश्यक अनुमोदन, CI आवश्यक जांच और आवश्यक स्टेजिंग सफलता सभी केवल push-ट्रिगर डिप्लॉयमेंट पर लागू होती हैं, और एक हुक सीधे गुजर जाता है। कभी भी एक हुक URL को एक सार्वजनिक रिपॉजिटरी, एक साझा दस्तावेज़, एक स्क्रीनशॉट या एक सहायता टिकट में न पेस्ट करें।

एक हुक को ट्रिगर करना

एक POST अनुरोध भेजें। कोई बॉडी और कोई हेडर आवश्यक नहीं है।

curl -X POST \
  https://kpanel.kapsulehost.com/api/orbit/hooks/<your-token>

Kapsule Orbit HTTP 202 के साथ और डिप्लॉयमेंट ID के साथ प्रतिक्रिया देता है। डिप्लॉयमेंट कुछ सेकंड के भीतर Deployments टैब पर दिखाई देती है।

एंडपॉइंट केवल POST को स्वीकार करता है। GET अनुरोध डिप्लॉयमेंट को ट्रिगर नहीं करेगा। कुछ पुराने वेबहुक इंटीग्रेशन डिफ़ॉल्ट रूप से GET पर सेट होते हैं, इसलिए यदि एक हुक जो आपने कॉन्फ़िगर किया है कभी फायर नहीं होता है तो विधि को जांचें।

एक हुक वास्तव में क्या डिप्लॉय करता है

हुक अपने target environment को रिजॉल्व करता है (वह जिसे आपने चुना है, या प्रोजेक्ट के production environment), उस environment की branch को पढ़ता है, और अपने git प्रदाता से उस branch के वर्तमान head commit के लिए पूछता है। फिर यह उस commit की डिप्लॉयमेंट को कतार में डालता है।

इसके तीन परिणाम हैं जो जानने के लायक हैं:

  • एक हुक हमेशा branch head को डिप्लॉय करता है। आप अनुरोध बॉडी में commit SHA या branch name नहीं पास कर सकते; अनुरोध बॉडी को पूरी तरह से अनदेखा किया जाता है।
  • एक हुक को एक कार्यशील प्रदाता कनेक्शन की आवश्यकता होती है। यदि आपने GitHub, GitLab या Bitbucket को डिस्कनेक्ट कर दिया है, तो हुक branch head को नहीं पढ़ सकता और पुराने कोड को डिप्लॉय करने के बजाय एक त्रुटि के साथ विफल हो जाता है।
  • एक हुक पूर्ण build को फिर से चलाता है। यह एक rollback नहीं है और न ही एक promotion है; यह जो भी वर्तमान में branch पर है का एक ताज़ा build है।

दोहराए गए और ओवरलैपिंग कॉल

Kapsule Orbit प्रत्येक के लिए एक build को कतार में डालने के बजाय हुक कॉल के bursts को समझदारी से संभालता है।

  • यदि उस environment पर उसी commit के लिए एक डिप्लॉयमेंट पहले से ही चल रही है, तो हुक मौजूदा डिप्लॉयमेंट को लौटाता है और प्रतिक्रिया को deduplicated के रूप में चिह्नित करता है। कोई दूसरा build शुरू नहीं होता है।
  • यदि उस environment पर एक अलग commit के लिए एक build चल रहा है, तो इसे स्वचालित रूप से रद्द कर दिया जाता है और नए से प्रतिस्थापित किया जाता है, इसलिए आप एक build के लिए भुगतान नहीं करते जिसका output पहले से ही अप्रचलित है।

यह हुक्स को एक CMS के लिए सुरक्षित बनाता है जो प्रकाशित प्रविष्टि के प्रति webhook को फायर करता है। एक मिनट में छह पृष्ठों को प्रकाशित करने से एक build होता है, छह नहीं, और छह builds के लायक मिनटों को बर्बाद नहीं करता है।

एक हेडलेस CMS को कनेक्ट करना

अधिकांश headless CMSes में एक "webhook on publish" सुविधा होती है। पैटर्न हमेशा एक ही होता है: वेबहुक को आपके हुक URL पर इंगित करें, POST का उपयोग करें, और प्रमाणीकरण सेटिंग्स को खाली छोड़ दें।

Contentful

  1. Settings पर जाएं, फिर Webhooks, फिर Add webhook
  2. URL को अपने Kapsule Orbit हुक URL पर सेट करें।
  3. विधि को POST पर सेट करें।
  4. ट्रिगर को Publish, या जो भी content events साइट को फिर से बनाना चाहिए, पर सेट करें।
  5. सेव करें।

Sanity

अपने प्रोजेक्ट डैशबोर्ड में, API पर जाएं, फिर Webhooks, फिर Create webhook। URL को अपने हुक URL पर सेट करें, विधि को POST पर सेट करें, और dataset और ट्रिगर events को चुनें।

Prismic

डैशबोर्ड में, Settings पर जाएं, फिर Webhooks, और अपना हुक URL जोड़ें। Prismic इसे हर दस्तावेज़ प्रकाशन पर कॉल करता है।

एक Cron जॉब या CI पाइपलाइन को कनेक्ट करना

कोई भी शेड्यूलर जो HTTP अनुरोध कर सकता है:

# crontab: rebuild every night at 2am
0 2 * * * curl -fsS -X POST https://kpanel.kapsulehost.com/api/orbit/hooks/<your-token>

CI के लिए, एक deploy हुक सबसे सरल विकल्प है जब आप चाहते हैं कि आपकी पाइपलाइन तय करे कि डिप्लॉयमेंट होगी या नहीं। यह Bitbucket Pipelines के लिए अनुशंसित दृष्टिकोण है, क्योंकि Kapsule Orbit की CI आवश्यक जांच GitHub Actions जॉब नामों या GitLab पाइपलाइन पर गेट करती है, Bitbucket पर नहीं।

यदि आपको "branch head को डिप्लॉय करें" से अधिक की आवश्यकता है, तो एक हुक के बजाय एक API token का उपयोग करें। Kapsule Orbit, फिर Tokens, CI/CD के लिए scoped bearer tokens बनाता है जिसमें एक दस्तावेज़ित REST API और एक ready-made GitHub Actions workflow होता है। API एक्सेस Apex plan पर शामिल है।

एक हुक के बिना एक शेड्यूल पर फिर से बनाना

यदि आप सब कुछ चाहते हैं वह एक periodic rebuild है, तो आपको एक हुक की आवश्यकता नहीं है। Settings में Runtime के तहत Scheduled rebuild, production को हर घंटे, 6 घंटे, 12 घंटे, दैनिक, हर 2 दिन या साप्ताहिक रूप से फिर से बनाता है। यह CMS-driven-site केस के लिए बिल्कुल बनाया गया है और रक्षा करने के लिए कोई गुप्त URL नहीं है।

हुक गतिविधि की जांच करना

प्रत्येक हुक पंक्ति दिखाती है कि इसका उपयोग कितनी बार किया गया है और इसका अंतिम उपयोग कब किया गया था, "Used 14 times, last 3 Jul" के रूप में। यह पुष्टि करने का सबसे तेज़ तरीका है कि आपका CMS वास्तव में हुक को कॉल कर रहा है जब आप सोचते हैं।

यदि गणना बढ़ नहीं रही है, तो समस्या कॉलिंग पक्ष पर है: जांचें कि विधि POST है, URL बिल्कुल सटीक है, और इंटीग्रेशन TLS या फायरवॉल त्रुटि पर मौन रूप से विफल नहीं हो रहा है।

एक हुक को हटाना

पंक्ति पर Delete hook पर क्लिक करें और पुष्टि करें। संवाद चेतावनी देता है कि इसका उपयोग करने वाली कोई भी सेवा काम करना बंद कर देगी, जो बिल्कुल वही है जो होता है।

किसी स्थान पर एक हुक के टोकन को घुमाने का कोई तरीका नहीं है। यदि एक URL लीक हो जाता है, तो आप हुक को हटा देते हैं और एक नया बनाते हैं, फिर हर सिस्टम को अपडेट करते हैं जो पुराने URL का उपयोग करता था। हटाना तुरंत प्रभाव डालता है, इसलिए हटाने से पहले स्वैप की योजना बनाएं न कि बाद में।

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

जब मैं हुक को कॉल करता हूँ तो कुछ नहीं होता है। जांचें कि विधि POST है। URL को वर्ण-दर-वर्ण जांचें, टोकन सहित। Hooks टैब पर हुक के usage count को जांचें: यदि यह बढ़ नहीं रहा है, तो अनुरोध कभी नहीं पहुंचा।

हुक नवीनतम commit के बारे में एक त्रुटि लौटाता है। Kapsule Orbit अपने git प्रदाता से branch head को नहीं पढ़ सका। Kapsule Orbit से प्रदाता को फिर से कनेक्ट करें, फिर New project, फिर Reconnect, और पुष्टि करें कि रिपॉजिटरी अभी भी सुलभ है।

हुक target environment के बारे में एक त्रुटि लौटाता है। जिस environment ने हुक को इंगित किया वह अब मौजूद नहीं है, संभवतः क्योंकि एक स्टेजिंग environment को हटा दिया गया था। हुक को हटा दें और एक live environment के विरुद्ध एक नया बनाएं।

हुक फायर होता है लेकिन डिप्लॉयमेंट पिछली बार के समान है। वह deduplication व्यवहार है: branch head नहीं बदला है, इसलिए बनाने के लिए कुछ नया नहीं है। एक commit push करें, या यदि आप विशेष रूप से उसी commit को फिर से बनाना चाहते हैं तो Deploy now का उपयोग करें।

संबंधित पाठ

क्या आपको अभी भी सहायता की आवश्यकता है?

हमें ईमेल करें support@kapsulehost.com या KPanel में चैट खोलें।

KPanel खोलें
Deploy Hooks के माध्यम से Deployments को ट्रिगर करना