බෙදාහැරීම් පිටුව කල් ඉකුත්වීමක් පෙන්වන අතර Jenkins කිසිවක් සටහන් නොකරයි, එය කිසිදා නොපැමිණි සම්බන්ධතාවයක ලකුණයි. GitHub තමන්ගේම යටිතල පහසුකම්වලින් ඔබ වින්‍යාස කළ payload URL වෙත පිටතට යන HTTP POST එකක් ලෙස webhook යවයි. VPN එවැනි සම්බන්ධතාවයක්ම ප්‍රතික්ෂේප කිරීමෙන් Jenkins ආරක්ෂා කරයි. දෙපැත්තේම කිසිවක් කැඩී නැත. ගැටලුව වන්නේ ඉල්ලීමේ දිශාවයි.

බෙදාහැරීම ඇත්තෙන්ම උත්සාහ කරන්නේ කුමක්ද

GitHub payload URL හි ධාරක නාමය විසඳා පොදු අන්තර්ජාලයෙන් එයට සම්බන්ධ වේ. එම URL යොමු වන්නේ පෞද්ගලික ලිපිනයකට නම්, නැතහොත් ඔබේ ජාලය තුළ පමණක් විසඳෙන නාමයකට නම්, කිසිදු ඉල්ලීමක් යැවීමට පෙර උත්සාහය අසාර්ථක වේ. එය යොමු වන්නේ ඔබේ කෙළවර ඉවත දමන පොදු නාමයකට නම්, උත්සාහය ඒ වෙනුවට කල් ඉකුත් වේ.

රෝග විනිශ්චය සඳහා මෙම වෙනස වැදගත් වේ. DNS අසාර්ථකත්වය සහ පෙරන ලද පෝටය දෙකම Jenkins පැත්තේ කිසිවක් සිදු නොවූ ලෙස පෙනේ, දෙකම GitHub හි වෙනස් හේතුවක් සමඟ අසාර්ථක බෙදාහැරීමක් ලෙස පෙනේ. URL වෙනස් කිරීමට පෙර එම හේතුව කියවන්න.

පිටතට අමතන උමං මාර්ගයක් ශ්‍රාවකයෙකු නිර්මාණය නොකරයි. මිනිසුන් වෙනස් ලෙස ක්‍රියා කරනු ඇතැයි බලාපොරොත්තු වන කොටස එයයි.

සම්බන්ධතාවයේ දිශාව නිවැරදි කිරීමට ක්‍රම තුනක්

සෑම විසඳුමක්ම සම්බන්ධතාවය ආරම්භ කරන්නේ කවුද යන්න වෙනස් කරයි, සහ හැඩතල තුනක් පමණක් ඇත.

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

විමසුම අලංකාර අඩුම සහ ක්‍රියාත්මක කිරීමට පහසුම වේ. Relay එකක් පෝටයක් නොවිවෘතව පාහේ ක්ෂණික ප්‍රතිපෝෂණයක් තබා ගනී. payload හි රහස්‍යභාවය තුන්වන පාර්ශවයක් බැහැර කරන විට runner සාමාන්‍යයෙන් නිවැරදි පිළිතුරයි, මන්ද රැකියාව දැනටමත් ජාලය තුළ ඇති යන්ත්‍රයක ක්‍රියාත්මක විය හැකි බැවිනි.

ඔබට ක්‍රියාත්මක කළ හැකි දේ මත තෝරන්න, නවීන ලෙස ශබ්ද වන දේ මත නොව.

smee සමඟ බෙදාහැරීමක් පිටතට යවන්න

relay සේවාවේ නාලිකාවක් සාදා එහි URL තබා ගන්න. ජාලය තුළ, සේවාලාභියා ස්ථාපනය කර Jenkins බලාපොරොත්තු වන මාර්ගයට බෙදාහැරීම් යවන්න. ගබඩා සැකසුම්වල payload URL නාලිකාවේ URL බවට පත් වේ, අන්තර්ගත වර්ගය application/json ලෙස සකසා ඇත.

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

