Сизде wheel чыгарган build жумушу жана аны кабыл алышы керек болгон жеке репозиторий бар. Ката — экинчи жумушка бутактан кайра курууга уруксат берип, натыйжаны ошол эле чыгарылыш деп атоо. Сыналган файлды жылдырыңыз, аны дайджест боюнча атаңыз жана жүктөө күбөлүгүн ичте сактаңыз. Төмөнкү баяндоо бир артефактты ачык CI runner'ден ички жарыялоочуга чейин ээрчийт.

Баштапкы код бар жерде куруңуз

Build'ди баштапкы коду, куралдар тизмеги жана тесттер топтому бар жумушта аткарыңыз. Жеке репозиторийге байланыштуу эч нерсе бул жумуштун ага жетүүсүн талап кылбайт. Build frontend'ин долбоор мурунтан колдонуп жаткан чөйрөгө орнотуңуз, анан долбоор эки таратуу форматын тең чыгарса, экөөнү тең өндүрүңүз.

python -m build --sdist --wheel --outdir dist
python -m twine check dist/*

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

Аларды эмне жаратканын жазыңыз: файл аттарынан пакеттин аты жана версиясы, баштапкы код ревизиясы жана аларды жараткан workflow'дун аткарылышы. Версия сабы гана файлды аныктабайт, анткени бир эле версияны ар башка commit'терден эки жолу курууга болот. Ревизияны артефакттын сүрөттөмөсүндө файл аттарынын жанына жазыңыз жана бул жазууну өткөрүп берүүнүн бөлүгү деп эсептеңиз.

Байттарды жылдырыңыз, кайра куруу нускамаларын эмес

Экинчи build — экинчи продукт. Убакыт белгилери, кошулган көз карандылыктар жана курал версиялары байттарды өзгөртө алат, ошондуктан кайра курууга өзүнүн тест далили жана өзүнүн карап чыгуусу керек. Анын ордуна каралып чыккан файлдарды алдыга жылдырыңыз.

Таратуу файлдарын CI платформаңыз сунуштаган артефакт кампасына жүктөңүз жана ички жумушка бутак атын эмес, так ошол артефактка шилтеме бериңиз.

sha256sum dist/*.whl dist/*.tar.gz
# keep the digests beside the run id in the artifact description

Эгер платформаңыз кол коюлган келип чыгышын колдосо, андан артефактты ырастоону жана кийин күтүлгөн репозиторийди, workflow'ду жана баштапкы код ревизиясын текшерүүнү сураныңыз. GitHub'дын ырастоо документтери ушундай формадагы ырастоолорду сүрөттөйт. Жарактуу кол тамга — келип чыгыштын далили, ал алсыздыктарды скандоо да эмес, уруксат чечими да эмес.

Жүктөөдөн мурун ичте текшериңиз

Ички жумуш алынган файлдын бекитилген файл экенин текшерүүдөн башталат. Дайджесттерди build жумушунун жазуусу менен салыштырыңыз, келген нерседен кайра эсептелген маани менен эмес.

sha256sum -c digests.txt
python -m twine check dist/*

Анан метаберилиштерди окуңуз. Пакеттин аты, версиясы жана жарыяланган көз карандылыктар сиз бекиткен карап чыгууга туура келиши керек. Аты туура көрүнгөн, бирок көз карандылык pin'дери өзгөргөн wheel — ошол эле жарлык тагылган башка пакет. Метаберилиштер жылжыса, артефактты бекитилбеген деп эсептеп, аны кайсы build жасаганын аныктаңыз.

Дайджесттер дал келбесе, токтоңуз. Жүктөбөңүз жана файлды ордунда кайра куруп оңдобоңуз; бул ташуу учурунда бир нерсе өзгөргөндүгүнүн далилин өчүрөт. Дал келбестик артефакт кампасы, жүктөө кадамы же жазуу туура эмес дегенди билдирет жана алардын ар бири чыгарылыш жарыяланганга чейин түшүндүрмөгө татыктуу.

Кайталанма версиянын жообун чечиңиз

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

Бар версия мурунку жүктөө ийгиликтүү болуп, жооп жоголгонун билдириши мүмкүн, же бирөө ошол эле номер менен башка мазмунду жарыялаганын.

Версияны өчүрбөңүз жана катаны айланып өтүү үчүн жаңы номер ойлоп таппаңыз. Сакталган мазмун кабыл алынарын чыгарылыш ээси менен чечип, натыйжаны жазыңыз. Мазмун башка болсо, сизде версиялоо маселеси бар, pipeline маселеси эмес.

Жүктөө күбөлүгүн бир тарапта кармаңыз

Репозиторий күбөлүктөрү ички жарыялоочуга гана керек жана жүктөө убактысында гана. Токенди максаттуу репозиторий жана жүктөө операциялары менен чектеңиз, аны ички системанын жашыруун сактоочунда кармаңыз жана build жумушунан толук чыгарыңыз. Эгер build жумушу жарыялай алса, build'ди өзгөртө алган ар ким жарыялай алат.

Кайсы ички workflow'лор жарыялоочуну иштете аларын да чектеңиз. Милдеттүү бекитүү менен кол менен иштеткич чыгарылыштар үчүн акылга сыярлык демейки; каалаган бутакка push — андай эмес.

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

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