O ti ní iṣẹ́ build tí ń ṣe wheel, àti ibi-ìpamọ́ àdáni kan tí ó yẹ kí ó gbà á. Àṣìṣe ni láti jẹ́ kí iṣẹ́ kejì tún kọ́ láti ẹ̀ka kan kí ó sì pe àbájáde náà ní ìtẹ̀jáde kan náà. Gbé fáìlì tí a ti dán wò, fún un ní orúkọ pẹ̀lú digest, kí o sì pa ẹ̀rí-ìdánidá ìgbé-sórí mọ́ ní inú. Àlàyé tí ó wà nísàlẹ̀ ń tẹ̀lé artifact kan láti CI runner gbangba dé atẹ̀jáde inú.

Kọ́ ní ibi tí orísun kóòdù wà tẹ́lẹ̀

Ṣiṣẹ́ build nínú iṣẹ́ tí ó ti ní orísun kóòdù, ẹ̀rọ àti ẹ̀ka àdánwò. Kò sí ohun kan nípa ibi-ìpamọ́ àdáni tí ó béèrè kí iṣẹ́ yẹn dé ọ̀dọ̀ rẹ̀. Fi build frontend sínú àyíká tí iṣẹ́ náà ti ń lò, kí o sì gbé àwọn ọ̀nà ìpín méjèèjì jáde bí iṣẹ́ náà bá ń fi méjèèjì ránṣẹ́.

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

Jẹ́ kí àpò àbájáde kéré kí ó sì jẹ́ ti ìlò ẹ̀ẹ̀kan. Ohun kan ṣoṣo tí ó yẹ kí a gbé lọ ni àwọn fáìlì tí iṣẹ́ tí ń bọ̀ yóò tẹ̀ jáde, pẹ̀lú àwọn hash wọn. Ohun mìíràn gbogbo, pẹ̀lú àyíká virtual àti cache, ni a lè tún kọ́ láti inú àtúnyẹ̀wò orísun tí a ti kọ sílẹ̀. Artifact tí ó rẹ̀wẹ̀sì ni ó tún rọrùn láti yẹ̀wò, nítorí pé fáìlì kọ̀ọ̀kan nínú rẹ̀ jẹ́ fáìlì tí ẹnìkan lè ṣàyẹ̀wò.

Kọ sílẹ̀ ohun tí ó ṣẹ̀dá wọn: orúkọ package àti ẹ̀yà láti orúkọ fáìlì, àtúnyẹ̀wò orísun, àti ìṣiṣẹ́ workflow tí ó dá wọn. Okùn ẹ̀yà nìkan kò dánimọ̀ fáìlì, nítorí pé ẹ̀yà kan náà ni a lè kọ́ lẹ́ẹ̀mejì láti commit ọ̀tọ̀ọ̀tọ̀. Kọ àtúnyẹ̀wò náà lẹ́gbẹ̀ẹ́ orúkọ fáìlì nínú àpèjúwe artifact, kí o sì ka àkọsílẹ̀ yẹn sí apá kan ìfàṣẹ́.

Gbé àwọn byte, kì í ṣe àwọn ìtọ́ni láti tún kọ́

Build kejì jẹ́ ọjà kejì. Àwọn àmì àkókò, àwọn ìgbẹ́kẹ̀lé tí a kó pọ̀ àti àwọn ẹ̀yà irinṣẹ́ lè yí àwọn byte padà, nítorí náà ìtúnkọ́ nílò ẹ̀rí àdánwò tirẹ̀ àti àyẹ̀wò tirẹ̀. Dípò bẹ́ẹ̀, gbé àwọn fáìlì tí a ti yẹ̀wò sí ipò gíga.

Gbé àwọn fáìlì ìpín sókè sí ibi-ìpamọ́ artifact tí pẹpẹ CI rẹ ń pèsè, kí o sì fún iṣẹ́ inú ní ìtọ́kasí sí artifact pàtó yẹn dípò orúkọ ẹ̀ka.

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

Bí pẹpẹ rẹ bá ṣe àtìlẹ́yìn orísun tí a fi ọwọ́ sí, béèrè kí ó jẹ́rìí artifact, lẹ́yìn náà ṣàyẹ̀wò ibi-ìpamọ́, workflow àti àtúnyẹ̀wò orísun tí a retí. Ìwé-ìtọ́kasí ìjẹ́rìí GitHub ṣàlàyé àwọn ẹ̀sùn irú yẹn. Ìforúkọsílẹ̀ tí ó wúlò jẹ́ ẹ̀rí orísun, kì í ṣe àyẹ̀wò àlébù àti kì í ṣe ìpinnu àṣẹ.

Ṣàyẹ̀wò ní inú kí o tó gbé sókè

