Gallwch agor Jenkins dros y VPN ac eto weld GitHub yn adrodd bod webhook wedi methu, oherwydd dau gysylltiad gwahanol â dau berchennog gwahanol yw’r rhain. Mae’r porwr yn teithio trwy dwnnel a drafodwyd gan eich gliniadur; mae gwasanaeth cyflenwi GitHub yn dechrau ar y rhyngrwyd cyhoeddus ac nid oes ganddo lwybr i mewn i’r rhwydwaith preifat. Nid yw mynediad at y storfa yn newid hynny, hyd yn oed os gall Jenkins ei hun nôl o’r un storfa heb drafferth. Dewiswch bwynt mynediad, trosglwyddydd neu arolygu, yna profwch y llwybr y mae’r digwyddiad yn ei ddilyn mewn gwirionedd.

Mae sesiwn porwr yn profi un cyfeiriad yn unig

Mae cysylltiad VPN yn ateb un cwestiwn: a all y gliniadur hwn gyrraedd y gwesteiwr mewnol. Mae cyflenwi webhook yn gofyn un arall: a all gwasanaeth allanol agor cysylltiad â’r gwesteiwr hwnnw. Mae Jenkins yn nôl o storfa yn draffig allanol ac ni ddywed ddim am gyrhaeddedd fewnol. Cadwch y ddau gyfeiriad ar linellau ar wahân yn eich diagram, gan gynnwys pa ochr sy’n cychwyn pob un.

Darllenwch y cofnod cyflenwi cyn newid unrhyw beth. Mae terfyn amser, ailosod cysylltiad a chais a dderbyniwyd na chydweddodd ag unrhyw dasg yn perthyn i dri pherchennog gwahanol: rhwydwaith, dirprwy a chyfluniad y sbardun.

Opsiwn A: datgelu pwynt mynediad cul

Os yw’r sefydliad eisoes yn cyhoeddi pwynt mynediad cymeradwy, datgelwch lwybr y webhook yn lle’r dangosfwrdd. Fel arfer mae hynny’n golygu rheol dirprwy gwrthdro sy’n derbyn POST ar URL y bachyn ac yn ei anfon ymlaen i Jenkins tra bo’r rhyngwyneb gweinyddol yn parhau’n anghyrhaeddadwy o’r tu allan.

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

Rhedwch y prawf hwnnw o rwydwaith heb fynediad VPN, oherwydd nid yw llwyddiant o fewn y twnnel yn profi dim. Dylai’r pwynt mynediad wrthod ceisiadau heb y gyfrinach a rennir, y mae GitHub yn ei hanfon fel pennawd llofnod, a dylai dderbyn dim ond yr un llwybr a’r un dull a gyhoeddwyd gennych. Nid yw consol Jenkins cyhoeddus yn atgyweiriad webhook; mae’n ddigwyddiad sy’n aros am y sganiwr nesaf. Cyfyngwch y rheol yn ddigon tynn fel bod gweddill y rhaglen yn cadw’r rheolaethau mynediad oedd ganddo.

Opsiwn B: gwrthdroi’r cyfeiriad â throsglwyddydd

Lle na chymeradwyir datgeliad i mewn, gall cleient bach o fewn y rhwydwaith gadw cysylltiad allanol â throsglwyddydd a derbyn digwyddiadau a anfonwyd ymlaen. Daw’r trosglwyddydd wedyn yn rhan o’r llwybr cyflenwi, felly mae ei argaeledd a’i ddilysu yr un mor bwysig â’r dasg adeiladu.

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

Canllaw Jenkins ar webhooks y tu ôl i waliau tân yn disgrifio’r siâp hwn, ac mae’n werth ei ddarllen cyn ysgrifennu trosglwyddydd pwrpasol. Terfynwch TLS yn y trosglwyddydd, gwiriwch y llofnod cyn i’r digwyddiad gyrraedd y dasg, a monitro’r cysylltiad allanol, oherwydd mae twnnel sydd wedi cwympo yn edrych yn union fel digwyddiad na anfonwyd erioed. Cadarnhewch hefyd fod y trosglwyddydd yn cadw corff y cais fesul beit, oherwydd mae gwiriadau llofnod yn methu ar JSON sydd wedi’i ddadansoddi a’i ailgodio ar y ffordd.

Opsiwn C: arolygu’r storfa yn lle hynny

Mae arolygu’n cyfnewid oedi am symlrwydd ac nid oes angen unrhyw lwybr i mewn o gwbl. Gall Jenkins arolygu yn ôl amserlen, neu gall tasg fach holi’r API a dechrau adeiladu pan welith adolygiad anghyfarwydd.

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

Mae pob arolwg yn gwario galwadau API ac yn ychwanegu oedi rhwng push ac adeiladu, sy’n amlwg ar storfeydd prysur a therfynau cyfradd a rennir. Mae hefyd angen cymwysiadau wedi’u storio lle bynnag y mae’r arolygydd yn rhedeg, felly cyfyngwch y tocyn i fynediad darllen yn unig i’r storfa a’i gylchdroi fel unrhyw gyfrinach arall. Dewiswch hyn pan fo maint y digwyddiadau’n isel neu pan na chymeradwyir pwynt mynediad byth, a dywedwch hynny yn nisgrifiad y dasg fel na bydd neb yn hwyrach yn meddwl pam mae adeiladau’n oedi.

Derbyniwch gyflenwi go iawn, nid llwytho tudalen

Pa opsiwn bynnag a ddewisoch, y prawf derbyn yw digwyddiad a anfonwyd gan y platfform ffynhonnell, nid tab porwr a agorwyd o liniadur breintiedig. Gwthiwch commit gwag i gangen sbwriel a darllenwch god ymateb y cyflenwi, cofnod y trosglwyddydd neu allbwn y dasg arolygu, yn y drefn honno. Mae 200 o’r pwynt mynediad heb adeiladu yn golygu bod hidlydd y sbardun yn anghywir; mae terfyn amser yn golygu bod y llwybr yn dal ar gau. Cofnodwch pa un o’r tri chynllun sy’n cael ei ddefnyddio, oherwydd fel arall bydd y person nesaf sy’n dadfygio yn ailadrodd y prawf porwr ac yn cyrraedd yr un stryd ddi-ddôl.

Cymhwyswch yr un rhesymu i alwadau ôl taliadau a hysbysiadau allanol eraill: mae angen eu llwybr eu hunain i’r rhaglen breifat ar bob un, hyd yn oed pan fo pob person eisoes yn dal sesiwn VPN. Mae’r llwybr cyflenwi’n perthyn i ddyluniad y rhaglen, nid i droednodyn am rwydweithio.

Erthyglau cysylltiedig