Bogga dirida wuxuu muujinayaa waqti-beeg oo Jenkins waxba ma diiwaangeliyo, taas oo calaamad u ah xiriir aan waligiis iman. GitHub wuxuu webhook u diraa sida HTTP POST baxa oo ka socda kaabayaashiisa u gaar ah una socda payload URL aad dejisay. VPN waxay Jenkins u difaacdaa iyada oo diidda isla noocaas xiriirka. Waxba kama jaban dhanka kasta. Dhibaatadu waa jihada codsiga.

Waxa diridu dhab ahaan isku daydo

GitHub wuxuu xalliyaa magaca martigeliyaha ee payload URL oo wuxuu kala xiriiraa internetka dadweynaha. Haddii URL-kaasi tilmaamo cinwaan gaar ah, ama magac kaliya gudaha shabakaddaada lagu xalliyo, isku daygu wuu guuldarraystaa ka hor inta aan la dirin wax codsi ah. Haddii uu tilmaamo magac dadweyne oo cidhifkaagu tuuro, isku daygu wuu waqti-beegaa beddelkeeda.

Farqigaani waa muhiim u ah ogaanshaha. Guuldarrada DNS iyo deked la sifeeyay labaduba waxay u muuqdaan sida wax aan ka dhicin dhanka Jenkins, labaduba waxay GitHub ku muuqdaan sida dirin guuldarraysatay oo sabab kale ku lifaaqan. Akhri sababtaas ka hor inta aadan beddelin URL-ka.

Tunnel dibadda wacaya ma abuuro dhageystaha. Taasi waa qaybta dadku filaan inay si kale u shaqeyso.

Saddex siyaabood oo loo saxayo jihada xiriirka

Xal kastaa wuxuu beddelaa qofka bilaabaya xiriirka, oo waxaa jira saddex qaab oo keliya.

ApproachWho initiatesWhat you give up
Relay serviceAn outbound client inside the networkA third party sees every payload
Reverse tunnel or ingressThe public edge, into a controlled listenerAn inbound surface you must secure
Runner or pollingThe agent, outbound to GitHubInstant delivery, replaced by a schedule

Baaritaanku waa kan ugu yar quruxda iyo kan ugu fudud in la maamulo. Relay wuxuu hayaa jawaab degdeg ah isagoo aan furin deked. Runner badanaa waa jawaabta saxda ah marka qarsoonaanta payload ay ka saarto dhinac saddexaad, maxaa yeelay shaqadu waxay ku socon kartaa mishiin horey ugu jira shabakadda.

Ku dooro waxa aad maamuli karto, ma aha waxa casri ah u eg.

U gudbi dirida dibadda iyada oo la isticmaalayo smee

Ka samee kanaal adeegga relay oo hay URL-kiisa. Gudaha shabakadda, rakib macmiilka oo u gudbi dirida waddada Jenkins filayo. Payload URL-ka dejinta kaydka wuxuu noqdaa URL-ka kanaalka, iyada oo nooca waxyaabaha lagu dejiyay application/json.

sudo npm install --global smee-client
smee -u CHANNEL_URL --path /github-webhook/ --port 8080

Saddex faahfaahin ayaa go'aansada inuu shaqeeyo iyo in kale. Waddadu waa inay la macaamilaan waxa Jenkins filayo dhacdooyinka GitHub, taas oo si caadi ah /github-webhook/. Jenkins waa inuu dhageystaa dekedda aad macmiilka siisay. Oo Jenkins URL-ka lagu dejiyay shaqada waa inuu la qaadan waddadaas, haddii kale dhacdadu way timaaddaa kadibna waa la tuuraa.

Iskuma-aan-ekayn xariijinta dhammaadka ayaa soo saara 404 oo loo akhriyo guuldarro dirin oo aan sidaas ahayn.

Ku socodsiinta si ay toddobaadka uga gudubto

Macmiil hore ku jira wuxuu la dhintaa terminalka, webhook-yaduna hal maalin ayay shaqeeyaan kadibna joogsadaan. Sii unit leh Restart=always, ku socodsiiso isticmaalaha Jenkins ahaan, oo akhri journal ka dib dirida dhabta ah ee ugu horreysa. Tallaabadaas ugu dambeysa ayaa kala soocda relay shaqaynaya iyo mid la dejiyay.

[Unit]
Description=smee webhook relay
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=2
User=jenkins
ExecStart=/usr/bin/smee -u CHANNEL_URL --path /github-webhook/ --port 8080

[Install]
WantedBy=multi-user.target

Ku tijaabi push dhab ah halkii badhanka dib-u-ciyaar. Dib-u-ciyaarku wuxuu tababaraa payload kaydsan relay, ma aha waddada GitHub ilaa kanaalkaaga, sidaas darteed wuu gudbi karaa iyada oo dirida tooska ah wali guuldarraysan.

Digniin bixi marka unit-ku joogsado. Relay hoos yaal waa aamusan dhismaha, aammusnaantu waa tan aad horey u baadhaysay.

Waxa relay arki karo, iyo goorta aan la isticmaalin

Relay wuxuu dhammeeyaa payload-ka, sidaas darteed wuxuu arkaa magacyada kaydka, xogta commit iyo wax kasta oo dhacdadu qaaddo. Ula dhaqan URL-ka kanaalka sida barta dhammaadka dadweynaha. Hay secret token Jenkins diyaarsan si dirin been abuur ah loo diido, oo xaddid token-ka Jenkins isticmaalo ugu yaraan loo baahan yahay.

Haddii qarsoonaanta payload ay taas ka saarto, runner isku-hagaya ama tunnel rogan oo la xaqiijiyay waa jawaabta.

Relay hadda waa kaabayaal, oo wuxuu mudan yahay dib-u-eegis la mid ah build-ka uu kiciyo. Wareeji kanaalka haddii uu daato, oo qor taariikhda aad ugu dambeysey xaqiijisay dirin toos ah. Taariikhdaas geli runbook-ka agteeda URL-ka kanaalka. Relay aan qofna dib u eegin sanad, waa barta dhammaadka dadweynaha oo aan qofna lahaansho.

Maqaallo la xiriira