Co to znamená
share/distribution.yaml označí cíl jako supported, experimental nebo unavailable. Release publikuje artefakt pro každý cíl v prvních dvou stavech. Neexistuje stav, v němž release existuje, je nabízen příkazem latest.json a nemá nic pro platformu, kterou dokumentace uvádí.
Princip
Tři nezávislá odmítnutí ve třech okamžicích:
- matice buildu je
fail-fast, takže selhání jednoho cíle zastaví celý běh; - publikace je samostatná úloha, která začne, až když uspěje každý build;
scripts/release-record, který zapisuje záznam z artefaktů, které byly skutečně nahrány, odmítne zapsat záznam bez podporovaného cíle a typovaná kontrola za ním (Release::findings) je také tím, comajordomus distribution validatespouští nad každým commitnutým záznamem.
Úplnost se posuzuje vůči sadě, proti níž byl release publikován, kterou záznam zachycuje v required_targets místo toho, aby ji přepočítával. Přidání platformy do modelu je příslib pro příští release: v0.3.1 nemůže získat artefakt riscv64, ať se model poté změní jakkoli, a kontrola, která tvrdila opak, by v den přidání cíle zneplatnila každý historický záznam — což také udělala, dokud to první skutečný release neukázal. Vynucovacím bodem je publikace, kde release-record vidí model svého dne a odmítne částečný release s kódem 10. Záznam napsaný před vznikem pole nenese žádnou sadu a posuzuje se jen podle vnitřní konzistence.
Veřejná metadata se generují z tohoto záznamu, takže záznam, který nešlo zapsat, jsou metadata, která neexistují, a latest.json dál ukazuje na release před ním.
Jak to vidět
majordomus distribution validate # every record against the model
bash test/run.sh 87_release_pipeline # including a recorder given an empty directoryCo nepokrývá
Cíl, který model označí unavailable, je zdokumentován s důvodem a nesestavuje se; instalátor ho odmítne jménem, místo aby předstíral. To je podporovaný způsob, jak platformu nedodat — tiché vynechání je to, co toto tvrzení zakazuje.
Proč existuje
Napůl publikovaný release je klasické selhání distribuce: tag vypadá zeleně, stránka release má pět archivů místo šesti a uživatelé šesté platformy dostanou 404 od instalátoru, kterému bylo řečeno, že platforma existuje. Udělat z úplnosti vlastnost záznamu, a ne něčí pozornosti, znamená, že selhání nastane v CI, dřív než si cokoli někdo stáhne.