ولې د VPN تر شا Jenkins په وړاندې GitHub webhook-ونه وخت تېروي
GitHub webhook-ونه دننه لېږي، نو هغه VPN چې Jenkins خوندي کوي هغوی ردوي. لېږد بهر ته د relay له لارې ولېږئ، یا webhook په یوه agent بدل کړئ چې پوښتنې کوي.
د لېږد پاڼه د وخت تېرېدو ښکارندویي کوي او Jenkins هېڅ نه ثبتوي، چې دا د هغه اړیکې نښه ده چې هېڅکله ونه رسېده. GitHub webhook د خپل زیربنا څخه ستاسو د تنظیم شوي payload URL ته د یوه بهر وتونکي HTTP POST په توګه لېږي. VPN Jenkins ته د همدې ډول اړیکې په ردولو ساتنه کوي. په هېڅ اړخ کې هېڅ خراب نه دی. ستونزه د غوښتنې په لوري کې ده.
لېږد په رښتیا څه هڅه کوي
GitHub په payload URL کې د کوربه نوم حل کوي او له عامه انټرنېټ څخه ورسره نښلوي. که هغه URL کوم شخصي پتې ته، یا هغه نوم ته اشاره وکړي چې یوازې ستاسو په شبکه کې حل کېږي، هڅه د کومې غوښتنې لېږلو دمخه ناکامه کېږي. که هغه عام نوم ته اشاره وکړي چې ستاسو څنډه یې غورځوي، هڅه پرځای یې وخت تېروي.
دا توپیر د تشخیص لپاره مهم دی. د DNS ناکامي او فلټر شوی پورټ دواړه داسې ښکاري چې د Jenkins په اړخ کې هېڅ نه دی شوی، او دواړه په GitHub کې د بېل دلیل سره ناکام لېږد ښکاري. د URL بدلولو دمخه هغه دلیل ولولئ.
هغه تونل چې بهر ته زنګ وهي اورېدونکی نه جوړوي. خلک همدې برخې ته د بېل ډول کار کولو تمه لري.
د اړیکې لوري سمولو لپاره درې لارې
هر حل بدلوي چې اړیکه څوک پیلوي، او یوازې درې بڼې شته.
| Approach | Who initiates | What you give up |
|---|---|---|
| Relay service | An outbound client inside the network | A third party sees every payload |
| Reverse tunnel or ingress | The public edge, into a controlled listener | An inbound surface you must secure |
| Runner or polling | The agent, outbound to GitHub | Instant delivery, replaced by a schedule |
پوښتنې کول تر ټولو کم ښکلي او چلولو لپاره تر ټولو اسانه دي. Relay پرته له پورټ خلاصولو نږدې سملاسي غبرګون ساتي. Runner معمولاً سم ځواب وي کله چې د payload محرمیت درېیم اړخ وباسي، ځکه کار کولی شي په هغه ماشین چل شي چې لا دمخه د شبکې دننه دی.
د هغه څه له مخې وټاکئ چې چلولی یې شئ، نه د هغه له مخې چې عصري ښکاري.
لېږد د smee سره بهر ته ولېږئ
د relay په خدمت کې یوه چینه جوړه کړئ او د هغې URL وساتئ. د شبکې دننه، کلاینټ نصب کړئ او لېږدونه هغې لارې ته ولېږئ چې Jenkins یې تمه لري. په زېرمې تنظیماتو کې payload URL د چینې URL کېږي، د منځپانګې ډول application/json ته ټاکل شوی وي.
sudo npm install --global smee-client
smee -u CHANNEL_URL --path /github-webhook/ --port 8080درې تفصیلات پرېکړه کوي چې کار کوي که نه. لاره باید هغه څه سره سمه وي چې Jenkins د GitHub پېښو لپاره تمه لري، چې په تلوالې ډول /github-webhook/ دی. Jenkins باید په هغه پورټ واوري چې تاسو کلاینټ ته ورکړی. او په دنده کې تنظیم شوی Jenkins URL باید له هغې لارې سره سمون ولري، که نه پېښه رسېږي او بیا غورځول کېږي.
په پای کې د سلیش ناسمونې 404 جوړوي چې د لېږد ناکامۍ په څېر لوستل کېږي او داسې نه ده.
هغه داسې چلول چې اونۍ پاتې شي
په مخکینۍ پاڼه کلاینټ د ټرمینل سره مري، او webhook-ونه یوه ورځ کار کوي او بیا درېږي. هغه ته د Restart=always سره unit ورکړئ، د Jenkins کاروونکي په توګه یې چلوئ، او د لومړي ریښتیني لېږد وروسته journal ولولئ. همدا وروستی ګام کاري relay له تنظیم شوي relay څخه بېلوي.
[Unit]
Description=smee webhook relay
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=2
User=jenkins
ExecStart=/usr/bin/smee -u CHANNEL_URL --path /github-webhook/ --port 8080
[Install]
WantedBy=multi-user.targetد بیاځلي تڼۍ پرځای د ریښتیني push سره ازموینه وکړئ. بیاځلي کول د relay ساتل شوی payload ازموي، نه د GitHub څخه ستاسو چینې ته لاره، نو کولی شي تېر شي پداسې حال کې چې ژوندی لېږد لا هم ناکامېږي.
کله چې unit ودري، خبرداری ورکړئ. رالوېدلی relay په جوړښت کې چوپ دی، او چوپتیا هغه څه ده چې تاسو لا دمخه یې سمول کوئ.
relay څه لیدلی شي، او کله یې نه کاروئ
relay payload پای ته رسوي، نو د زېرمو نومونه، commit ډاټا او هر هغه څه چې پېښه یې وړي ګوري. د چینې URL د عام پای ټکي په توګه وګڼئ. د Jenkins پټ token تنظیم شوی وساتئ ترڅو جعلي لېږدونه رد شي، او Jenkins چې کوم token کاروي هغه په اړین لږ تر لږه محدود کړئ.
که د payload محرمیت دا وباسي، په خپله کوربه شوی runner یا تصدیق شوی برعکس تونل ځواب دی.
relay اوس زیربنا ده، او د هغه build په څېر کتنې وړ ده چې هغه پیلوي. که چینه ویښته شي، هغه وګرځوئ، او هغه نېټه ولیکئ چې تاسو وروستی ځل ژوندی لېږد تصدیق کړی و. هغه نېټه د چینې URL ترڅنګ په runbook کې کېږدئ. هغه relay چې یو کال یې هیڅوک کتنه نه وي کړې، عام پای ټکی دی چې هیڅوک یې خاوند نه دی.