Tista’ tiftaħ Jenkins permezz tal-VPN u xorta tara lil GitHub jirrapporta webhook fallut, għax dawn huma żewġ konnessjonijiet differenti b’żewġ sidien differenti. Il-browser jivvjaġġa f’tunnel li nnegozja l-laptop tiegħek; is-servizz tal-kunsinna ta’ GitHub jibda mill-internet pubbliku u m’għandux passaġġ għan-netwerk privat. L-aċċess għar-repożitorju ma jbiddilx dan, anke jekk Jenkins innifsu jista’ jiġbed mill-istess repożitorju mingħajr problemi. Agħżel punt tad-dħul, relay jew polling, imbagħad iċċekkja l-passaġġ li l-avveniment verament jieħu.

Sessjoni tal-browser tipprova direzzjoni waħda biss

Konnessjoni VPN twieġeb mistoqsija waħda: dan il-laptop jista’ jasal għall-host intern. Il-kunsinna tal-webhook tistaqsi oħra: servizz estern jista’ jiftaħ konnessjoni ma’ dak il-host. Li Jenkins jiġbed minn repożitorju huwa traffiku li joħroġ u ma jgħid xejn dwar l-aċċessibbiltà li tidħol. Żomm iż-żewġ direzzjonijiet fuq linji separati fid-dijagramma tiegħek, inkluż liema naħa tibda kull waħda.

Aqra r-rekord tal-kunsinna qabel ma tbiddel xejn. Timeout, reset tal-konnessjoni u talba aċċettata li ma qabblet l-ebda xogħol għandhom tliet sidien differenti: netwerk, proxy u l-konfigurazzjoni tat-trigger.

Għażla A: esponi punt tat-tmiem dejjaq

Jekk l-organizzazzjoni diġà tiżvela punt tad-dħul approvat, esponi l-passaġġ tal-webhook minflok id-dashboard. Normalment dan ifisser regola ta’ proxy maqlub li taċċetta POST fuq l-URL tal-ganċ u tgħaddihom lil Jenkins waqt li l-interfaċċja amministrattiva tibqa’ ma tintlaħaqx minn barra.

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

Ħaddem dan it-test minn netwerk mingħajr aċċess għall-VPN, għax suċċess minn ġewwa t-tunnel ma jipprova xejn. Il-punt tat-tmiem għandu jirrifjuta talbiet mingħajr is-sigriet maqsum, li GitHub jibgħat bħala header tal-firma, u għandu jaċċetta biss il-passaġġ u l-metodu waħdieni li ppubblikajt. Console Jenkins pubblika mhix soluzzjoni tal-webhook; hija inċident li jistenna l-iskanner li jmiss. Illimita r-regola biżżejjed biex il-bqija tal-applikazzjoni żżomm il-kontrolli tal-aċċess li kellha.

Għażla B: aqleb id-direzzjoni b’relay

Fejn l-espożizzjoni li tidħol mhix se tiġi approvata, klijent żgħir fin-netwerk jista’ jżomm konnessjoni li toħroġ lejn relay u jirċievi avvenimenti mgħoddija. Ir-relay imbagħad isir parti mill-passaġġ tal-kunsinna, għalhekk id-disponibbiltà u l-awtentikazzjoni tiegħu huma importanti daqs ix-xogħol tal-bini.

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

Il-linji gwida ta’ Jenkins dwar webhooks wara firewall jiddeskrivu din il-forma, u jiswew il-qari qabel ma tikteb forwarder tiegħek. Temm TLS fir-relay, ivverifika l-firma qabel l-avveniment jasal għax-xogħol, u monitorja l-link li joħroġ, għax tunnel maqtugħ jidher eżattament bħal avveniment li qatt ma ntbagħat. Ikkonferma wkoll li r-relay iżomm il-ġisem tat-talba byte b’byte, għax il-kontrolli tal-firma jonqsu fuq JSON li ġie analizzat u kkodifikat mill-ġdid fit-triq.

Għażla C: polling tar-repożitorju minflok

Il-polling ibiddel il-latenza għas-sempliċità u ma jeħtieġ l-ebda passaġġ tad-dħul. Jenkins jista’ jagħmel polling skont skeda, jew xogħol żgħir jista’ jistaqsi l-API u jibda bini meta jara reviżjoni mhux magħrufa.

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

Kull polling jonfoq sejħiet tal-API u jżid dewmien bejn push u bini, li jidher fuq repożitorji impenjati u limiti tar-rata maqsuma. Jeħtieġ ukoll kredenzjali maħżuna fejn jaħdem il-polling, għalhekk illimita t-token għal aċċess biss qari għar-repożitorju u dawwarh bħal kull sigriet ieħor. Agħżel dan meta l-volum tal-avvenimenti jkun baxx jew meta l-ebda punt tad-dħul qatt ma jiġi approvat, u għid dan fid-deskrizzjoni tax-xogħol biex ħadd aktar tard ma jistaqsi għaliex il-bini jiddewwem.

Aċċetta kunsinna vera, mhux tagħbija ta’ paġna

Liema għażla għażilt, it-test tal-aċċettazzjoni huwa avveniment mibgħut mill-pjattaforma tas-sors, mhux tab tal-browser miftuħ minn laptop ipprivileġġat. Iġbed commit vojt lejn fergħa temporanja u aqra l-kodiċi tar-risposta tal-kunsinna, il-log tar-relay jew l-output tax-xogħol tal-polling, f’dak l-ordni. 200 mill-punt tat-tmiem mingħajr bini ifisser li l-filtru tat-trigger huwa ħażin; timeout ifisser li l-passaġġ għadu magħluq. Irreġistra liema mit-tliet disinji qed jintuża, għax inkella l-persuna li jmiss timmappja l-iżbalji se tirrepeti t-test tal-browser u tasal fl-istess triq bla ħruġ.

Applika l-istess raġunament għall-callbacks tal-ħlas u avviżi esterni oħra: kull wieħed jeħtieġ ir-rotta tiegħu stess għall-applikazzjoni privata, anke meta kull bniedem diġà għandu sessjoni VPN. Il-passaġġ tal-kunsinna jappartjeni lid-disinn tal-applikazzjoni, mhux għal nota f’qiegħ il-paġna dwar in-netwerks.

Artikli relatati