ලාභ:
- CI/CD සංකල්පය, නල මාර්ග ව්යුහ විද්යාව (ප්රේරකය, රැකියාව, පියවර, ධාවකය, කෞතුක වස්තුව) සහ GitHub ක්රියා සහ GitLab CI අතර ඇති වෙනස්කම් අවබෝධ කර ගැනීමේ හැකියාව සහ කෘතිම බුද්ධිය නිවැරදි සන්දර්භය සමඟ නල මාර්ග නිෂ්පාදනය කරයි.
- කෘතිම බුද්ධිය මගින් නිපදවන ලද නල මාර්ගයේ රහස් යොමු කිරීම්, අවසරයන් සහ හැඳින්වෙන සංරචක වල පැවැත්ම පරීක්ෂා කර සුරක්ෂිත කිරීමේ හැකියාව
- සරල පෙළෙහි රහස් නොලියා සිටීම, අවම අවසරය ලබා දීම සහ CI වෙතින් වෙන් කිරීම මගින් පාලනය යෙදවීම පාලනය කිරීමේ මූලධර්ම යෙදීමේ හැකියාව
නවීන මෘදුකාංගයේ හදවත වන්නේ ස්වයංක්රීය නල මාර්ගය වන අතර එමඟින් සංවර්ධකයෙකුගේ පරිගණකයෙන් කේතය ආරක්ෂිතව පාරිභෝගිකයා වෙත ළඟා වන තුරු පිටත් වේ. මෙම නළය CI/CD ලෙස හැඳින්වේ. CI (අඛණ්ඩ අනුකලනය) යනු සෑම කේත වෙනසක්ම ස්වයංක්රීයව සම්පාදනය කිරීම සහ පරීක්ෂා කිරීමයි; එහි අරමුණ සංවර්ධකයා යතුරුපුවරුවෙන් ඉවත් වීමට පෙර දෝෂයක් අල්ලා ගැනීමයි. CD (අඛණ්ඩ බෙදාහැරීම / යෙදවීම) යනු පරීක්ෂා කරන ලද කේතය ස්වයංක්රීයව සකස් කිරීම හෝ නිකුත් කිරීම වේ. CI/CD නල මාර්ගයක් යනු මෙම පියවර පිළිවෙලට නිර්වචනය කරන වින්යාස ගොනුවකි - සාමාන්යයෙන් ලියා ඇත්තේ YAML (මිනිසුන්ට කියවිය හැකි වින්යාස පෙළ ආකෘතියකි).
මෙම YAML ගොනු අතින් ලිවීම වෙහෙසකර, වාචික සහ දෝෂ සහිත ය; ඉන්ඩෙන්ටේෂන් එක අවකාශයකින් ලිස්සා ගියහොත්, සම්පූර්ණ නල මාර්ගය කැඩී යයි. AI පැමිණෙන්නේ මෙහිදීය: නිවැරදි සන්දර්භය සමඟ, එය තත්පර කිහිපයකින් වැඩ කරන කෙටුම්පතක් නිපදවයි. නමුත් උත්පාදනය කරන සෑම පියවරක්ම කරන්නේ කුමක්ද යන්න තේරුම් ගැනීම සහ සත්යාපනය කිරීම ඔබේ කාර්යයයි - මන්ද මෙය ඔබේ කේතය නිෂ්පාදනයට ගෙන යන නළයයි.
CI/CD නල මාර්ගයේ ව්යුහ විද්යාව
සෑම නල මාර්ගයක්ම මූලික සංකල්ප කිහිපයකින් සමන්විත වේ. මේවා නොදැන ඔබට AI ප්රතිදානය පාලනය කළ නොහැක:
- ප්රේරකය: නල මාර්ගය ආරම්භ කරන්නේ කුමක් ද? සාමාන්යයෙන් ශාඛාවකට තල්ලුවක්, ඇදීමේ ඉල්ලීමක් (ඒකාබද්ධ ඉල්ලීමක්) හෝ කාලසටහනක්.
- රැකියාව: පියවර මාලාවක් ක්රියාත්මක කරන තාර්කික ඒකකය; උදාහරණයක් ලෙස "test", "build", "deploy".
- පියවර: රැකියාවක් තුළ තනි විධානයක් හෝ ක්රියාවක්.
- ධාවකය: රැකියා ක්රියාත්මක වන අතථ්ය යන්ත්රය හෝ බහාලුම.
- කෞතුක භාණ්ඩය: එක් කාර්යයක් මගින් නිපදවන ලද සහ පසුකාලීන රැකියා සඳහා භාවිතා කරන ලද ප්රතිදානය (උදාහරණයක් ලෙස, සම්පාදනය කරන ලද ගොනුවක්).
- රහස: Pipeline භාවිතා කරන රහසිගත තොරතුරු නමුත් ගබඩාවේ සරල අකුරු වල නොතිබිය යුතුය.
GitHub ක්රියා මෙම අර්ථ දැක්වීම .github/workflows/*.yml ගොනු තුළ තබා ගනී; ඒකකය වැඩ ප්රවාහය → job → පියවර ධුරාවලියයි. අනෙක් අතට, GitLab CI, .gitlab-ci.yml ගොනුවේ අදියර → රැකියා ව්යුහය භාවිතා කරයි. AI සින්ටැක්ස් දෙකම දනී, නමුත් ඔබට අවශ්ය එක ඔබ පැහැදිලිවම පැවසිය යුතුය.
ඉඟිය: නල මාර්ග සඳහා AI ඉල්ලන විට, සෑම විටම සඳහන් කරන්න: වේදිකාව (GitHub ක්රියා හෝ GitLab CI), භාෂාව/රාමුව (Node, .NET, Python...), ප්රේරකය, සහ එය යොදවන්නේද යන්න. මෙම තොරතුරු කොටස් හතර ප්රතිදානයේ ප්රයෝජනය දෙගුණ කරයි.
පියවරෙන් පියවර: AI සමඟ නල මාර්ගයක් සැලසුම් කිරීම
- ඉලක්කය පැහැදිලි කරන්න. "ප්රධාන වෙත තල්ලු කිරීම මත පරීක්ෂණ ධාවනය කරන්න, රූපය ගොඩනඟන්න, නමුත් ටැගය විසි කළ විට පමණක් යොදවන්න" වැනි.
- ඇටසැකිල්ල නිපදවන්න. මූලික කාර්ය ප්රවාහය සඳහා AI ගෙන් විමසන්න.
- පියවර කියවා තේරුම් ගන්න. එක් එක් ධාවනය සහ භාවිත රේඛාව කරන්නේ කුමක්දැයි තහවුරු කරන්න.
- රහස් යොමු පරීක්ෂා කරන්න. රහස් ${{ රහස්.
- එය දේශීයව උත්සාහ කරන්න/CI. එය කුඩා පරීක්ෂණ ගබඩාවක් මත ධාවනය කරන්න, රතු-කොළ (අසමත්-පාස්) හැසිරීම බලන්න.
- ක්රමයෙන් පුළුල් කරන්න. මුලින්ම CI (පරීක්ෂණය) එකතු කරන්න, පසුව ගොඩනඟන්න, අවසන් වරට යෙදවීම එකතු කරන්න.
ආරක්ෂාව: නල මාර්ගයේ රහස සහ අවසරය
CI/CD යනු රහස් වැඩිපුරම කාන්දු වන ස්ථාන වලින් එකකි. රන් නීති තුනක්:
- කිසිවිටෙක YAML හි සරල පෙළෙහි රහස් ලියන්න එපා. වේදිකාවේ රහස් ගබඩාව (GitHub Secrets, GitLab CI/CD Variables) භාවිතා කර එය ${{ secrets.X }} සමඟ අමතන්න.
- අවම වරප්රසාදය. ඔබ නල මාර්ගයට ලබා දෙන ටෝකනයට ඇත්තේ අවශ්ය ප්රමාණයට පමණි. අවසර සමඟින් මෙය පටු කරන්න: GitHub ක්රියා වල අවහිර කරන්න.
- ලොග් එකේ රහස් ඔබන්න එපා. echo $TOKEN වැනි රේඛා ලොගයේ ඇති රහස හෙළි කරයි. වේදිකා ආවරණ, නමුත් ප්රවේශම් වන්න.
අවවාදයයි: පහසුව සඳහා, AI සමහර විට මුරපදය: 123456 හෝ ඕනෑවට වඩා පුළුල් අවසරයන් වැනි කාවැද්දූ අගයන්: නියැදි නල මාර්ගවල ලියන්න-සියල්ල ඇතුළත් කරයි. සැමවිටම මෙය නිවැරදි කරන්න: රහස යොමු ලෙස වෙනස් කරන්න, අවසරය හකුළන්න.
සංසන්දනාත්මක සටහන
සංකල්පය
GitHub ක්රියා
GitLab CI
මානකරන ගොනුව
.github/workflows/*.yml
.gitlab-ci.yml
ගොඩනැගිලි ඒකකය
වැඩ ප්රවාහය → රැකියාව → පියවර
අදියර → රැකියාව
අවුලුවාලීම
දහය:
නීති: / පමණි:
රහස කැඳවන්න
${{ රහස්.NAME }}
$NAME (CI/CD විචල්ය)
සූදානම් සංරචකය
භාවිතා කරයි: action@v4
ඇතුළත් වේ: / සැකිල්ල
ධාවකයා
ධාවනය:
ටැග්:
කුඩා නඩු තුනක්
නඩුව 1 - පැය 6 විනාඩි 40 දක්වා අඩු කර ඇත. කණ්ඩායමකට ඔවුන්ගේ අත්පොත පරීක්ෂණ-ගොඩනැගීමේ ක්රියාවලිය ස්වයංක්රීය කිරීමට අවශ්ය වූ නමුත් කිසිවෙකු YAML ගැන හුරුපුරුදු නොවීය. ඔවුන් YZ විස්තර කළේ "Node.js ව්යාපෘතිය, GitHub ක්රියා, npm test සහ npm build in push to main, deploy only in v* tag" ලෙසයි. AI රේඛා 40 ක වැඩ කරන ඇටසැකිල්ලක් නිෂ්පාදනය කළේය; කණ්ඩායම සෑම පියවරක්ම සත්යාපනය කර විනාඩි 40කින් සජීවීව ගියේය. අතින් ලිව්වා නම් ඒක දවසේ වැඩක්.
2 වන අවස්ථාව - සත්යාපනය ආරක්ෂක අවදානමකට හසු විය. ඉංජිනේරුවෙක් වැඩ ප්රවාහය යෙදවීමට AI වෙතින් ඉල්ලා සිටියේය. ප්රතිදානයට අවසර ඇතුළත් විය: ලියන්න-සියල්ල — ටෝකනයට ගබඩාවට, පැකේජවලට, සියල්ලට ලිවිය හැකිය. ඉංජිනේරුවරයා මෙය දුටු අතර අවසර සහිතව එය පටු කළේය: { අන්තර්ගතය: කියවන්න, පැකේජ: ලියන්න }. මෙමගින් පැහැරගත් පරායත්තතාවයක් සම්පූර්ණ ගබඩාව ප්රතිස්ථාපනය කිරීමේ අවදානම ඉවත් කරන ලදී.
නඩුව 3 - මායාවන් ක්රියා කිරීම. එක් කණ්ඩායමක් AI-යෝජිත භාවිතයන් ධාවනය කරන ලදී: actions/deploy-to-aws@v3 රේඛාව; එවැනි නිල ක්රියාමාර්ගයක් නොතිබුණි, AI නම සෑදුවේය. "ක්රියාව හමු නොවීය" යනුවෙන් නල මාර්ගය පුපුරා ගියේය. පාඩම: භාවිත සමඟින් හඳුන්වන සෑම සංරචකයක්ම වෙළඳපල තුළ සත්යාපනය කරන්න: ඇත්ත වශයෙන්ම පවතී.
පිටපත් කළ හැකි සැකිලි හතරක්
1) මූලික CI කාර්ය ප්රවාහය:
GitHub ක්රියා සඳහා CI කාර්ය ප්රවාහයක් ලියන්න. ව්යාපෘතිය: [භාෂාව/රාමුව]. ප්රේරකය: ප්රධාන ශාඛාව වෙත තල්ලු කර අදින්න ඉල්ලීම. පියවර: පරායත්තතා ස්ථාපනය කරන්න, පරීක්ෂණ ධාවනය කරන්න, ලින්ට් ධාවනය කරන්න. NO Deploy.Runner ubuntu-latest. රහසක් අවශ්ය නැත. YAML සටහන් කරන්න.
2) යොදන ලද CD වැඩ ප්රවාහය (ආරක්ෂිත):
[PLATFORM] සඳහා යෙදවීමේ කාර්ය ප්රවාහය ලියන්න. එය ක්රියා කළ යුත්තේ 'v*' ටැගය මත පමණි. ඉලක්කය: [මාධ්ය/වලාකුළු]. රීති: - කිසිවිටෙක සරල පාඨවලින් රහස් ලියන්න එපා, ${{ රහස් සමඟ ඒවා අමතන්න.
3) පවතින නල මාර්ගය විස්තර කරන්න:
පහත සඳහන් [PLATFORM] නල මාර්ගය රේඛාවෙන් විස්තර කරන්න: එක් එක් කාර්යය කරන්නේ කුමක්ද, එය ක්රියාත්මක වන්නේ කුමන අනුපිළිවෙලකටද, එය භාවිතා කරන රහස කුමක්ද සහ එහි අවදානම් සහගත කරුණු දෙක කුමක්ද? අවසාන වශයෙන්, වැඩිදියුණු කිරීම් 3ක් යෝජනා කරන්න. නල මාර්ගය: [YAML අන්තර්ගතය]
4) නල මාර්ගය වේගවත් කිරීම:
පහත CI නල මාර්ගය සෙමින් ධාවනය වේ (කාලසීමාව: [X min]). හැඹිලි භාවිතය, සමාන්තර රැකියා සහ අනවශ්ය පියවර සඳහා පරීක්ෂා කරන්න. නිශ්චිත, ක්රියා කළ හැකි ත්වරණ යෝජනා 5ක් ලබා දී එක් එක් ඇස්තමේන්තුගත බලපෑම ලියන්න. නල මාර්ගය: [YAML]
දුර්වල ක්ෂණික / ශක්තිමත් විමසුම
දුර්වල: "GitHub ක්රියා කාර්ය ප්රවාහය ලියන්න."
ප්රතිඵලය: කුමන භාෂාව, කුමන ප්රේරකය, යෙදවීමක් තිබේද යන්න අපැහැදිලි ය; AI සාමාන්ය නෝඩ් අවස්ථාවක් ලබා දෙයි, බොහෝ විට ඔබේ ව්යාපෘතියට නොගැලපෙන අතර රහස දෘඪ කේතය කළ හැක.
ශක්තිමත්: "GitHub ක්රියා කාර්ය ප්රවාහය ලියන්න. Python 3.12 ව්යාපෘතිය, ඇදීමේ ඉල්ලීම සහ ප්රධාන තල්ලුව තුළ pytest + ruff ධාවනය කරන්න; යෙදවීමක් නැත; pip cache සමඟ පරායත්තතා වේගවත් කරන්න; රහස් අවශ්ය නොවේ. අදහස් සමඟ YAML අපනයනය කරන්න."
වෙනස: දෙවන විමසුම මඟින් භාෂාව, ප්රේරකය, විෂය පථය (යෙදීමක් නොමැත), කාර්ය සාධන අපේක්ෂාව සහ ආරක්ෂක සීමාවන් ලබා දෙයි. ප්රතිදානය කෙලින්ම ක්රියා කරයි.
පොදු වැරදි
- YAML හි රහස කාවැද්දීම. සාමාන්ය පෙළ මුරපදය/ටෝකනය වඩාත් පොදු CI අවදානම් වේ.
- ඕනෑවට වඩා පුළුල් අවසරය. ලියන්න-සියල්ල වෙනුවට අවශ්ය අවම අවසරය දෙන්න.
- නොපවතින ක්රියාව/සැකිල්ල මත විශ්වාසය තැබීම. AI-සාදන ලද භාවිතයන් සත්යාපනය කරන්න: වෙළඳපල තුළ රේඛා.
- CI සමඟ ව්යාකූල යෙදවීම. පරීක්ෂණය සෑම තල්ලුවකදීම ධාවනය කළ හැකි නමුත්, යෙදවීම පාලනය කර අනුමත කළ යුතුය.
- හැඹිලි භාවිතා නොකරයි. සෑම ධාවනයකදීම මුල සිට පරායත්තතා ස්ථාපනය කිරීම නල මාර්ගය මිනිත්තු කිහිපයකින් මන්දගාමී වේ.
- ප්රධාන ගබඩාවේ සෘජුවම පළමු කාර්ය ප්රවාහය උත්සාහ කිරීම. මුලින්ම එය පරීක්ෂණ ගබඩාවක් මත ධාවනය කරන්න.
සාරාංශයක් ලෙස
CI/CD නල මාර්ග යනු ස්වයංක්රීය පයිප්ප වන අතර එය කේතය ආරක්ෂිතව නිෂ්පාදන වෙත ගෙන යන අතර YAML සමඟ අර්ථ දක්වා ඇත. AI ඉක්මනින් GitHub ක්රියා සහ GitLab CI සඳහා ක්රියාකාරී සැලැස්මක් නිෂ්පාදනය කරයි - නමුත් ඔබට වේදිකාව, භාෂාව, ප්රේරකය සහ විහිදුම් විෂය පථය පිළිබඳව පැහැදිලි විය යුතුය. ආරක්ෂාව සඳහා නීති තුනක් ඇත: යොමුව මගින් රහස් අමතන්න, අවම වරප්රසාද ලබා දීම, ලොගයේ රහස් මුද්රණය නොකරන්න. එක් එක් භාවිත:/ඇතුළත්: සංරචක ඇත්ත වශයෙන්ම පවතින බවත් එක් එක් පියවර කරන්නේ කුමක්ද යන්න තහවුරු කිරීම ඔබේ වගකීමකි.
යෙදුම් කාර්යය
සරල නියැදි ව්යාපෘතියක් තෝරන්න (ඔබේ භාෂාවෙන් "හලෝ වර්ල්ඩ්" පවා කරනු ඇත). AI හට ඉහත "මූලික CI කාර්ය ප්රවාහ" අච්චුව සමඟ වැඩ ප්රවාහයක් නිපදවීමට සලස්වන්න. එවිට: (1) එක් එක් පියවර කරන්නේ කුමක්ද යන්න ඔබේම වචනවලින් ලියන්න; (2) කිසිදු රහස් එබ්බවූ බවත් අවසර පටු බවත් තහවුරු කරන්න; (3) හැකි නම්, එය පරීක්ෂණ ටැංකියක ධාවනය කර රතු-කොළ හැසිරීම නිරීක්ෂණය කරන්න.
පිරික්සුම් ලැයිස්තුව
- [ ] මම මගේ විමසුමට වේදිකාව, භාෂාව/රාමුව, ප්රේරකය සහ විහිදුම් විෂය පථය එක් කළෙමි.
- [ ] ජනනය කරන ලද YAML හි එක් එක් කාර්යය සහ පියවර කරන්නේ කුමක්දැයි මට වැටහෙනවා.
- [ ] කිසිම රහසක් සරල පාඨ නොවේ; සියලුම ${{ secrets.X }} / CI විචල්යය.
- [ ] මම අවසර අවම අධිකාරියට පටු කළෙමි.
- [ ] මම ක්රියා/සැකිලි ලෙස හඳුන්වන සියල්ල ඇත්ත වශයෙන්ම පවතින බව සත්යාපනය කළෙමි.
- [ ] මම යෙදවීමේ පියවර අනුමැතිය/ආරක්ෂාව සමඟ පාලනය කළෙමි.