Þú getur opnað Jenkins í gegnum VPN og séð GitHub samt tilkynna misheppnað webhook, því þetta eru tvær mismunandi tengingar með tvo mismunandi eigendur. Vafrinn fer um göng sem fartölvan þín samdi um; þjónusta GitHub við afhendingu hefst á opna internetinu og hefur enga slóð inn í einkanetið. Aðgangur að geymslunni breytir því ekki, jafnvel þótt Jenkins sjálft geti sótt úr sömu geymslu án vandræða. Veldu inngang, endurvarpa eða köllun og prófaðu svo slóðina sem atburðurinn fer í raun.

Vafralota sannar aðeins eina átt

VPN-tenging svarar einni spurningu: kemst þessi fartölva að innri vélinni. Afhending webhook spyr annarrar: getur utanaðkomandi þjónusta opnað tengingu við þá vél. Að Jenkins sæki geymslu er útleiðandi umferð og segir ekkert um innleiðandi aðgengi. Haltu báðum áttum á aðskildum línum í skýringarmyndinni, þar á meðal hvor hliðin hefur frumkvæði að hvorri.

Lestu afhendingarskrána áður en þú breytir einhverju. Tímamörk, endurstilling tengingar og samþykkt beiðni sem passaði við ekkert verk hafa þrjá mismunandi eigendur: net, proxy og stillingu kveikisins.

Valkostur A: opnaðu þröngan endapunkt

Ef samtökin birta þegar samþykktan inngang, opnaðu slóð webhook í stað stjórnborðsins. Það þýðir venjulega reglu um öfugt proxy sem tekur við POST á vefslóð króksins og sendir þau áfram til Jenkins á meðan stjórnviðmótið er áfram óaðgengilegt að utan.

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

Keyrðu þetta próf frá neti án VPN-aðgangs, því árangur innan úr göngunum sannar ekkert. Endapunkturinn ætti að hafna beiðnum án sameiginlega leynisins, sem GitHub sendir sem fyrirsögn undirskriftar, og taka aðeins við þeirri einu slóð og aðferð sem þú birtir. Opin Jenkins-stjórnborð er ekki webhook-lausn; það er atvik sem bíður næsta skanna. Afmarkaðu regluna nógu þröngt til að afgangur forritsins haldi þeim aðgangsstýringum sem það hafði.

Valkostur B: snúðu áttinni við með endurvarpa

Þar sem innleiðandi opnun verður ekki samþykkt getur lítill biðlari inni í netinu haldið útar tengingu við endurvarpa og tekið við áfram sendum atburðum. Endurvörpinn verður þá hluti af afhendingarslóðinni, svo framboð hans og auðkenning skipta jafn miklu máli og byggingarverkið.

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

Leiðbeiningar Jenkins um webhook bak við eldveggi lýsa þessu formi, og það er þess virði að lesa þær áður en þú skrifar eigin framsendingu. Ljúktu TLS hjá endurvarpanum, staðfestu undirskriftina áður en atburðurinn nær verkinu og fylgstu með útar tengingunni, því fallið göng líta nákvæmlega út eins og atburður sem var aldrei sendur. Staðfestu líka að endurvörpinn varðveiti líkama beiðninnar bæti fyrir bæti, því undirskriftarprófanir mistakast á JSON sem hefur verið þáttað og endurkóðað á leiðinni.

Valkostur C: kallaðu í geymsluna í staðinn

Köllun skiptir hikstoppi fyrir einfaldleika og þarf alls enga innleiðandi slóð. Jenkins getur kallað eftir áætlun, eða lítið verk getur spurt API og hafið byggingu þegar það sér ókunnuga útgáfu.

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

Hver köllun eyðir API-köllum og bætir töf milli push og byggingar, sem verður sýnileg á fjölförnum geymslum og sameiginlegum hraðamörkum. Hún þarf líka skilríki sem geymd eru þar sem kallarinn keyrir, svo takmarkaðu táknið við lesaðgang að geymslunni og snúðu því eins og hverju öðru leyndarmáli. Veldu þetta þegar magn atburða er lítið eða þegar inngangur verður aldrei samþykktur, og segðu það í lýsingu verksins svo enginn spyrji síðar hvers vegna byggingar dragast.

Samþykktu raunverulega afhendingu, ekki hleðslu síðu

Hvaða valkost sem þú valdir, samþykktarprófið er atburður sem upprunakerfið sendir, ekki vafraflipi opnaður af forréttindafartölvu. Ýttu tómu commit á tilraunagrein og lestu svarkóða afhendingarinnar, annál endurvarpans eða úttak kallaraverksins, í þeirri röð. 200 frá endapunktinum án byggingar þýðir að sía kveikisins er röng; tímamörk þýða að slóðin er enn lokuð. Skráðu hvaða af þremur hönnunum er í notkun, annars endurtekur næsti villuleitarmaður vafraprófið og lendir á sama blindgötunni.

Beittu sömu röksemd á endurköll greiðslna og önnur ytri tilkynningar: hvert þeirra þarf sína eigin slóð inn í einkarekna forritið, jafnvel þegar hver maður hefur þegar VPN-lotu. Afhendingarslóðin tilheyrir hönnun forritsins, ekki neðanmálsgrein um netkerfi.

Tengdir greinar