Jo kinne Jenkins oer de VPN iepenje en dochs sjogge dat GitHub in mislearre webhook meldt, want dat binne twa ferskillende ferbiningen mei twa ferskillende eigners. De browser rydt oer in tunnel dy’t jo laptop ûnderhannele hat; de leveringsstsjinst fan GitHub begjint op it iepenbiere ynternet en hat gjin rûte nei it privee netwurk. Tagong ta de opslach feroaret dat net, ek al kin Jenkins sels sûnder swierrichheden út deselde opslach helje. Kies in yngong, in relais of polling, en test dan it paad dat it barren echt nimt.

In browsersesje bewiist mar ien rjochting

In VPN-ferbining beantwurdet ien fraach: kin dizze laptop de ynterne host berikke. Levering fan webhook freget in oare: kin in eksterne tsjinst in ferbining nei dy host iepenje. Dat Jenkins in opslach hellet, is útgeand ferkear en seit neat oer yngeande berikberens. Hâld beide rjochtingen op aparte rigels yn jo diagram, ynklusyf hokker kant elk begjint.

Lês it leveringsrecord foardat jo eat feroarje. In time-out, in weromsette ferbining en in akseptearre fersyk dat by gjin inkele taak paste, hawwe trije ferskillende eigners: netwurk, proxy en de konfiguraasje fan de trigger.

Opsje A: in smel einpunt bleatstelle

As de organisaasje al in goedkarde yngong publisearret, bleatstel dan it webhook-paad ynstee fan it dashboard. Dat betsjut meastentiids in omkearde-proxy-regel dy’t POST’s op de hook-URL akseptearret en se trochstjoert nei Jenkins, wylst de behearinterface fan bûten ûnberikber bliuwt.

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

Fier dy test út fan in netwurk sûnder VPN-tagong, want in sukses fan binnen de tunnel bewiist neat. It einpunt moat fersiken sûnder it mienskiplike geheim ôfwize, dat GitHub as hantekening-header stjoert, en it moat allinnich it iene paad en de iene metoade akseptearje dy’t jo publisearre hawwe. In iepenbiere Jenkins-konsole is gjin webhook-oplossing; it is in ynsidint dat wachtet op de folgjende scanner. Behein de regel strang genôch dat de rest fan ’e applikaasje de tagongskontrôles hâldt dy’t it hie.

Opsje B: keare de rjochting om mei in relais

Dêr’t yngeande bleatstelling net goedkard wurde sil, kin in lytse klant yn it netwurk in útgeande ferbining nei in relais hâlde en trochstjoerde barrens ûntfange. It relais wurdt dan diel fan it leveringspaad, dat syn beskikberens en autentikaasje binne like wichtich as de bou-opdracht.

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

De lieding fan Jenkins oer webhooks efter firewalls beskriuwt dizze foarm, en it is de muoite wurdich om dy te lêzen foardat jo in eigen trochstjoerder skriuwe. Beëinigje TLS by it relais, ferifiearje de hantekening foardat it barren de taak berikt, en monitorje de útgeande keppeling, want in fallen tunnel liket krekt op in barren dat nea stjoerd is. Befêstigje ek dat it relais it fersyklichaam byte foar byte bewarret, want hantekeningkontrôles mislearje op JSON dat ûnderweis parsed en opnij kodearre is.

Opsje C: poll de opslach ynstee

Polling ruilet fertraging foar ienfâld en hat hielendal gjin yngeand paad nedich. Jenkins kin pollje neffens in skema, of in lytse taak kin de API befreegje en in bou starte as it in ûnbekende ferzje sjocht.

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

Elke polling brûkt API-oproppen en foeget fertraging ta tusken push en bou, wat sichtber wurdt op drokke opslaggen en dielde snelheidslimiten. It hat ek bewizen nedich dy’t bewarre wurde dêr’t de poller ek rint, dus behein it token ta lês-allinnich tagong ta de opslach en rotearje it as elk oar geheim. Kies dit as it barrenfolume leech is of as in yngong nea goedkard wurde sil, en sis dat yn ’e taakbeskriuwing sadat nimmen letter ôffreget wêrom’t bouwen efterbliuwe.

Akseptearje in echte levering, gjin siden laden

Hokker opsje jo ek keazen hawwe, de akseptaasjetest is in barren dat troch it boarneplatfoarm stjoerd is, net in browser-tab dy’t fan in befoarrjochte laptop iepene is. Push in leech commit nei in skrabbetûke en lês de antwurdkoade fan ’e levering, it relaislogboek of de útfier fan ’e polling-taak, yn dy folchoarder. In 200 fan it einpunt sûnder bou betsjut dat it triggerfilter ferkeard is; in time-out betsjut dat it paad noch ticht is. Notearje hokker fan ’e trije ûntwerpen brûkt wurdt, want oars sil de folgjende persoan dy’t debugt de browsertest werhelje en by deselde deade hoeke útkomme.

Pas deselde redenearring ta op betellings-callbacks en oare notifikaasjes fan bûten: elk hat syn eigen rûte nei de privee applikaasje nedich, sels as elk minske al in VPN-sesje hat. It leveringspaad heart by it ûntwerp fan ’e applikaasje, net by in fuotnoat oer netwurk.

Relatearre artikelen