Сиз Jenkinsти VPN аркылуу ачып, ошентсе да GitHub жакшы иштебеген вебхук жөнүндө билдиргенин көрө аласыз, анткени бул эки башка байланыш жана эки башка ээси бар. Браузер ноутбукуңуз келишкен туннелден өтөт; GitHubтин жеткирүү кызматы ачык интернеттен башталып, жеке тармакка эч кандай жолу жок. Репозиторийге кирүү муну өзгөртпөйт, Jenkins өзү ошол эле репозиторийден кыйынчылыксыз ала алса да. Кирүү чекитин, релени же сурамжылоону тандап, анан окуя чындыгында өтүүчү жолду текшериңиз.

Браузер сессиясы бир гана багытты далилдейт

VPN байланышы бир суроого жооп берет: бул ноутбук ички хостко жете алабы. Вебхук жеткирүү башка суроо берет: тышкы кызмат ошол хостко байланыш ача алабы. Jenkinsтин репозиторийден алышы чыгуучу трафик жана кирүүчү жеткиликтүүлүк тууралуу эч нерсе айтпайт. Эки багытты диаграммаңызда өзүнчө сызыктарда кармаңыз, кайсы тарап кайсынысын баштаарын да кошуңуз.

Бир нерсени өзгөртүүдөн мурун жеткирүү жазуусун окуңуз. Убакыттын бүтүшү, байланыштын кайра коюлушу жана эч бир тапшырмага туура келбеген кабыл алынган сурам — үчөөнүн ээси башка: тармак, прокси жана триггердин конфигурациясы.

А варианты: кууш акыркы чекитти ачыңыз

Эгер уюм мурунтан бекитилген кирүү чекитин жарыяласа, башкаруу тактасынын ордуна вебхук жолун ачыңыз. Бул адатта илгич URLине POST кабыл алып, аларды Jenkinsке жиберүүчү тескери прокси эрежесин билдирет, ал эми административдик интерфейс сырттан жеткиликсиз бойдон калат.

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

Бул тестти VPN кирүүсү жок тармактан өткөрүңүз, анткени туннелдин ичинен болгон ийгилик эч нерсени далилдебейт. Акыркы чекит жалпы сырсыз сурамдарды четке кагууга тийиш, аны GitHub кол тамгасынын аталышы катары жиберет, жана сиз жарыялаган бир гана жол менен ыкманы кабыл алууга тийиш. Ачык Jenkins консолу вебхуктун чечими эмес; ал кийинки сканерди күтүп турган окуя. Колдонмонун калган бөлүгү мурунку кирүү көзөмөлүн сакташы үчүн эрежени жетиштүү кууш кылып чектеңиз.

Б варианты: багытты реле менен тескери буруңуз

Кирүү ачыктыгы бекитилбеген жерде тармактын ичиндеги кичинекей кардар релеге чыгуучу байланышты кармай алат жана жиберилген окуяларды кабыл ала алат. Ошондо реле жеткирүү жолунун бөлүгүнө айланат, ошондуктан анын жеткиликтүүлүгү жана аутентификациясы куруу ишиндей эле маанилүү.

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

Jenkinsтин брандмауэрлердин артындагы вебхуктар тууралуу көрсөтмөсү бул форманы сүрөттөйт жана өз жиберүүчүңүздү жазганга чейин аны окууга татыктуу. TLSти реледе аяктаңыз, окуя ишке жеткенге чейин кол тамганы текшериңиз жана чыгуучу байланышты көзөмөлдөңүз, анткени кулаган туннел эч качан жиберилбеген окуяга так окшош. Ошондой эле реленин сурамдын денесин байт сайын сактаарын ырастаңыз, анткени жолдо талданып, кайра коддолгон JSONдо кол тамга текшерүүлөрү ишке ашпайт.

В варианты: анын ордуна репозиторийди сураңыз

Сурамжылоо кечигүүнү жөнөкөйлүккө алмаштырат жана кирүүчү жолду такыр талап кылбайт. Jenkins график боюнча сурамжылай алат, же кичинекей иш APIден сурап, белгисиз ревизияны көргөндө курууну баштай алат.

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

Ар бир сурамжылоо API чакырууларын корот жана push менен куруунун ортосуна кечигүү кошот, бул бош эмес репозиторийлерде жана жалпы ылдамдык чектөөлөрүндө байкалат. Ошондой эле сурамжылоочу иштеген жерде сакталган каттоо маалыматтары керек, ошондуктан токенди репозиторийге окуу гана кирүү менен чектеп, башка ар кандай сыр сыяктуу айландырыңыз. Муну окуялардын көлөмү аз болгондо же кирүү чекити эч качан бекитилбегенде тандаңыз жана муну иштин сүрөттөмөсүндө айтыңыз, ошондо кийин эч ким куруулар эмнеге артта калат деп таңданбайт.

Бетти жүктөөнү эмес, чыныгы жеткирүүнү кабыл алыңыз

Кайсы вариантты тандасаңыз да, кабыл алуу тести — булак платформа жиберген окуя, ал эми артыкчылыктуу ноутбуктан ачылган браузер өтмөгү эмес. Скрэтч бутакка бош commit push кылып, жеткирүү жооп кодун, реленин журналын же сурамжылоо ишинин чыгышын ошол тартипте окуңуз. Акыркы чекиттен 200 келип, куруу болбосо, триггердин фильтри туура эмес; убакыт бүтсө, жол дагы эле жабык. Үч долбоордун кайсынысы колдонулуп жатканын жазып коюңуз, болбосо кийинки оңдоочу браузер тестин кайталап, ошол эле тыгылычка туш болот.

Ошол эле логиканы төлөм callbackтерине жана башка тышкы билдирүүлөргө колдонуңуз: ар бирине жеке колдонмого өз жолу керек, ар бир адамдын VPN сессиясы болсо да. Жеткирүү жолу колдонмонун дизайнына таандык, тармактар тууралуу төмөнкү жазууга эмес.

Тектеш макалалар