විස්තර තුනක් එය ක්‍රියා කරන්නේද නැද්ද යන්න තීරණය කරයි. මාර්ගය GitHub සිදුවීම් සඳහා Jenkins බලාපොරොත්තු වන දෙයට ගැලපිය යුතුය, එය පෙරනිමියෙන් /github-webhook/ වේ. Jenkins ඔබ සේවාලාභියාට දුන් පෝටයේ සවන් දිය යුතුය. සහ රැකියාවේ වින්‍යාස කර ඇති Jenkins URL එම මාර්ගය සමඟ එකඟ විය යුතුය, නැතහොත් සිදුවීම පැමිණ පසුව ඉවත දමනු ලැබේ.

අවසාන ඉරි ඇති නොගැලපීම 404 එකක් නිපදවයි, එය බෙදාහැරීම් අසාර්ථකත්වයක් ලෙස කියවේ, නමුත් එය එසේ නොවේ.

සතිය ගෙවී යන ලෙස එය ක්‍රියාත්මක කිරීම

පෙරමුණේ සේවාලාභියා පර්යන්තය සමඟ මිය යයි, සහ webhook එක් දිනක් ක්‍රියා කර පසුව නතර වේ. එයට Restart=always සහිත unit එකක් දෙන්න, Jenkins පරිශීලකයා ලෙස ක්‍රියාත්මක කරන්න, සහ පළමු සැබෑ බෙදාහැරීමෙන් පසු journal කියවන්න. එම අවසාන පියවරයි ක්‍රියා කරන relay එකක් වින්‍යාස කළ එකකින් වෙන් කරන්නේ.

[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

නැවත ධාවන බොත්තමක් වෙනුවට සැබෑ push එකකින් පරීක්ෂා කරන්න. නැවත ධාවනය relay හි ගබඩා කර ඇති payload පුහුණු කරයි, GitHub සිට ඔබේ නාලිකාව දක්වා මාර්ගය නොව, එබැවින් සජීවී බෙදාහැරීම තවමත් අසාර්ථක වන අතරම එය සමත් විය හැක.

unit නතර වූ විට අනතුරු අඟවන්න. වැටී ඇති relay එකක් ඉදිකිරීමෙන්ම නිශ්ශබ්දය, සහ නිශ්ශබ්දතාවය යනු ඔබ දැනටමත් නිදොස් කරමින් සිටින දෙයයි.

relay ට දැකිය හැකි දේ, සහ එය භාවිත නොකළ යුතු විට

relay payload අවසන් කරයි, එබැවින් ගබඩා නාම, commit දත්ත සහ සිදුවීම ගෙන යන අනෙක් සියල්ල එය දකී. නාලිකාවේ URL පොදු අවසන් ලක්ෂ්‍යයක් ලෙස සලකන්න. ව්‍යාජ බෙදාහැරීම් ප්‍රතික්ෂේප වන පරිදි Jenkins හි secret token වින්‍යාස කර තබා ගන්න, සහ Jenkins භාවිත කරන token අවශ්‍ය අවමයට සීමා කරන්න.

payload හි රහස්‍යභාවය එය බැහැර කරන්නේ නම්, ස්වයං-සත්කාරක runner එකක් හෝ සත්‍යාපිත ප්‍රතිලෝම උමං මාර්ගයක් පිළිතුරයි.

relay දැන් යටිතල පහසුකමකි, සහ එය ආරම්භ කරන build ට සමාන සමාලෝචනයක් ලැබිය යුතුය. නාලිකාව මුදා හැරුණහොත් එය කරකවන්න, සහ සජීවී බෙදාහැරීමක් අවසන් වරට සත්‍යාපනය කළ දිනය සටහන් කරන්න. එම දිනය නාලිකාවේ URL අසල runbook හි තබන්න. වසරක් තුළ කිසිවෙකු සමාලෝචනය නොකළ relay යනු කිසිවෙකුට අයිති නැති පොදු අවසන් ලක්ෂ්‍යයකි.

අදාළ ලිපි