বিষয়বস্তু এড়িয়ে যান
সংরক্ষণাগারভুক্ত ডকুমেন্টেশন. আপনার ইনস্টলেশনের সাথে মিলে যাওয়া সংস্করণটি ব্যবহার করুন।

সংগ্রহস্থল ওয়েবহুক সেটআপ

GitHub, GitLab, Forgejo, এবং Gitea সংগ্রহস্থলগুলির জন্য স্বাক্ষরিত শুধুমাত্র-পঠনযোগ্য ওয়েবহুকগুলি কনফিগার করুন৷

আর্কাইভ সোর্স স্ন্যাপশট। পণ্য লেবেল Repovio ব্যবহার করে। অপরিবর্তিত এই রিলিজের ট্যাগ করা ডিপ্লয়মেন্ট ফাইল থেকে কনফিগারেশন শনাক্তকারী এবং কন্টেইনার রেফারেন্স ব্যবহার করুন।

Repovio একটি ট্র্যাক করা রিপোজিটরিকে তার স্বাভাবিক পোলিং ব্যবধানের চেয়ে তাড়াতাড়ি সিঙ্ক্রোনাইজ করতে স্বাক্ষরিত ওয়েবহুকগুলি পেতে পারে। এটি প্রদানকারী API-এর মাধ্যমে কখনই ওয়েবহুক তৈরি, আপডেট, মুছে বা পরীক্ষা করে না। একজন প্রশাসক GitHub, GitLab, Forgejo, বা Gitea-এ প্রতিটি রিপোজিটরি ওয়েবহুক ম্যানুয়ালি কনফিগার করেন।

রিপোজিটরি খুলুন, একটি ট্র্যাক করা সংগ্রহস্থল নির্বাচন করুন এবং এররিপোজিটরি ওয়েবহুক কার্ড ব্যবহার করুন। কার্ডটি রিপোজিটরি-নির্দিষ্ট কলব্যাক URL দেখায়, একটি সাইনিং সিক্রেট তৈরি বা গ্রহণ করে এবং সর্বশেষ গৃহীত ডেলিভারি রিপোর্ট করে৷ Repovio কখনই সেই কনফিগারেশন প্রদানকারীকে পাঠায় না।

ওয়েবহুক একটি অপ্টিমাইজেশান, সত্যের উৎস নয়। স্বাক্ষরিত পেলোডটিকে অবশ্যই কলব্যাক URL দ্বারা নির্বাচিত সংগ্রহস্থল সনাক্ত করতে হবে৷ Repovio তারপর কনফিগার করা শুধুমাত্র-পঠনযোগ্য প্রদানকারী অ্যাডাপ্টারের মাধ্যমে বর্তমান ডেটা পড়ে। গৃহীত বিতরণ একটি টেকসই সংগ্রহস্থল সিঙ্ক্রোনাইজেশন সারিবদ্ধ; 15 সেকেন্ডের মধ্যে প্রাপ্ত বিতরণ একত্রিত হয়। ডিফল্ট ফলব্যাক পোলিং ব্যবধান 30 মিনিট।

একটি সংগ্রহস্থল ওয়েবহুক কনফিগার করুন

  1. Repovio-এ রিপোজিটরি যোগ করুন এবং এর রিপোজিটরি ওয়েবহুক কার্ড খুলুন।
  2. কলব্যাক URL কপি করুন৷
  3. একটি অনন্য, উচ্চ-এনট্রপি সাইনিং সিক্রেট তৈরি করুন বা প্রদানকারীর দ্বারা সরবরাহ করা সঠিক সাইনিং টোকেন পেস্ট করুন৷ অ্যাক্সেস টোকেন বা অন্য সংগ্রহস্থলের গোপনীয়তা পুনঃব্যবহার করবেন না।
  4. গোপন সংরক্ষণ করুন. Repovio এটিকে AES-256-GCM দিয়ে এনক্রিপ্ট করে এবং কখনও API এর মাধ্যমে ফেরত দেয় না।
  5. সেই সংগ্রহস্থলের প্রদানকারী সেটিংসে কলব্যাক URL এবং গোপনীয়তা কনফিগার করুন৷
  6. TLS যাচাইকরণ সক্ষম রাখুন এবং একটি পরীক্ষা ডেলিভারি পাঠান।

