Unaweza kufungua Jenkins kupitia VPN na bado uone GitHub ikiripoti webhook iliyoshindwa, kwa sababu hizi ni miunganisho miwili tofauti yenye wamiliki wawili tofauti. Kivinjari husafiri kupitia handaki ambalo kompyuta yako ilijadiliana; huduma ya uwasilishaji ya GitHub huanza kwenye intaneti ya umma na haina njia ya kuingia kwenye mtandao wa faragha. Ufikiaji wa hazina haubadilishi hilo, ingawa Jenkins yenyewe inaweza kuchukua kutoka hazina hiyo hiyo bila shida. Chagua kiingilio, kipitishaji au uchunguzi, kisha jaribu njia ambayo tukio hupita kwa kweli.

Kikao cha kivinjari huthibitisha mwelekeo mmoja tu

Muunganisho wa VPN hujibu swali moja: je, kompyuta hii inaweza kufikia mwenyeji wa ndani. Uwasilishaji wa webhook huuliza jambo lingine: je, huduma ya nje inaweza kufungua muunganisho kwa mwenyeji huyo. Ukweli kwamba Jenkins inachukua kutoka hazina ni trafiki inayotoka nje na haisemi chochote kuhusu ufikivu unaoingia. Weka mielekeo yote miwili kwenye mistari tofauti kwenye mchoro wako, ikiwa ni pamoja na upande gani huanzisha kila mmoja.

Soma rekodi ya uwasilishaji kabla ya kubadilisha chochote. Muda kuisha, muunganisho kuanzishwa upya na ombi lililokubaliwa ambalo halikulingana na kazi yoyote vina wamiliki watatu tofauti: mtandao, proksi na usanidi wa kichocheo.

Chaguo A: fungua kiingilio chembamba

Ikiwa shirika tayari linachapisha kiingilio kilichoidhinishwa, fungua njia ya webhook badala ya dashibodi. Kwa kawaida hiyo inamaanisha kanuni ya proksi mgeuzo inayokubali POST kwenye URL ya ndoano na kuzipeleka kwa Jenkins, wakati kiolesura cha utawala kinabaki kisifikikiwe kutoka nje.

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

Fanya jaribio hilo kutoka mtandao usio na ufikiaji wa VPN, kwa sababu mafanikio kutoka ndani ya handaki hayathibitishi chochote. Kiingilio kinapaswa kukataa maombi yasiyo na siri inayoshirikiwa, ambayo GitHub hutuma kama kichwa cha sahihi, na kikubali njia na mbinu moja tu uliyochapisha. Konsoli ya Jenkins ya umma si suluhisho la webhook; ni tukio linalosubiri kichanganuzi kinachofuata. Punguza kanuni kwa uthabiti wa kutosha ili programu iliyobaki ihifadhi udhibiti wa ufikiaji iliokuwa nao.

Chaguo B: geuza mwelekeo kwa kipitishaji

Mahali ambapo uwekaji wazi wa kuingia hautakubaliwa, mteja mdogo ndani ya mtandao anaweza kushikilia muunganisho wa kutoka kwa kipitishaji na kupokea matukio yaliyopitishwa. Kipitishaji basi huwa sehemu ya njia ya uwasilishaji, kwa hiyo upatikanaji na uthibitishaji wake ni muhimu kama kazi ya ujenzi.

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

Mwongozo wa Jenkins kuhusu webhook nyuma ya kuta za moto unaeleza umbo hili, na inafaa kusoma kabla ya kuandika kipitishaji chako. Maliza TLS kwenye kipitishaji, thibitisha sahihi kabla tukio halijafika kwenye kazi, na fuatilia kiungo cha kutoka, kwa sababu handaki lililovunjika linaonekana sawa kabisa na tukio ambalo halikutumwa kamwe. Thibitisha pia kwamba kipitishaji kinahifadhi mwili wa ombi baiti kwa baiti, kwa sababu ukaguzi wa sahihi hushindwa kwenye JSON iliyochanganuliwa na kusimbwa upya njiani.

Chaguo C: chunguza hazina badala yake

Uchunguzi hubadilisha ucheleweshaji kwa urahisi na hauhitaji njia ya kuingia kabisa. Jenkins inaweza kuchunguza kwa ratiba, au kazi ndogo inaweza kuuliza API na kuanzisha ujenzi inapoona marekebisho yasiyojulikana.

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

Kila uchunguzi hutumia simu za API na huongeza ucheleweshaji kati ya push na ujenzi, jambo linaloonekana kwenye hazina zenye shughuli nyingi na mipaka ya kasi inayoshirikiwa. Unahitaji pia vitambulisho vilivyohifadhiwa popote kichunguzi kinapofanya kazi, kwa hiyo punguza tokeni kwa ufikiaji wa kusoma tu kwenye hazina na uizungushe kama siri nyingine yoyote. Chagua hii wakati kiasi cha matukio ni kidogo au wakati kiingilio hakitakubaliwa kamwe, na useme hivyo katika maelezo ya kazi ili baadaye mtu asijiulize kwa nini ujenzi unachelewa.

Kubali uwasilishaji halisi, si upakiaji wa ukurasa

Chaguo lolote ulilochagua, jaribio la kukubali ni tukio lililotumwa na jukwaa la chanzo, si kichupo cha kivinjari kilichofunguliwa kutoka kompyuta yenye ruhusa. Sukuma commit tupu kwenye tawi la majaribio na soma msimbo wa jibu la uwasilishaji, kumbukumbu ya kipitishaji au matokeo ya kazi ya uchunguzi, kwa mpangilio huo. 200 kutoka kiingilio bila ujenzi inamaanisha chujio cha kichocheo si sahihi; muda kuisha inamaanisha njia bado imefungwa. Andika ni ipi kati ya miundo mitatu inatumika, vinginevyo mtu anayefuata kutatua hitilafu atarudia jaribio la kivinjari na kufikia njia ile ile iliyofungwa.

Tumia hoja hiyo hiyo kwa simu za malipo na arifa nyingine za nje: kila moja inahitaji njia yake ya kuingia kwenye programu ya faragha, hata wakati kila mtu tayari ana kikao cha VPN. Njia ya uwasilishaji ni sehemu ya muundo wa programu, si tanbihi kuhusu mitandao.

Makala zinazohusiana