Jenkins’ni VPN orqali ochishingiz mumkin va shunga qaramay GitHub muvaffaqiyatsiz webhook haqida xabar berishini ko‘rishingiz mumkin, chunki bu ikki xil egaga tegishli ikki xil ulanish. Brauzer noutbukingiz kelishgan tunnel orqali yuradi; GitHub’ning yetkazib berish xizmati ochiq internetdan boshlanadi va xususiy tarmoqqa hech qanday yo‘li yo‘q. Repozitoriyga kirish buni o‘zgartirmaydi, garchi Jenkins o‘zi shu repozitoriydan muammosiz olishi mumkin bo‘lsa ham. Kirish nuqtasi, rele yoki so‘rovni tanlang, so‘ng hodisa haqiqatan o‘tadigan yo‘lni sinab ko‘ring.

Brauzer sessiyasi faqat bir yo‘nalishni isbotlaydi

VPN ulanishi bir savolga javob beradi: bu noutbuk ichki hostga yetib bora oladimi. Webhook yetkazib berish boshqa narsani so‘raydi: tashqi xizmat o‘sha hostga ulanish ocha oladimi. Jenkins’ning repozitoriydan olishi chiquvchi trafik va kiruvchi yetib borish haqida hech narsa demaydi. Ikkala yo‘nalishni diagrammangizda alohida satrlarda saqlang, har birini qaysi tomon boshlashini ham qo‘shing.

Biror narsani o‘zgartirishdan oldin yetkazib berish yozuvini o‘qing. Vaqt tugashi, ulanishning qayta tiklanishi va hech qanday ishga to‘g‘ri kelmagan qabul qilingan so‘rov — uch xil egasi bor: tarmoq, proksi va trigger konfiguratsiyasi.

Variant A: tor kirish nuqtasini oching

Agar tashkilot allaqachon tasdiqlangan kirishni e’lon qilsa, boshqaruv paneli o‘rniga webhook yo‘lini oching. Odatda bu ilgak URL’iga POST qabul qiladigan va ularni Jenkins’ga uzatadigan teskari proksi qoidasini anglatadi, ma’muriy interfeys esa tashqaridan yetib bo‘lmaydigan bo‘lib qoladi.

curl -sS -o /dev/null -w "%{http_code}\n" -X POST https://jenkins.example.com/github-webhook/

Bu sinovni VPN kirishisiz tarmoqdan o‘tkazing, chunki tunnel ichidan erishilgan muvaffaqiyat hech narsani isbotlamaydi. Kirish nuqtasi umumiy sir bo‘lmagan so‘rovlarni rad etishi kerak, uni GitHub imzo sarlavhasi sifatida yuboradi, va faqat siz e’lon qilgan bitta yo‘l va usulni qabul qilishi kerak. Ochiq Jenkins konsoli webhook yechimi emas; bu keyingi skanerni kutayotgan hodisa. Qoidani yetarlicha tor qiling, toki ilovaning qolgan qismi oldingi kirish nazoratini saqlab qolsin.

Variant B: yo‘nalishni rele bilan teskari aylantiring

Kiruvchi ochiqlik tasdiqlanmaydigan joyda tarmoq ichidagi kichik mijoz relega chiquvchi ulanishni ushlab turishi mumkin va uzatilgan hodisalarni qabul qilishi mumkin. Shunda rele yetkazib berish yo‘lining bir qismiga aylanadi, shuning uchun uning mavjudligi va autentifikatsiyasi qurish ishi kabi muhim.

ssh -N -R 9000:localhost:8080 relay.example.net

Jenkins’ning xavfsizlik devorlari orqasidagi webhooklar haqidagi yo‘riqnomasi bu shaklni tavsiflaydi va o‘z uzatgichingizni yozishdan oldin uni o‘qishga arziydi. TLS’ni releda tugating, hodisa ishga yetib borishidan oldin imzoni tekshiring va chiquvchi aloqani kuzatib boring, chunki qulagan tunnel hech qachon yuborilmagan hodisaga aynan o‘xshaydi. Relening so‘rov tanasini baytma-bayt saqlashini ham tasdiqlang, chunki imzo tekshiruvlari yo‘lda tahlil qilinib, qayta kodlangan JSON’da muvaffaqiyatsiz bo‘ladi.

Variant C: o‘rniga repozitoriyni so‘rab turing

So‘rovlash kechikishni soddalikka almashtiradi va kiruvchi yo‘l umuman kerak emas. Jenkins jadval bo‘yicha so‘rashi mumkin, yoki kichik ish API’dan so‘rab, notanish reviziyani ko‘rganda qurishni boshlashi mumkin.

curl -sS -u "$USER:$TOKEN" "https://api.github.com/repos/OWNER/REPO/commits?per_page=1"

Har bir so‘rov API chaqiruvlarini sarflaydi va push bilan qurish o‘rtasiga kechikish qo‘shadi, bu gavjum repozitoriylarda va umumiy tezlik cheklovlarida ko‘rinadi. U shuningdek so‘rovchi ishlaydigan joyda saqlangan hisob ma’lumotlarini talab qiladi, shuning uchun tokenni repozitoriyga faqat o‘qish kirishi bilan cheklang va uni boshqa har qanday sir kabi almashtirib turing. Buni hodisalar hajmi past bo‘lganda yoki kirish nuqtasi hech qachon tasdiqlanmasa tanlang va buni ish tavsifida yozing, toki keyin hech kim qurishlar nega orqada qolayotganiga hayron bo‘lmasin.

Sahifa yuklanishini emas, haqiqiy yetkazib berishni qabul qiling

Qaysi variantni tanlamang, qabul sinovi manba platformasi yuborgan hodisadir, imtiyozli noutbukdan ochilgan brauzer varaqasi emas. Skretch shoxobchasiga bo‘sh commit push qiling va yetkazib berish javob kodini, rele jurnalini yoki so‘rov ishining chiqishini shu tartibda o‘qing. Kirish nuqtasidan 200 kelib qurish bo‘lmasa, trigger filtri noto‘g‘ri; vaqt tugasa, yo‘l hali yopiq. Uchta dizayndan qaysi biri ishlatilayotganini yozib qo‘ying, aks holda keyingi nosozlikni tuzatuvchi brauzer sinovini takrorlab, o‘sha boshi berk ko‘chaga tushadi.

Xuddi shu mantiqni to‘lov qayta chaqiruvlari va boshqa tashqi bildirishnomalarga qo‘llang: har biriga xususiy ilovaga o‘z yo‘li kerak, hatto har bir insonda allaqachon VPN sessiyasi bo‘lsa ham. Yetkazib berish yo‘li ilova dizayniga tegishli, tarmoqlar haqidagi pastki izohga emas.

O'xshash maqolalar