Jy het reeds 'n boutaak wat 'n wiel produseer, en 'n private bewaarplek wat dit moet ontvang. Die fout is om 'n tweede taak van 'n tak af weer te bou en die resultaat dieselfde vrystelling te noem. Skuif die lêer wat getoets is, noem dit volgens die digest, en hou die oplaai-bewys binne. Die stapplan hieronder volg een artefak van 'n openbare CI-loper tot by 'n interne publiseerder.

Bou waar die bron reeds is

Voer die bou uit in die taak wat reeds die bron, die gereedskapstel en die toetsversameling het. Niks aan 'n private bewaarplek vereis dat daardie taak dit moet bereik nie. Installeer die bou-frontpunt in die omgewing wat die projek reeds gebruik, en produseer dan albei verspreidingsformate as die projek albei lewer.

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

Hou die uitvoergids klein en weggooibaar. Die enigste dinge wat werd is om oor te dra, is die lêers wat die volgende taak gaan publiseer, plus hul hashes. Alles anders, insluitend virtuele omgewings en kasgeheues, kan uit die opgetekende bronrevisie herbou word. 'n Maer artefak is ook makliker om na te gaan, want elke lêer daarin is 'n lêer wat iemand kan inspekteer.

Teken aan wat hulle geproduseer het: die pakketnaam en weergawe uit die lêername, die bronrevisie, en die werkvloeiloop wat hulle geskep het. 'n Weergawe-string alleen identifiseer nie 'n lêer nie, want dieselfde weergawe kan twee keer uit verskillende commits gebou word. Skryf die revisie langs die lêername in die artefakbeskrywing, en behandel daardie rekord as deel van die oorhandiging.

Skuif grepe, nie instruksies om weer te bou nie

Twee boue is twee produkte. Tydstempels, ingebonde afhanklikhede en gereedskapweergawes kan almal die grepe verander, so 'n herbou het sy eie toetsbewyse en sy eie hersiening nodig. Bevorder eerder die lêers wat reeds hersien is.

Laai die verspreidingslêers op na die artefakstoorkamer wat jou CI-platform voorsien, en gee die interne taak 'n verwysing na daardie spesifieke artefak eerder as 'n taknaam.

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

As jou platform ondertekende herkoms ondersteun, vra dit om die artefak te attestteer en later die verwagte bewaarplek, werkvloei en bronrevisie te verifieer. GitHub se attestasie-dokumentasie beskryf bewerings van daardie vorm. 'n Geldige handtekening is herkomsbewys, nie 'n kwesbaarheidsoektog nie en ook nie 'n magtigingsbesluit nie.

Verifieer binne voordat jy oplaai

Die interne taak begin deur te kontroleer dat die lêer wat dit ontvang het, die lêer is wat goedgekeur is. Vergelyk digests met die rekord van die boutaak, nie met 'n waarde wat herbereken is uit wat ook al aangekom het nie.

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

Lees dan die metadata. Die pakketnaam, die weergawe en die verklaarde afhanklikhede moet ooreenstem met die hersiening wat jy goedgekeur het. 'n Wiel wie se naam reg lyk maar wie se afhanklikheidspenne verander het, is 'n ander pakket met dieselfde etiket. As die metadata geskuif het, behandel die artefak as nie-goedgekeur en vind uit watter bou dit geproduseer het.

As die digests nie ooreenstem nie, stop. Moenie oplaai nie, en moenie die lêer herstel deur dit in plek te herbou nie; dit wis die bewyse dat iets onderweg verander het. 'n Wanverhouding beteken die artefakstoorkamer, die aflaai-stap of die rekord is verkeerd, en elkeen van dié verdien 'n verduideliking voordat 'n vrystelling gepubliseer word.

Hanteer die antwoord oor duplikaat-weergawes

Private bewaarplekke weier gewoonlik om 'n bestaande weergawe te oorskryf, en daardie weiering is 'n kenmerk. Wanneer 'n oplaai misluk omdat die weergawe bestaan, inspekteer die bewaarplek se rekord vir daardie weergawe en vergelyk die lêers wat dit hou met die digests wat jy wou publiseer.

'n Bestaande weergawe kan beteken 'n vroeere oplaai het geslaag en die antwoord het verlore gegaan, of dit kan beteken iemand het ander inhoud onder dieselfde nommer gepubliseer.

Moenie die weergawe verwyder nie, en moenie 'n nuwe nommer uitdink om verby die fout te kom nie. Besluit saam met die vrystellingseienaar of die gestoorde inhoud aanvaarbaar is, en teken dan die uitkoms aan. As die inhoud verskil, het jy 'n weergawe-probleem, nie 'n pyplyn-probleem nie.

Hou die oplaai-bewys aan een kant

Net die interne publiseerder het bewaarplek-bewyse nodig, en net vir die duur van die oplaai. Beperk die token tot die teiken-bewaarplek en tot oplaai-bewerkings, hou dit in die interne stelsel se geheime stoorkamer, en laat dit heeltemal uit die boutaak. As die boutaak kan publiseer, dan kan enigiemand wat die bou kan verander, publiseer.

Beperk ook watter interne werkvloeie die publiseerder mag begin. 'n Handmatige sneller met 'n vereiste goedkeuring is 'n redelike verstek vir vrystellings; 'n stoot na enige tak is nie.

Die voltooide vrystelling moet drie dinge agterlaat: die verspreidingslêers, hul digests saam met die bronrevisie, en 'n bewaarplek-rekord wat dieselfde weergawe wys.

Verwante artikels