Танд wheel үйлдвэрлэдэг build ажил болон түүнийг хүлээж авах хувийн репозитор аль хэдийн бий. Алдаа нь хоёр дахь ажилд салбараас дахин бүтээхийг зөвшөөрч, үр дүнг мөнөөх хувилбар гэж нэрлэх явдал юм. Туршисан файлыг зөөж, дайжестээр нэрлэж, байршуулалтын итгэмжлэлийг дотроо байлга. Доорх тайлбар нэг артефактыг нийтийн CI залуураас дотоод нийтлэгч хүртэл дагана.

Эх код аль хэдийн байгаа газарт бүтээ

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 биш.

Дууссан хувилбар гурван зүйлийг үлдээх ёстой: түгээлтийн файлууд, эх кодын хувилбартай нь хамт тэдгээрийн дайжестууд, мөн ижил хувилбарыг харуулсан репозиторын бүртгэл.

Холбоотой нийтлэлүүд