I-webhook ye-GitHub ayifinyeleli i-Jenkins eyimfihlo: lungisa indlela
Iseshini ye-VPN kukhompyutha yakho akuyiniki i-GitHub indlela eya ku-Jenkins. Qhathanisa indawo yokungena, i-relay kanye nokuhlola, bese uhlola indlela izenzakalo ezihamba ngayo.
Ungavula i-Jenkins nge-VPN futhi ubone i-GitHub ibika i-webhook ehlulekile, ngoba lezi izixhumanisi ezimbili ezihlukene ezinabanikazi ababili abahlukene. Isiphequluli sihamba ngomhubhe okwaxoxwa ngawo yikhompyutha yakho; insizakalo yokulethwa ye-GitHub iqala ku-inthanethi yomphakathi futhi ayinayo indlela eya kunethiwekhi eyimfihlo. Ukufinyelela isitoreji akukushintshi lokho, nakuba i-Jenkins ngokwayo ingathola kuleso sitoreji ngaphandle kwenkinga. Khetha indawo yokungena, i-relay noma ukuhlola, bese uhlola indlela umcimbi ohamba ngayo ngempela.
Iseshini yesiphequluli ifakazela uhlangothi olulodwa kuphela
Ukuxhumana kwe-VPN kuphendula umbuzo owodwa: ingabe le khompyutha ingafinyelela umsingathi wangaphakathi. Ukulethwa kwe-webhook kubuza okunye: ingabe insizakalo yangaphandle ingavula ukuxhumana kulo msingathi. Ukuthi i-Jenkins ithola esitoreji kuwukuhamba okuphumayo futhi akusho lutho mayelana nokufinyeleleka kokungena. Gcina izinhlangothi zombili emilayeni ehlukene kumdwebo wakho, kuhlanganise nokuthi uluphi uhlangothi oluqala ngakunye.
Funda irekhodi lokulethwa ngaphambi kokushintsha noma yini. Ukuphela kwesikhathi, ukusethwa kabusha kokuxhumana kanye nesicelo esamukelwe esingafani nanoma yimuphi umsebenzi kunabanikazi abathathu abahlukene: inethiwekhi, i-proxy kanye nokucushwa kwesicishi.
Inketho A: vula indawo yokungena encane
Uma inhlangano isivele ishicilela indawo yokungena evunyelwe, vula indlela ye-webhook esikhundleni sedashbhodi. Ngokuvamile lokho kusho umthetho we-proxy ehlanekezelwe owamukela ama-POST ku-URL yegwegwe futhi uwadlulisele ku-Jenkins, kuyilapho isixhumanisi sokuphatha sihlala singafinyeleleki ngaphandle.
curl -sS -o /dev/null -w "%{http_code}\n" -X POST https://jenkins.example.com/github-webhook/Sebenzisa lokho kuhlola kusuka kunethiwekhi engenakho ukufinyelela kwe-VPN, ngoba ukuphumelela okuvela ngaphakathi komhubhe akufakazeli lutho. Indawo yokungena kufanele yenqabe izicelo ezingenayo imfihlo eyabiwe, leyo i-GitHub eyithumela njengesihloko sesiginesha, futhi yamukele kuphela indlela eyodwa kanye nendlela eyodwa oyishicilele. Ikhonsoli ye-Jenkins yomphakathi akuyona isixazululo se-webhook; ingumcimbi olinde isihlungi esilandelayo. Nciphisa umthetho ngokwanele ukuze yonke inhlelo esele igcine izilawuli zokufinyelela ezazinazo.
Inketho B: hlanekezela uhlangothi nge-relay
Lapho ukuchayeka kokungena kungke kuvunyelwe, iklayenti elincane ngaphakathi kwenethiwekhi linga gcina ukuxhumana okuphumayo okuya ku-relay futhi lamukele izenzakalo ezidluliselwe. I-relay iba yingxenye yendlela yokulethwa, ngakho ukutholakala kwayo nokuqinisekiswa kwayo kubalulekile njengomsebenzi wokwakha.
ssh -N -R 9000:localhost:8080 relay.example.netIsiqondiso se-Jenkins mayelana nama-webhook ngemuva kwezindonga zomlilo sichaza lesi simo, futhi kufanele sifundwe ngaphambi kokubhala isidlulisi sakho. Qeda i-TLS ku-relay, qinisekisa isiginesha ngaphambi kokuba umcimbi ufinyelele umsebenzi, futhi ubheke isixhumanisi esiphumayo, ngoba umhubhe owile ubonakala ufana ncamashi nomcimbi ongakaze uthunyelwe. Qinisekisa futhi ukuthi i-relay igcina umzimba wesicelo ibhayithi ngebhayithi, ngoba ukuhlolwa kwesiginesha kwehluleka ku-JSON eyehlaziywa futhi yafakwa ikhodi kabusha endleleni.
Inketho C: hlola isitoreji kunalokho
Ukuhlola kushintshanisa ukubambezeleka ngobulula futhi akudingi ndlela yokungena nhlobo. I-Jenkins ingahlola ngokohlelo, noma umsebenzi omncane ungabuza i-API futhi uqale ukwakha lapho ubona ukubuyekezwa okungajwayelekile.
curl -sS -u "$USER:$TOKEN" "https://api.github.com/repos/OWNER/REPO/commits?per_page=1"Ukuhlola ngakunye kusebenzisa izingcingo ze-API futhi kunezela ukubambezeleka phakathi kwe-push nokwakha, lokho okubonakala ezitorejini ezimatasa nasezikhawulweni zesivinini ezabiwe. Kudinga futhi izifakazelo ezigcinwe noma kuphi lapho isihloli sisebenza khona, ngakho khawulela ithokheni ekufinyeleleni kokufunda kuphela esitoreji futhi uyiphenduphendule njengayo yonke enye imfihlo. Khetha lokhu lapho umthamo wezenzakalo uphansi noma lapho kungeke kuvunyelwe indawo yokungena, futhi kusho ekuchazeni umsebenzi ukuze kimuva kungabikho ozibuza ukuthi kungani ukwakha kubambezeleka.
Yamukela ukulethwa kwangempela, hhayi ukulayisha ikhasi
Noma yikuphi ukukhetha okukhethile, ukuhlolwa kokwamukela umcimbi othunyelwe yipulatifomu yomthombo, hhayi ithebhu yesiphequluli evulwe kukhompyutha enelungelo. Pusha i-commit engenalutho egatsheni lesikhashana bese ufunda ikhodi yokuphendula kokulethwa, ilogi ye-relay noma okukhiphayo komsebenzi wokuhlola, ngalolo hlelo. I-200 evela endaweni yokungena ngaphandle kokwakha isho ukuthi isihlungi sesicishi asilungile; ukuphela kwesikhathi kusho ukuthi indlela isavaliwe. Rekhoda ukuthi yikuphi kwalezi zakhiwo ezintathu okusetshenziswayo, ngoba uma kungenjalo umuntu olandelayo ozolungisa iphutha uzophinda ukuhlolwa kwesiphequluli futhi afinyelele endleleni efanayo evaliwe.
Sebenzisa umqondo ofanayo kuma-callback okukhokha nakwezinye izaziso zangaphandle: ngakunye kudinga indlela yako yokungena kuhlelo lokusebenza oluyimfihlo, ngisho noma wonke umuntu usevele eneseshini ye-VPN. Indlela yokulethwa iyingxenye yomklamo wohlelo lokusebenza, hhayi umbhalo waphansi mayelana namanethiwekhi.