Webhook GitHub kò dé Jenkins aládàáni: tún ọ̀nà ṣe
Ìpàdé VPN lórí kọ̀mpútà rẹ kò fún GitHub ní ọ̀nà sí Jenkins. Fi ibi ìparí tí ó ń wọlé, atọ́nà àti ìwádìí wé, lẹ́yìn náà dán ọ̀nà tí àwọn ìṣẹ̀lẹ̀ ń gbà wò.
O lè ṣí Jenkins nípasẹ̀ VPN kí o sì tún rí i tí GitHub ń kéde webhook tí kò ṣẹ́, nítorí pé ìsopọ̀ méjì ọ̀tọ̀ọ̀tọ̀ pẹ̀lú olúwa méjì ọ̀tọ̀ọ̀tọ̀ ni wọ́n. Buraúsà ń gba inú ihò tí kọ̀mpútà rẹ ti fọwọ́ sí; iṣẹ́ ìfijíṣẹ́ GitHub bẹ̀rẹ̀ láti íńtánẹ́ẹ̀tì gbogbogbo kò sì ní ọ̀nà sínú nẹ́tíwọ́ọ̀kì àdáni. Àǹfààní sí ibi ìpamọ́ kò yí i padà, bí ó tilẹ̀ jẹ́ pé Jenkins fúnra rẹ̀ lè gbà látinú ibi ìpamọ́ kan náà láìsí wàhálà. Yan ọ̀nà ìwọlé, atọ́nà tàbí ìwádìí, lẹ́yìn náà dán ọ̀nà tí ìṣẹ̀lẹ̀ ń gbà ní ti gidi wò.
Ìpàdé buraúsà ń fi ọ̀nà kan hàn nìkan
Ìsopọ̀ VPN ń dáhùn ìbéèrè kan: ṣé kọ̀mpútà yìí lè dé ọ̀gá ilé ìnú. Ìfijíṣẹ́ webhook ń béèrè òmíràn: ṣé iṣẹ́ ìta lè ṣí ìsopọ̀ sí ọ̀gá ilé yẹn. Pé Jenkins ń gbà látinú ibi ìpamọ́ jẹ́ ìrìnàjò tí ó ń jáde kò sì sọ ohunkóhun nípa àǹfààní tí ó ń wọlé. Pa ọ̀nà méjèèjì mọ́ lórí ìlà ọ̀tọ̀ọ̀tọ̀ nínú àwòrán rẹ, pẹ̀lú ẹ̀gbẹ́ tí ó bẹ̀rẹ̀ ọ̀kọ̀ọ̀kan.
Ka àkọsílẹ̀ ìfijíṣẹ́ kí o tó yí ohunkóhun padà. Àkókò tí ó tán, ìsopọ̀ tí ó tún bẹ̀rẹ̀ àti ìbéèrè tí a gbà tí kò bá iṣẹ́ kankan mu ní olúwa mẹ́ta ọ̀tọ̀ọ̀tọ̀: nẹ́tíwọ́ọ̀kì, aṣojú àti ìṣètò olùtanni.
Àṣàyàn A: ṣí ibi ìparí tó há
Bí àjọ náà bá ti ń tẹ̀ jáde ọ̀nà ìwọlé tí a fọwọ́ sí, ṣí ọ̀nà webhook dípò pátákó ìṣàkóso. Ní gbogbo ìgbà èyí túmọ̀ sí òfin aṣojú yípadà tí ó ń gba POST ní URL ìkọkọ̀ tí ó sì ń fi wọ́n ránṣẹ́ sí Jenkins, nígbà tí ojú-ìwé ìṣàkóso yóò wà ní àìdé ọ̀dọ̀ látẹ̀yìn.
curl -sS -o /dev/null -w "%{http_code}\n" -X POST https://jenkins.example.com/github-webhook/Ṣe ìdánwò yẹn láti nẹ́tíwọ́ọ̀kì tí kò ní àǹfààní VPN, nítorí pé àṣeyọrí láti inú ihò kò fi ohunkóhun hàn. Ibi ìparí yẹ kí ó kọ̀ àwọn ìbéèrè tí kò ní àṣírí tí a pín, èyí tí GitHub ń rán gẹ́gẹ́ bí àkọlé ìfọwọ́sí, kí ó sì gba ọ̀nà àti ọ̀nà kan ṣoṣo tí o tẹ̀ jáde. Kọ́nsólì Jenkins gbogbogbo kì í ṣe àtúnṣe webhook; ìṣẹ̀lẹ̀ ni tí ó ń dúró de olùṣàyẹ̀wò tó kàn. Dín òfin náà kí ó tó kí apá tó kù ti ètò náà pa àwọn ìṣàkóso àǹfààní tí ó ní mọ́.
Àṣàyàn B: yí ọ̀nà padà pẹ̀lú atọ́nà
Níbi tí a kò ní fọwọ́ sí ìṣífihàn tí ó ń wọlé, ọmọ ẹ̀rọ kékeré nínú nẹ́tíwọ́ọ̀kì lè pa ìsopọ̀ tí ó ń jáde mọ́ atọ́nà kí ó sì gba àwọn ìṣẹ̀lẹ̀ tí a fi ránṣẹ́. Atọ́nà náà wá di apá kan ọ̀nà ìfijíṣẹ́, nítorí náà wíwà àti ìjẹ́rìí rẹ̀ ṣe pàtàkì bí iṣẹ́ kíkọ́.
ssh -N -R 9000:localhost:8080 relay.example.netÌtọ́nisọ́nà Jenkins nípa webhook lẹ́yìn ògiri iná ń ṣàpèjúwe irú yìí, ó sì yẹ kí a kà á kí a tó kọ olùfiránṣẹ́ tiwa. Parí TLS ní atọ́nà, ṣàyẹ̀wò ìfọwọ́sí kí ìṣẹ̀lẹ̀ tó dé iṣẹ́, kí o sì máa ṣọ́ ìsopọ̀ tí ó ń jáde, nítorí pé ihò tí ó já bọ́ ń rí bí i ìṣẹ̀lẹ̀ tí a kò fi ránṣẹ́ rí. Ṣàyẹ̀wò pẹ̀lú pé atọ́nà ń pa ara ìbéèrè mọ́ báìtì báìtì, nítorí àwọn àyẹ̀wò ìfọwọ́sí ń kùnà lórí JSON tí a ti ṣàyẹ̀wò tí a sì tún kọ́ọ̀dù rẹ̀ lójú ọ̀nà.
Àṣàyàn C: ṣe ìwádìí ibi ìpamọ́
Ìwádìí ń pààrọ̀ ìdádúró fún ìrọ̀rùn kò sì nílò ọ̀nà ìwọlé rárá. Jenkins lè ṣe ìwádìí nípa àkókò tí a ṣètò, tàbí iṣẹ́ kékeré lè béèrè lọ́wọ́ API kí ó sì bẹ̀rẹ̀ kíkọ́ nígbà tí ó bá rí àtúnyẹ̀wò tí kò mọ̀.
curl -sS -u "$USER:$TOKEN" "https://api.github.com/repos/OWNER/REPO/commits?per_page=1"Ìwádìí kọ̀ọ̀kan ń ná àwọn ìpè API tí ó sì ń fi ìdádúró kún àárín push àti kíkọ́, èyí tí ó máa ń hàn lórí àwọn ibi ìpamọ́ tí ó kún àti àwọn ààlà ìyára tí a pín. Ó tún nílò àwọn ẹ̀rí ìdánimọ̀ tí a fi pamọ́ níbikíbi tí olùwádìí bá ń ṣiṣẹ́, nítorí náà dín tọ́kẹ̀n náà sí àǹfààní kíkà nìkan lórí ibi ìpamọ́ kí o sì máa yí i padà bí àṣírí mìíràn. Yan èyí nígbà tí iye ìṣẹ̀lẹ̀ bá kéré tàbí nígbà tí a kò ní fọwọ́ sí ọ̀nà ìwọlé láé, kí o sì sọ ọ́ nínú àpèjúwe iṣẹ́ kí ẹnikẹ́ni má baà ṣe àrà nípa ìdí tí kíkọ́ fi ń dádúró.
Gbà ìfijíṣẹ́ gidi, kì í ṣe ìkójọ ojú-ìwé
Ohun tí o bá yàn, ìdánwò ìgbàwọlé ni ìṣẹ̀lẹ̀ tí pẹpẹ orísun rán, kì í ṣe táàbù buraúsà tí a ṣí láti kọ̀mpútà tí ó ní àǹfààní pàtàkì. Fi commit tí ó ṣófo rán sí ẹ̀ka ìdánwò kí o sì ka kóòdù ìdáhùn ìfijíṣẹ́, àkọsílẹ̀ atọ́nà tàbí jáde iṣẹ́ ìwádìí, ní ìtòlẹ́sẹẹsẹ yẹn. 200 láti ibi ìparí láìsí kíkọ́ túmọ̀ sí pé àlẹ̀mọ́ olùtanni kò tọ́; àkókò tí ó tán túmọ̀ sí pé ọ̀nà ṣì ti. Ṣàkọsílẹ̀ èyí tí a ń lò nínú àwọn àwòṣe mẹ́ta, nítorí pé bí bẹ́ẹ̀ kọ́ ẹni tó kàn yóò tún ìdánwò buraúsà ṣe yóò sì dé ọ̀nà àìjáde kan náà.
Lo ìrònú kan náà fún àwọn ìpè ìsanwó àti àwọn ìkéde ìta mìíràn: ọ̀kọ̀ọ̀kan nílò ọ̀nà tirẹ̀ sínú ètò àdáni, bí ó tilẹ̀ jẹ́ pé gbogbo ènìyàn ti ní ìpàdé VPN. Ọ̀nà ìfijíṣẹ́ jẹ́ apá kan àṣà ètò náà, kì í ṣe àkọsílẹ̀ ẹ̀sẹ̀ nípa nẹ́tíwọ́ọ̀kì.