Taispeánann an leathanach seachadta amdhíobháil agus ní thaifeadann Jenkins rud ar bith, rud atá ina shíniú ar naisc nár shroich riamh. Seolann GitHub webhook mar HTTP POST amach óna bhonneagar féin chuig an payload URL a chumraigh tú. Cosnaíonn VPN Jenkins trí dhíúltú go díreach don chineál sin naisc. Níl aon rud briste ar an dá thaobh. Is é treo an iarratais an fhadhb.

Cad a dhéanann an seachadadh i ndáiríre

Réitíonn GitHub an t-ainm óstach san payload URL agus nascann sé leis ón idirlíon poiblí. Má thagann an URL sin chuig seoladh príobháideach, nó chuig ainm nach réitítear ach laistigh de do líonra, teipeann ar an iarracht sula ndéantar aon iarratas. Má thagann sé chuig ainm poiblí a scaoileann do chiumhais, téann an iarracht in am ina ionad.

Tá tábhacht leis an idirdhealú sin don diagnóis. Breathnaíonn teip DNS agus port scagtha araon amhail nár tharla aon rud ar thaobh Jenkins, agus feictear an dá rud ar GitHub mar sheachadadh teipthe le cúis éagsúil ceangailte. Léigh an chúis sin sula n-athraíonn tú an URL.

Ní chruthaíonn tollán a dhiaileálann amach éisteoir. Sin an chuid a bhfuil daoine ag súil go n-oibreoidh sí ar bhealach difriúil.

Trí bhealach chun treo an naisc a cheartú

Athraíonn gach réiteach cé a chuireann tús leis an nasc, agus níl ann ach trí chruth.

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

Is é an pobalbhreith an ceann is lú galánta agus is éasca le hoibriú. Coinníonn relay aiseolas beagnach láithreach gan port a oscailt. Is é runner an freagra ceart de ghnáth nuair a eisíonn rúndacht an payload tríú páirtí, toisc gur féidir an post a reáchtáil ar mheaisín atá laistigh den líonra cheana féin.

Roghnaigh de réir an rud is féidir leat a oibriú, ní de réir an rud a fhuaimníonn nua-aimseartha.

Seol seachadadh amach le smee

Cruthaigh cainéal ar an tseirbhís relay agus coinnigh a URL. Laistigh den líonra, suiteáil an cliant agus seol seachadtaí chuig an gcosán a bhfuil Jenkins ag súil leis. Tagann payload URL i socruithe an stórais chun bheith ina URL an chainéil, agus an cineál ábhair socraithe go application/json.

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

Cinneann trí mhionsonraí an n-oibríonn sé. Caithfidh an cosán a bheith ag teacht leis an rud a bhfuil Jenkins ag súil leis d’imeachtaí GitHub, is é sin /github-webhook/ de réir réamhshocraithe. Caithfidh Jenkins a bheith ag éisteacht ar an bport a thug tú don chliant. Agus caithfidh an Jenkins URL atá cumraithe sa phost teacht leis an gcosán sin, nó tagann an t-imeacht agus caitear amach ansin é.

Táirgeann claonfort deiridh nach réitíonn 404 a léitear mar theip seachadta agus nach ea.

Agus é á reáchtáil ionas go mairfidh sé an tseachtain

Faigheann cliant tosaigh bás leis an teirminéal, agus oibríonn na webhooks lá amháin agus stopann ansin. Tabhair unit leis an Restart=always dó, reáchtáil é mar úsáideoir Jenkins, agus léigh an journal tar éis an chéad seachadadh fíor. Is é an chéim dheireanach sin a scarann relay atá ag obair ó relay atá cumraithe.

[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

Tástáil le push fíor seachas le cnaipe athsheinm. Cleachtann athsheinm payload stóráilte an relay, ní an cosán ó GitHub go do chainéal, mar sin féadann sé pasáil agus an seachadadh beo fós ag teip.

Tabhair foláireamh nuair a stopann an unit. Tá relay atá síos ciúin de réir a dhéanta, agus is é an ciúnas an rud a bhfuil tú ag dífhabhtú cheana féin.

Cad is féidir leis an relay a fheiceáil, agus cathain gan ceann a úsáid

Cuireann relay críoch le payload, mar sin feiceann sé ainmneacha stóras, sonraí commit agus gach aon rud eile a iompraíonn an t-imeacht. Caith le URL an chainéil mar chríochphointe poiblí. Coinnigh an secret token Jenkins cumraithe ionas go ndiúltófar do sheachadtaí bréige, agus cuir raon an token a úsáideann Jenkins go dtí an t-íosmhéid a theastaíonn.

Má eisíonn rúndacht an payload é sin, runner féinóstálaithe nó tollán droim ar ais fíordheimhnithe an freagra.

Is bonneagar é relay anois, agus tá sé tuillte aige an léirmheas céanna leis an build a spreagann sé. Rothlaigh an cainéal má sceitheann sé, agus nótaigh an dáta a bhfuaras tú seachadadh beo le déanaí. Cuir an dáta sin sa runbook in aice le URL an chainéil. Is críochphointe poiblí é relay nach bhfuil athbhreithnithe ag aon duine le bliain, agus níl aon duine ina úinéir air.

Ailt ghaolmhara