Il-paġna tal-kunsinna turi waqt ta’ stennija u Jenkins ma jirreġistra xejn, li huwa s-sinjal ta’ konnessjoni li qatt ma waslet. GitHub jibgħat webhook bħala HTTP POST li joħroġ mill-infrastruttura tiegħu stess lejn il-payload URL li kkonfigurajt. VPN jipproteġi Jenkins billi jiċħad eżatt dak it-tip ta’ konnessjoni. Xejn mhuwa miksur fuq ebda naħa. Il-problema hija d-direzzjoni tat-talba.

X’jipprova verament il-kunsinna

GitHub jissolvi l-isem tal-host fil-payload URL u jikkonnettja miegħu mill-internet pubbliku. Jekk dak l-URL jipponta lejn indirizz privat, jew lejn isem li jissolvi biss ġewwa n-netwerk tiegħek, il-prova tfalli qabel ma ssir xi talba. Jekk jipponta lejn isem pubbliku li t-tarf tiegħek jarmi, il-prova minflok taqbeż il-ħin.

Din id-differenza hija importanti għad-dijanjosi. Falliment ta’ DNS u port iffiltrat it-tnejn jidhru qisu ma ġara xejn fuq in-naħa ta’ Jenkins, u t-tnejn jidhru fuq GitHub bħala kunsinna falluta b’raġuni differenti mehmuża. Aqra dik ir-raġuni qabel ma tbiddel l-URL.

Tunnel li ċempel ’il barra ma joħloqx wieħed li jisma’. Dak huwa l-parti li n-nies jistennew taħdem b’mod differenti.

Tliet modi kif tissewwa d-direzzjoni tal-konnessjoni

Kull soluzzjoni tbiddel min jibda l-konnessjoni, u hemm biss tliet forom.

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

L-istħarriġ huwa l-inqas eleganti u l-eħfef biex jitħaddem. Relay iżomm feedback kważi immedjat mingħajr ma jiftaħ port. Runner normalment huwa t-tweġiba t-tajba meta l-kunfidenzjalità tal-payload teskludi parti terza, għax ix-xogħol jista’ jaħdem fuq magna li diġà tinsab ġewwa n-netwerk.

Agħżel skont dak li tista’ tħaddem, mhux skont dak li jinstema’ modern.

Erfa’ kunsinna ’il barra b’smee

Oħloq kanal fuq is-servizz tar-relay u żomm l-URL tiegħu. Ġewwa n-netwerk, installa l-klijent u erfa’ l-kunsinni lejn il-passaġġ li jistenna Jenkins. Il-payload URL fis-settings tar-repożitorju jsir l-URL tal-kanal, bit-tip tal-kontenut stabbilit għal application/json.

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

Tliet dettalji jiddeċiedu jekk jaħdimx. Il-passaġġ irid jaqbel ma’ dak li jistenna Jenkins għall-avvenimenti ta’ GitHub, li b’mod awtomatiku huwa /github-webhook/. Jenkins irid jisma’ fuq il-port li tajt lill-klijent. U Jenkins URL konfigurat fix-xogħol irid jaqbel ma’ dak il-passaġġ, inkella l-avveniment jasal u mbagħad jintrema.

Nuqqas ta’ qbil ta’ slash fl-aħħar jipproduċi 404 li jinqara bħala falliment tal-kunsinna u mhuwiex.

Tmexxija b’tali mod li tgħaddi l-ġimgħa

Klijent fil-quddiem imut mat-terminal, u l-webhooks jaħdmu jum u mbagħad jieqfu. Agħtih unit b’Restart=always, ħaddmu bħala utent Jenkins, u aqra l-journal wara l-ewwel kunsinna vera. Dak l-aħħar pass huwa dak li jifred relay li jaħdem minn wieħed konfigurat.

[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

Ittestja b’push vera minflok ma’ butuna ta’ ripetizzjoni. Ripetizzjoni teżerċita l-payload maħżun tar-relay, mhux il-passaġġ minn GitHub għall-kanal tiegħek, għalhekk tista’ tgħaddi waqt li l-kunsinna diretta għadha tfalli.

Agħti twissija meta l-unit jieqaf. Relay li jkun waqaf huwa sieket b’kostruzzjoni, u s-skiet huwa eżatt dak li diġà qed tdebuggja.

X’jista’ jara r-relay, u meta ma tużax wieħed

Relay itemm il-payload, għalhekk jara l-ismijiet tar-repożitorji, id-data tal-commit u kull ma jġorr l-avveniment. Ittratta l-URL tal-kanal bħala punt aħħari pubbliku. Żomm it-token sigriet ta’ Jenkins konfigurat biex il-kunsinni ffalsifikati jiġu miċħuda, u llimita t-token li juża Jenkins għall-minimu meħtieġ.

Jekk il-kunfidenzjalità tal-payload teskludi dan, runner awto-ospitat jew tunnel maqlub awtentikat hija t-tweġiba.

Relay issa huwa infrastruttura, u jistħoqqlu l-istess reviżjoni bħall-build li jqanqal. Dawwar il-kanal jekk joħroġ, u noti d-data meta l-aħħar ivverifikajt kunsinna diretta. Poġġi dik id-data fir-runbook ħdejn l-URL tal-kanal. Relay li ħadd ma rreveda għal sena huwa punt aħħari pubbliku li ħadd ma jippossjedi.

Artikli relatati