Iṣẹ́ inú bẹ̀rẹ̀ pẹ̀lú ṣíṣàyẹ̀wò pé fáìlì tí a gbà ni fáìlì tí a fọwọ́ sí. Fi digest wé àkọsílẹ̀ láti iṣẹ́ build, kì í ṣe iye tí a tún ṣírò láti inú ohun tí ó dé.

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

Lẹ́yìn náà ka metadata. Orúkọ package, ẹ̀yà àti àwọn ìgbẹ́kẹ̀lé tí a kéde yẹ kí ó bá àyẹ̀wò tí o fọwọ́ sí mu. Wheel tí orúkọ rẹ̀ dà bí ẹni pé ó tọ́ ṣùgbọ́n tí àwọn pin ìgbẹ́kẹ̀lé rẹ̀ ti yí padà jẹ́ package mìíràn tí ó gbé àmì kan náà. Bí metadata bá ti lọ, ka artifact náà sí èyí tí a kò fọwọ́ sí, kí o sì wá ìmọ̀ irú build tí ó ṣẹ̀dá rẹ̀.

Bí digest kò bá mu, dúró. Má gbé e sókè, má sì tún fáìlì náà ṣe ní ipò rẹ̀; ìyẹn ń pa ẹ̀rí rẹ́ pé ohun kan yí padà ní ọ̀nà. Àìbámu túmọ̀ sí pé ibi-ìpamọ́ artifact, ìgbésẹ̀ ìgbàlódé tàbí àkọsílẹ̀ ti ṣe àṣìṣe, àti pé ọ̀kọ̀ọ̀kan wọn yẹ àlàyé kí a tó tẹ ìtẹ̀jáde jáde.

Bójú ìdáhùn ẹ̀yà ẹlẹ́ẹ̀mejì

Àwọn ibi-ìpamọ́ àdáni sábà kọ̀ láti tún ẹ̀yà tí ó wà kọ, àti pé ìkọ̀ yẹn jẹ́ ẹ̀yà kan. Nígbà tí ìgbé-sórí bá kùnà nítorí pé ẹ̀yà wà, ṣàyẹ̀wò àkọsílẹ̀ ibi-ìpamọ́ fún ẹ̀yà yẹn kí o sì fi àwọn fáìlì tí ó ní wé àwọn digest tí o fẹ́ tẹ̀ jáde.

Ẹ̀yà tí ó wà lè túmọ̀ sí pé ìgbé-sórí àkọ́kọ́ ṣàṣeyọrí tí ìdáhùn sì sọnù, tàbí pé ẹnìkan tẹ content mìíràn jáde lábẹ́ nọ́mbà kan náà.

Má pa ẹ̀yà rẹ́, má sì hù nọ́mbà tuntun láti gbà á kọjá àṣìṣe. Pinnu pẹ̀lú ẹni tí ó ni ìtẹ̀jáde bóyá content tí a ti fi pamọ́ yẹ́gbẹ́, lẹ́yìn náà kọ àbájáde sílẹ̀. Bí content bá yàtọ̀, o ní ìṣòro ẹ̀yà, kì í ṣe ìṣòro pipeline.

Pa ẹ̀rí-ìdánidá ìgbé-sórí mọ́ ní ẹ̀gbẹ́ kan

Atẹ̀jáde inú nìkan ni ó nílò ẹ̀rí-ìdánidá ibi-ìpamọ́, àti ní àkókò ìgbé-sórí nìkan. Dín token kù sí ibi-ìpamọ́ àfojúsùn àti sí àwọn ìgbésẹ̀ ìgbé-sórí, pa á mọ́ nínú ibi-ìpamọ́ àṣírí ẹ̀rọ inú, kí o sì fi í sí ìta iṣẹ́ build pátápátá. Bí iṣẹ́ build bá lè tẹ̀ jáde, ẹnikẹ́ni tí ó lè yí build padà lè tẹ̀ jáde pẹ̀lú.

Dín àwọn workflow inú tí ó lè bẹ̀rẹ̀ atẹ̀jáde kù pẹ̀lú. Ìfá àfọwọ́ pẹ̀lú àṣẹ tí ó pọn dandan jẹ́ àkọ́kọ́ tí ó bọ́gbọ́n fún àwọn ìtẹ̀jáde; títẹ̀ sí ẹ̀ka èyíkéyìí kì í ṣe bẹ́ẹ̀.

Ìtẹ̀jáde tí ó parí yẹ kí ó fi ohun mẹ́ta sílẹ̀: àwọn fáìlì ìpín, àwọn digest wọn pẹ̀lú àtúnyẹ̀wò orísun, àti àkọsílẹ̀ ibi-ìpamọ́ tí ó fi ẹ̀yà kan náà hàn.

Àwọn àpilẹ̀kọ tó jọra