Tayari una kazi ya ujenzi inayozalisha wheel na hazina ya kibinafsi inayopaswa kuipokea. Kosa ni kuacha kazi ya pili ijenge upya kutoka tawi na kuita matokeo toleo lile lile. Hamisha faili lililojaribiwa, lipe jina kwa dijesti, na weka kitambulisho cha kupakia upande wa ndani. Maelezo yafuatayo yanafuata artefact moja kutoka runner ya CI ya umma hadi mchapishaji wa ndani.

Jenga mahali msimbo wa chanzo unapoishi tayari

Endesha ujenzi katika kazi ambayo tayari ina msimbo wa chanzo, zana na seti ya majaribio. Hakuna kitu kuhusu hazina ya kibinafsi kinachohitaji kazi hiyo kuifikia. Sakinisha frontend ya ujenzi katika mazingira ambayo mradi tayari unatumia, kisha zalisha miundo yote miwili ya usambazaji ikiwa mradi unasambaza yote mawili.

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

Weka saraka ya matokeo ikiwa ndogo na ya matumizi ya mara moja. Vitu pekee vinavyostahili kupelekwa mbele ni faili ambazo kazi inayofuata itachapisha, pamoja na hashi zake. Kila kingine, ikiwa ni pamoja na mazingira pepe na akiba, kinaweza kujengwa upya kutoka marekebisho ya chanzo yaliyorekodiwa. Artefact nyembamba pia ni rahisi kukagua, kwa sababu kila faili ndani yake ni faili ambayo mtu anaweza kuichunguza.

Rekodi kilichozalisha: jina la kifurushi na toleo kutoka majina ya faili, marekebisho ya chanzo, na uendeshaji wa workflow uliozitengeneza. Mfuatano wa toleo peke yake hautambui faili, kwa sababu toleo lile lile linaweza kujengwa mara mbili kutoka commit tofauti. Andika marekebisho kando ya majina ya faili katika maelezo ya artefact, na chukulia rekodi hiyo kama sehemu ya makabidhiano.

Hamisha baiti, si maagizo ya kujenga upya

Ujenzi wa pili ni bidhaa ya pili. Muhuri wa muda, vitegemezi vilivyowekwa na matoleo ya zana vyote vinaweza kubadilisha baiti, kwa hiyo ujenzi upya unahitaji ushahidi wake wa majaribio na ukaguzi wake. Badala yake pandisha faili zilizokaguliwa.

Pakia faili za usambazaji kwenye hazina ya artefact inayotolewa na jukwaa lako la CI, na ipe kazi ya ndani rejeleo la artefact hiyo mahususi badala ya jina la tawi.

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

Ikiwa jukwaa lako linaunga mkono asili iliyosainiwa, liombe lithibitishe artefact, na baadaye thibitisha hazina, workflow na marekebisho ya chanzo yanayotarajiwa. Nyaraka za uthibitisho za GitHub zinaeleza madai ya umbo hilo. Sahihi halali ni ushahidi wa asili, si uchunguzi wa udhaifu na si uamuzi wa idhini.

Thibitisha ndani kabla ya kupakia

Kazi ya ndani huanza kwa kukagua kwamba faili iliyopokelewa ni faili iliyoidhinishwa. Linganisha dijesti na rekodi kutoka kazi ya ujenzi, si na thamani iliyohesabiwa upya kutoka kile kilichofika.

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

Kisha soma metadata. Jina la kifurushi, toleo na vitegemezi vilivyotangazwa vinapaswa kuendana na ukaguzi ulioidhinisha. Wheel ambayo jina lake linaonekana sahihi lakini pini zake za vitegemezi zimebadilika ni kifurushi kingine kinachobeba lebo hiyo hiyo. Ikiwa metadata imesogea, chukulia artefact kama haijaidhinishwa na ujue ni ujenzi upi uliizalisha.

Ikiwa dijesti hazilingani, simama. Usipakie na usirekebishe faili kwa kuijenga upya hapohapo; hiyo inafuta ushahidi kwamba kitu kilibadilika njiani. Kutokulingana kunamaanisha hazina ya artefact, hatua ya kupakua au rekodi si sahihi, na kila kimoja kinastahili maelezo kabla toleo halijachapishwa.

Shughulikia jibu la toleo lililorudiwa

Hazina za kibinafsi kwa kawaida hukataa kuandika juu ya toleo lililopo, na kukataa huko ni sifa. Uwasilishaji unaposhindikana kwa sababu toleo lipo, chunguza rekodi ya hazina kwa toleo hilo na linganisha faili inazoshikilia na dijesti ulizokusudia kuchapisha.

Toleo lililopo linaweza kumaanisha kuwa upakiaji wa awali ulifanikiwa na jibu likapotea, au kuwa mtu alichapisha maudhui tofauti chini ya namba hiyo hiyo.

Usifute toleo, na usibuni namba mpya ili kupita kosa. Amua na mmiliki wa toleo ikiwa maudhui yaliyohifadhiwa yanakubalika, kisha rekodi matokeo. Ikiwa maudhui yanatofautiana, una tatizo la matoleo, si tatizo la pipeline.

Weka kitambulisho cha upakiaji upande mmoja

Ni mchapishaji wa ndani pekee anayehitaji vitambulisho vya hazina, na kwa muda wa upakiaji tu. Punguza token kwa hazina lengwa na kwa shughuli za upakiaji, iweke katika hazina ya siri ya mfumo wa ndani, na iache nje kabisa ya kazi ya ujenzi. Ikiwa kazi ya ujenzi inaweza kuchapisha, basi yeyote anayeweza kubadilisha ujenzi anaweza kuchapisha.

Punguza pia ni workflow zipi za ndani zinazoweza kuanzisha mchapishaji. Kichocheo cha mkono chenye idhini inayohitajika ni chaguo-msingi linafaa kwa matoleo; kusukuma kwenye tawi lolote sivyo.

Toleo lililokamilika linapaswa kuacha vitu vitatu: faili za usambazaji, dijesti zake pamoja na marekebisho ya chanzo, na rekodi ya hazina inayoonyesha toleo lile lile.

Makala zinazohusiana