GitHub webhook-ak ez du Jenkins pribatura iristen: konpondu bidea
Zure ordenagailuko VPN saio batek ez dio GitHubi Jenkinsera biderik ematen. Alderatu sarrerako mutur bat, errele bat eta inkesta, eta gero probatu gertaerek egiten duten bidea.
Jenkins VPN bidez ireki dezakezu eta, hala ere, GitHub webhook huts egindakoa jakinarazten ikusi, bi konexio desberdin direlako, jabe desberdinekin. Nabigatzaileak zure ordenagailuak negoziatu duen tunel batetik bidaiatzen du; GitHuben entrega zerbitzua internet publikoan hasten da eta ez du biderik sare pribatura. Biltegirako sarbideak ez du hori aldatzen, Jenkins bera gai izan badaiteke ere biltegi beretik arazorik gabe eskuratzeko. Aukeratu sarrera-puntu bat, errele bat edo inkesta, eta gero probatu gertaerak benetan egiten duen bidea.
Nabigatzaile saio batek norabide bakarra frogatzen du
VPN konexio batek galdera bat erantzuten du: ordenagailu hau gai da barneko ostalaria iristeko. Webhook entregoak beste bat galdetzen du: zerbitzu kanpoko batek konexio bat ireki dezake ostalari horretara. Jenkins biltegi bat eskuratzea irteerako trafikoa da eta ez du ezer esaten sarrerako irisgarritasunaz. Eutsi bi norabideak zure diagramako lerro bereizietan, bakoitza zein alde hasten duen barne.
Irakurri entrega erregistroa ezer aldatu aurretik. Denbora-muga batek, konexio berrezarpen batek eta inolako lanekin bat egin ez zuen eskaera onartu batek hiru jabe desberdin dituzte: sarea, proxy-a eta abiarazlearen konfigurazioa.
Aukera A: azaleratu mutur estu bat
Erakundeak dagoeneko onartutako sarrera-puntu bat argitaratzen badu, azaleratu webhookaren bidea, panelaren ordez. Hori normalean alderantzizko proxy arau bat da, kakoaren URL-an POST onartzen duena eta Jenkinsean birbidaltzen dituena, administrazio interfazea kanpotik iristezina izaten jarraitzen duen bitartean.
curl -sS -o /dev/null -w "%{http_code}\n" -X POST https://jenkins.example.com/github-webhook/Exekutatu proba hori VPN sarbiderik gabeko sare batetik, tunelaren barruko arrakastak ez baitu ezer frogatzen. Muturrak sekretu partekaturik ez duten eskaerak baztertu beharko lituzke, GitHubek sinadura goiburu gisa bidaltzen duena, eta argitaratu duzun bide eta metodo bakarra onartu. Jenkins kontsol publiko bat ez da webhook konponbidea; hurrengo eskaneatzailearen zain dagoen gertaera bat da. Mugatu araua nahikoa estu aplikazioaren gainerakoak lehen zituen sarbide kontrolak gorde ditzan.
Aukera B: iraul ezazu norabidea errele batekin
Sarrerako azaleratzea onartuko ez den lekuetan, sarearen barruko bezero txiki batek irteerako konexio bat eutsi diezaioke errele batera eta birbidalitako gertaerak jaso. Errelea entrega bidearen parte bihurtzen da orduan, beraz, haren erabilgarritasunak eta autentifikazioak eraikuntza lanak adina balio dute.
ssh -N -R 9000:localhost:8080 relay.example.netJenkinsen gidak suebakien atzeko webhookei buruz forma hau deskribatzen du, eta merezi du irakurtzea propio egindako birbidaltzaile bat idatzi aurretik. Amaitu TLS errelean, egiaztatu sinadura gertaerak lana iritsi aurretik, eta monitorizatu irteerako esteka, eroritako tunel bat inoiz bidali ez zen gertaera baten itxura berdina baitu. Egiaztatu ere erreleak eskaeraren gorputza bytez byte gordetzen duela, sinadura egiaztapenek huts egiten baitute bidean analizatu eta berriz kodetu den JSON-arekin.
Aukera C: inkestatu biltegia
Inkestak latentzia sinpletasunaren truke aldatzen du eta ez du sarrerako biderik behar. Jenkins-ek ordutegi baten arabera inkesta dezake, edo lan txiki batek API-a kontsultatu eta eraikuntza has dezake errebisio ezezagun bat ikustean.
curl -sS -u "$USER:$TOKEN" "https://api.github.com/repos/OWNER/REPO/commits?per_page=1"Inkesta bakoitzak API deiak gastatzen ditu eta atzerapen bat gehitzen du push eta eraikuntzaren artean, biltegi jendetsuetan eta partekatutako abiadura mugekin nabaria dena. Nonahi gordetako kredentzialak ere behar ditu inkestatzailea exekutatzen den tokian, beraz mugatu tokena biltegirako irakurketa soilerako sarbidera eta biratu beste edozein sekretu bezala. Aukeratu hau gertaeren bolumena baxua denean edo sarrera-puntu bat inoiz onartuko ez denean, eta esan lana deskribapenean inork geroago eraikuntzak zergatik atzeratzen diren galdetu ez dezan.
Onartu benetako entrega bat, ez orri karga bat
Aukeratu duzun aukera edozein dela, onarpen proba jatorrizko plataformak bidalitako gertaera bat da, ez pribilegiodun ordenagailu batetik irekitako nabigatzaile fitxa bat. Bultzatu commit huts bat behin-behineko adar batera eta irakurri entrega erantzun kodea, errelearen erregistroa edo inkesta lanaren irteera, hurrenkera horretan. Muturraren 200 bat eraikuntzarik gabe esan nahi du abiarazlearen iragazkia oker dagoela; denbora-muga batek bidea oraindik itxita dagoela. Idatzi hiru diseinuetatik zein erabiltzen den, bestela hurrengo arazketa egingo duenak nabigatzaile proba errepikatuko baitu eta hildako kale berera iritsiko da.
Aplikatu arrazoibide bera ordainketen callback-ei eta kanpoko beste jakinarazpenei: bakoitzak bere bidea behar du aplikazio pribatura, pertsona orok dagoeneko VPN saio bat duenean ere. Entrega bidea aplikazioaren diseinuarena da, ez sareei buruzko oin-ohar batena.