Python wheel එක ජාලයෙන් පිටත ගොඩනගා ඇතුළත ප්රකාශයට පත් කරන්න
මූලාශ්රය දැනටමත් ඇති තැනම wheel එක ගොඩනගා, එම ගොනුවම අභ්යන්තර ප්රකාශකයෙකුට ගෙනයන්න. ඩයිජෙස්ට් සහ රිසිට්පතක් මෙම මාරුව අවසන් කරයි.
wheel එකක් නිපදවන build job එකක් සහ එය ලබාගත යුතු පෞද්ගලික repository එකක් ඔබට දැනටමත් ඇත. වැරැද්ද වන්නේ තවත් job එකකට ශාඛාවකින් නැවත ගොඩනගා එම ප්රතිඵලයම එකම නිකුතුව ලෙස හැඳින්වීමයි. පරීක්ෂා කළ ගොනුව මාරු කරන්න, එය ඩයිජෙස්ට් අනුව නම් කරන්න, සහ උඩුගත කිරීමේ අක්තපත්ර ඇතුළත තබා ගන්න. පහත විස්තරය එක් artifact එකක් පොදු CI runner එකක සිට අභ්යන්තර ප්රකාශකයෙකු දක්වා අනුගමනය කරයි.
මූලාශ්රය දැනටමත් ඇති තැනම ගොඩනගන්න
මූලාශ්රය, මෙවලම් දාමය සහ පරීක්ෂණ කට්ටලය දැනටමත් ඇති job එකේ build එක ධාවනය කරන්න. පෞද්ගලික repository එකක් සඳහා එම job එක එයට ළඟා විය යුතු බවක් අවශ්ය නොවේ. ව්යාපෘතිය දැනටමත් භාවිතා කරන පරිසරයේ build frontend එක ස්ථාපනය කරන්න, පසුව ව්යාපෘතිය දෙකම නිකුත් කරන්නේ නම් බෙදාහැරීමේ ආකෘති දෙකම නිපදවන්න.
python -m build --sdist --wheel --outdir dist
python -m twine check dist/*
ප්රතිදාන ඩිරෙක්ටරිය කුඩා හා එක් වරක් භාවිත කළ හැකි ලෙස තබා ගන්න. ඉදිරියට ගෙන යා යුතු එකම දේ ඊළඟ job එක ප්රකාශයට පත් කරන ගොනු සහ ඒවායේ හැෂ් ය. අනෙක් සියල්ල, ඇතුළත් virtual පරිසර සහ cache ඇතුළුව, වාර්තා කළ මූලාශ්ර සංශෝධනයෙන් නැවත ගොඩනගා ගත හැක. සිහින් artifact එකක් සමාලෝචනය කිරීමද පහසුය, මන්ද එහි ඇති සෑම ගොනුවක්ම යමෙකුට පරීක්ෂා කළ හැකි ගොනුවක් වන බැවිනි.
ඒවා නිපදවූ දේ වාර්තා කරන්න: ගොනු නාමවලින් පැකේජ නාමය සහ අනුවාදය, මූලාශ්ර සංශෝධනය, සහ ඒවා නිර්මාණය කළ workflow ධාවනය. අනුවාද අකුරු පේළියක් පමණක් ගොනුවක් හඳුනා නොගනී, මන්ද එම අනුවාදයම විවිධ commit වලින් දෙවරක් ගොඩනගා ගත හැකි බැවිනි. artifact විස්තරයේ ගොනු නාම අසල සංශෝධනය ලියන්න, සහ එම වාර්තාව මාරුවේ කොටසක් ලෙස සලකන්න.
බයිට් මාරු කරන්න, නැවත ගොඩනගන උපදෙස් නොව
දෙවන build එක දෙවන නිෂ්පාදනයකි. වේලා සලකුණු, ඇතුළත් කළ පරායත්තතා සහ මෙවලම් අනුවාද සියල්ල බයිට් වෙනස් කළ හැක, එබැවින් නැවත ගොඩනැගීමකට එහිම පරීක්ෂණ සාක්ෂි සහ එහිම සමාලෝචනය අවශ්ය වේ. ඒ වෙනුවට සමාලෝචිත ගොනු උසස් කරන්න.
බෙදාහැරීමේ ගොනු ඔබේ CI වේදිකාව සපයන artifact ගබඩාවට උඩුගත කරන්න, සහ අභ්යන්තර job එකට ශාඛා නාමයක් නොව එම නිශ්චිත artifact එකට යොමුවක් දෙන්න.
sha256sum dist/*.whl dist/*.tar.gz
# keep the digests beside the run id in the artifact description
ඔබේ වේදිකාව අත්සන් කළ මූලාරම්භයට සහාය දක්වන්නේ නම්, artifact එක සහතික කරන ලෙස එයට කියන්න, පසුව අපේක්ෂිත repository, workflow සහ මූලාශ්ර සංශෝධනය සත්යාපනය කරන්න. GitHub හි සහතික කිරීමේ ලේඛනය එවැනි හැඩයේ ප්රකාශ විස්තර කරයි. වලංගු අත්සනක් යනු මූලාරම්භ සාක්ෂියකි, දුර්වලතා ස්කෑනයක් නොවේ, අනුමත කිරීමේ තීරණයක්ද නොවේ.
උඩුගත කිරීමට පෙර ඇතුළත සත්යාපනය කරන්න
අභ්යන්තර job එක ආරම්භ වන්නේ ලැබුණු ගොනුව අනුමත කළ ගොනුවම දැයි පරීක්ෂා කිරීමෙනි. ඩයිජෙස්ට් build job එකේ වාර්තාව සමඟ සසඳන්න, පැමිණි දෙයින් නැවත ගණනය කළ අගයක් සමඟ නොව.
sha256sum -c digests.txt
python -m twine check dist/*
ඉන්පසු metadata කියවන්න. පැකේජ නාමය, අනුවාදය සහ ප්රකාශිත පරායත්තතා ඔබ අනුමත කළ සමාලෝචනයට ගැළපිය යුතුය. නාමය නිවැරදි ලෙස පෙනෙන නමුත් පරායත්තතා සවිකිරීම් වෙනස් වී ඇති wheel එකක් එකම ලේබලය දරන වෙනත් පැකේජයකි. metadata චලනය වී ඇත්නම්, artifact එක අනුමත නොකළ එකක් ලෙස සලකා එය නිපදවූ build කුමක්දැයි සොයා ගන්න.
ඩයිජෙස්ට් නොගැළපේ නම්, නවතින්න. උඩුගත නොකරන්න, සහ ගොනුව එතැනම නැවත ගොඩනගා අලුත්වැඩියා නොකරන්න; එයින් මාර්ගයේ යමක් වෙනස් වූ බවට ඇති සාක්ෂිය මැකී යයි. නොගැළපීමක් යනු artifact ගබඩාව, බාගැනීමේ පියවර හෝ වාර්තාව වැරදි බවයි, සහ ඒ සෑම එකක්ම නිකුතුවක් ප්රකාශයට පත් කිරීමට පෙර පැහැදිලි කිරීමක් ලැබිය යුතුය.
අනුවාදය දැනටමත් ඇත යන පිළිතුර හසුරුවන්න
පෞද්ගලික repository සාමාන්යයෙන් දැනටමත් ඇති අනුවාදයක් උඩින් ලිවීමට ප්රතික්ෂේප කරයි, සහ එම ප්රතික්ෂේපය ලක්ෂණයකි. අනුවාදය ඇති නිසා උඩුගත කිරීම අසාර්ථක වූ විට, එම අනුවාදය සඳහා repository වාර්තාව පරීක්ෂා කර එය තබා ඇති ගොනු ඔබ ප්රකාශයට පත් කිරීමට අදහස් කළ ඩයිජෙස්ට් සමඟ සසඳන්න.
දැනටමත් ඇති අනුවාදයක් යනු කලින් උඩුගත කිරීමක් සාර්ථක වී පිළිතුර නැති වූ බව, නැතහොත් යමෙක් එම අංකයම යටතේ වෙනත් අන්තර්ගතයක් ප්රකාශයට පත් කළ බව විය හැක.
අනුවාදය මකන්න එපා, සහ දෝෂය මඟ හරවා ගැනීමට නව අංකයක් ගොතන්න එපා. ගබඩා කළ අන්තර්ගතය පිළිගත හැකිදැයි නිකුතු හිමිකරු සමඟ තීරණය කර, පසුව ප්රතිඵලය වාර්තා කරන්න. අන්තර්ගතය වෙනස් නම්, ඔබට අනුවාද ගැටලුවක් ඇත, pipeline ගැටලුවක් නොවේ.
උඩුගත කිරීමේ අක්තපත්ර එක් පැත්තක තබා ගන්න
repository අක්තපත්ර අවශ්ය වන්නේ අභ්යන්තර ප්රකාශකයාට පමණක් වන අතර උඩුගත කිරීමේ කාලය පුරා පමණි. token එක ඉලක්ක repository එකට සහ උඩුගත කිරීමේ මෙහෙයුම්වලට පමණක් සීමා කර, අභ්යන්තර පද්ධතියේ රහස් ගබඩාවේ තබා, build job එකෙන් සම්පූර්ණයෙන්ම ඉවත් කරන්න. build job එකට ප්රකාශයට පත් කළ හැකි නම්, build එක වෙනස් කළ හැකි ඕනෑම අයෙකුට ප්රකාශයට පත් කළ හැක.
ප්රකාශකයා ආරම්භ කළ හැකි අභ්යන්තර workflow කවරේදැයිද සීමා කරන්න. අනිවාර්ය අනුමැතියක් සහිත අතින් සිදු කරන ආරම්භ කිරීමක් නිකුතු සඳහා සාධාරණ පෙරනිමියකි; ඕනෑම ශාඛාවකට push කිරීම එසේ නොවේ.
අවසන් නිකුතුව පසුපස තැබිය යුත්තේ දේ තුනකි: බෙදාහැරීමේ ගොනු, මූලාශ්ර සංශෝධනය සමඟ ඒවායේ ඩයිජෙස්ට්, සහ එකම අනුවාදය පෙන්වන repository වාර්තාවක්.