ගිට් රිප්පෝසිටරියක commit පණිවුඩ ස්වයංක්රිය කිරීමේ මෙවලමක් ලෙස MCP (Message Commit Processor) භාවිතා කරන විකසකයින් අතර, පසුගිය දින දෙකකදී කුඩා නමුත් ප්රබල ගැටළුවක් හෙළි වුණි.
මෙම ගැටළුව generate_commit_message ෆංශනයේ හිස් diff (ගිට් වෙනස්කම් නොමැති) ලබා දුන් විට සිදුවිණ. එම විට ෆංශනය සෘජුවම Claude AI වෙත හිස් පේළියක් යවා, AI එකෙන් “කොමිත් එකක් නැත” වැනි සාමාන්ය වාක්යයක් ලබා ගෙන, එය සාමාන්ය commit පණිවුඩයක් ලෙස ආපසු ලබා දෙයි. මෙය වැරදි ලෙස භාවිතා කළ විට CI පයිප්ලයින් අසාර්ථක විය හැකි බව විකසකය අවධාරණය කළා.
විසඳුම ලෙස, ෆංශනයට පූර්ව පරීක්ෂාවක් (guard) එක් කර, diff හිස් නම් "ERROR: empty diff — nothing to generate a commit message from." ලෙස ප්රතිඵලය දක්වන ලෙස සකස් කරන ලදී. මෙයින් පසු, ක්රියාත්මක කරුවන් result.startswith("ERROR:") පරීක්ෂා කර, වැරදි පණිවුඩයක් නොලැබීමේ විශ්වාසය ගත හැක.
කෙසේ වෙතත්, ඒ සමඟම _claude උප-ෆංශනයේ timeout ගැටළුවක් තිබුණි. එය subprocess එක 20 සෙකන්ඩ් කාලයක් තිස්සේ හෝග් වුවහොත් "claude -p timed out after 20s" යන පණිවුඩයක් ආපසු දෙයි. මෙම පණිවුඩය ERROR: පෙරවරුවක් නොලබා ඇති නිසා, පසුගිය පරීක්ෂාව වැරදි ලෙස පසුතැවෙනවා. ඒ නිසා CI පයිප්ලයින් එකට timeout පණිවුඩය commit subject එකක් ලෙස භාවිතා කර, අසත්ය commit එකක් සිදු විය.
මෙම අසමත්තා දෙකම එකම ෆංශනයේ විවිධ ආකාරයෙන් පැන නැගීම නිසා, පද්ධතියේ විශ්වාසනීයතාවය අඩුවේ. එමනිසා, සියළුම ආපසු ලබා දෙන පථයන් එකම ගොඩනැගීම් ප්රතිපාදනය (convention) අනුගමනය කරන ලෙස සකස් කිරීම අත්යවශ්යයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
- විකසකයින් – ස්වයංක්රිය commit පණිවුඩ නිර්මාණය භාවිතා කරන ශ්රී ලංකා කණ්ඩායම්, දැන් වැරදි පණිවුඩයක් නිසා build අසාර්ථක වීමේ අවදානම අඩු කරගත හැක.
- අධ්යයන ආයතන – ගිට් හා CI/CD පද්ධති පිළිබඳ පාඨමාලා සිසුන්ට, error handling conventions ගැන පැහැදිලි උදාහරණයක් ලෙස ඉගැන්විය හැක.
- ව්යාපාර – ස්ථාවර DevOps ක්රියාවලියක් ඇති වීම නිසා, නිෂ්පාදන පරිසරයේ downtime අඩු කර, ව්යාපාරික වියදම් ඉතිරි කරයි.
අවසන් වශයෙන්, මෙම කුඩා නමුත් වැදගත් පරීක්ෂාව මඟින් කේතයේ සම්පූර්ණ error handling එකම රූපරේඛාවට ගැළපෙන්නේ කෙසේද යන්න මත අවධානය යොමු කළ යුතු බව පෙනේ. පරිශීලකයින්ගේ විශ්වාසය රැක ගැනීම සඳහා, සියලු return path එකම convention එකට අනුගත කිරීම අත්යවශ්ය වේ.