স্থিতিশীল কলব্যাক /api/webhooks/<provider>/<repository-id> ব্যবহার করে। সংস্করণযুক্ত /api/v1/webhooks/<provider>/<repository-id> কলব্যাকগুলিও উপলব্ধ। Repovio 0.2.9 এবং তার আগের প্রোভাইডার-অ্যাকাউন্ট কলব্যাক URLগুলি আর গ্রহণ করা হয় না৷ আপগ্রেড করার পরে, প্রতিটি ওয়েবহুককে এর রিপোজিটরি কলব্যাক এবং একটি নতুন রিপোজিটরি সিক্রেট সহ পুনরায় তৈরি করুন৷

সফল ডেলিভারি { "accepted": true } সহ HTTP 202 ফেরত দেয়। বারবার প্রদানকারী ডেলিভারি আইডি { "accepted": true, "duplicate": true } ফেরত দেয় এবং অন্য সিঙ্ক্রোনাইজেশন সারিবদ্ধ করে না। অজানা বা অক্ষম সংগ্রহস্থল, অক্ষম প্রদানকারী অ্যাকাউন্ট, অনুপস্থিত গোপনীয়তা, অবৈধ স্বাক্ষর, অমিল প্রদানকারী সংগ্রহস্থল আইডি এবং অনুপস্থিত বিতরণ আইডিগুলি কনফিগারেশনের বিবরণ প্রকাশ না করেই প্রত্যাখ্যান করা হয়।

সারিবদ্ধ সিঙ্ক্রোনাইজেশন এপিআই পুনরায় আরম্ভ করে বেঁচে থাকে। একাধিক দৃষ্টান্ত ডাটাবেস ইজারা ব্যবহার করে এবং একই প্রদানকারী অ্যাকাউন্ট একযোগে সিঙ্ক্রোনাইজ করে না। হার-সীমা শিরোনামগুলি প্রভাবিত অ্যাকাউন্টের জন্য কাজ করতে বিলম্ব করে, যখন আবদ্ধ পুনঃপ্রচারগুলি ক্ষণস্থায়ী ব্যর্থতাগুলি পরিচালনা করে।

GitHub অ্যাকশন

  1. সংগ্রহস্থলের সেটিংস → ওয়েবহুক খুলুন এবংওয়েবহুক যুক্ত করুন চয়ন করুন।
  2. পেলোড URL হিসাবে https://repovio.example.com/api/webhooks/github/<repository-id> ব্যবহার করুন৷
  3. application/json নির্বাচন করুন, সংগ্রহস্থলের গোপনীয়তা পেস্ট করুন এবং ওয়ার্কফ্লো রান (workflow_run) এর সদস্যতা নিন।
  4. SSL যাচাইকরণ সক্রিয় রাখুন এবং ওয়েবহুক সংরক্ষণ করুন৷

Repovio কাঁচা শরীরে X-Hub-Signature-256 যাচাই করে এবং অক্ষমতার জন্য X-GitHub-Delivery ব্যবহার করে। GitHub এর ওয়েবহুক ইভেন্ট ডকুমেন্টেশন দেখুন।

GitLab পাইপলাইন

  1. প্রকল্পের সেটিংস → ওয়েবহুক খুলুন এবংনতুন ওয়েবহুক যোগ করুন নির্বাচন করুন।
  2. URL হিসাবে https://repovio.example.com/api/webhooks/gitlab/<repository-id> ব্যবহার করুন৷
  3. একটি সাইনিং টোকেন তৈরি করুন এবং Repovio সংগ্রহস্থল কার্ডে whsec_ সহ এর সম্পূর্ণ মান সংরক্ষণ করুন৷
  4. পাইপলাইন ইভেন্ট নির্বাচন করুন, SSL যাচাইকরণ সক্ষম রাখুন, সংরক্ষণ করুন এবং একটি টেস্ট ডেলিভারি পাঠান।

Repovio স্ট্যান্ডার্ড Webhooks HMAC-SHA256 স্বাক্ষর যাচাই করে এবং অক্ষমতার জন্য webhook-id পছন্দ করে। লিগ্যাসি X-Gitlab-Token এবং X-Gitlab-Event-UUID হেডারগুলি পুরানো উদাহরণগুলির জন্য সমর্থিত থাকে৷ GitLab এর ওয়েবহুক ডকুমেন্টেশন দেখুন।

Forgejo অ্যাকশন

  1. সংগ্রহস্থলের সেটিংস → ওয়েবহুক খুলুন এবং একটি নেটিভForgejo JSON ওয়েবহুক যোগ করুন।
  2. টার্গেট URL হিসাবে https://repovio.example.com/api/webhooks/forgejo/<repository-id> ব্যবহার করুন৷
  3. রিপোজিটরি সিক্রেট পেস্ট করুন এবং পুশ ইভেন্ট এবং যেকোন উপলব্ধ অ্যাকশন ইভেন্ট নির্বাচন করুন।
  4. TLS যাচাইকরণ সক্ষম রাখুন এবং ওয়েবহুক সংরক্ষণ করুন৷

Repovio X-Forgejo-Signature যাচাই করে এবং অক্ষমতার জন্য X-Forgejo-Delivery ব্যবহার করে। Gitea-সামঞ্জস্যপূর্ণ হেডার Forgejo সামঞ্জস্যের জন্য গৃহীত থাকে। Forgejo ওয়েবহুক ডকুমেন্টেশন দেখুন।

Gitea অ্যাকশন

  1. সংগ্রহস্থলের সেটিংস → ওয়েবহুক খুলুন এবং একটি নেটিভGitea JSON ওয়েবহুক যোগ করুন।
  2. টার্গেট URL হিসাবে https://repovio.example.com/api/webhooks/gitea/<repository-id> ব্যবহার করুন৷
  3. রিপোজিটরি সিক্রেট পেস্ট করুন এবং পুশ ইভেন্ট প্লাস যেকোন উপলব্ধ ওয়ার্কফ্লো ইভেন্ট নির্বাচন করুন।
  4. TLS যাচাইকরণ সক্ষম রাখুন এবং ওয়েবহুক সংরক্ষণ করুন৷

Repovio কাঁচা শরীরে X-Gitea-Signature যাচাই করে এবং অক্ষমতার জন্য X-Gitea-Delivery ব্যবহার করে। Gitea ওয়েবহুক ডকুমেন্টেশন দেখুন।

সমস্যা সমাধান

  • 401 মানে Repovio রিপোজিটরি, প্রদানকারীর ধরন, গোপন, স্বাক্ষর, পেলোড রিপোজিটরি আইডি বা ডেলিভারি আইডি যাচাই করতে পারেনি৷ কলব্যাকের সংগ্রহস্থল UUID এবং সঠিক গোপনীয়তা নিশ্চিত করুন।
  • 202 duplicate: true এর সাথে প্রত্যাশিত হয় যখন কোনো প্রদানকারী পুনরায় ডেলিভারির চেষ্টা করে।
  • একটি সফল ডেলিভারি শুধুমাত্র পঠনযোগ্য সিঙ্ক্রোনাইজেশনকে ট্রিগার করে; এটি প্রদানকারী কর্মপ্রবাহ পরিবর্তন করে না.
  • অবিরত প্রদানকারী সিঙ্ক্রোনাইজেশন অবস্থার জন্য /api/health চেক করুন।
  • 30-মিনিটের ফলব্যাকের জন্য SCHEDULER_SYNC_INTERVAL_SECONDS=1800 সেট করুন।
  • SCHEDULER_ENABLED=false সারিবদ্ধ অনুরোধগুলি ধরে রাখে কিন্তু ফলব্যাক সারিবদ্ধকরণ এবং প্রক্রিয়াকরণকে বিরতি দেয়।