Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Spustitelný program v Rustu, který sestavila kontrola rust, se publikuje jako artefakt se svým původem a každý případ v Rustu spouští program, který jmenuje MAJORDOMUS_BIN, místo aby si nějaký sestavoval

Debug program, který sestavuje job rust, s runnerem nezmizí: je to artefakt majordomus-cli-<target> s majordomus-cli.json vedle, který pojmenovává commit, cílový triple, toolchain a digest Cargo.lock, takže pozdější job nebo pozdější fáze (release, runner scénářů nad skutečnou binárkou) jej může stáhnout, nastavit MAJORDOMUS_BIN a nikdy nespustit cargo build. Každý případ, který program řídí, tuto proměnnou respektuje, jako už respektoval launcher bin/majordomus-mcp.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

scripts/rust-check --artifact DIR zkopíruje debug spustitelný soubor vedle majordomus-cli.json, který jmenuje commit, target triple, toolchain a digest Cargo.lock; workflow jej nahraje jako majordomus-cli-<target>. rust_bin v test/lib.sh předá případu MAJORDOMUS_BIN, je-li nastaveno, odmítne soubor, který není spustitelný, při nenastavení jednou sestaví cargem a požádá případ o přeskočení, není-li ani jedno; launcher bin/majordomus-mcp respektuje stejnou proměnnou.

Co to znamená

Debug executable, který staví job rust, nezmizí s runnerem: je to artefakt majordomus-cli-<target>, s majordomus-cli.json vedle něj, jež pojmenovává commit, cílový triple, toolchain a digest Cargo.lock, takže pozdější job nebo pozdější fáze (release, scenario runner nad skutečným binárním souborem) jej může stáhnout, nastavit MAJORDOMUS_BIN a nikdy nespustit cargo build. Každý případ, který executable spouští, tuto proměnnou respektuje, jako to už dělal launcher bin/majordomus-mcp.

Princip

scripts/rust-check --artifact DIR zkopíruje target/debug/majordomus do DIR a zapíše metadata; workflow nahraje adresář. rust_bin v test/lib.sh je to, co volá jako první případ v Rustu: s nastaveným MAJORDOMUS_BIN vrátí cestu a nikdy nebuduje, přičemž cestu, která není spustitelná, odmítne jako selhání, a ne jako přeskočení; bez něj jednou sestaví přes cargo a vrátí cestu v targetu; bez cargo i bez proměnné vrátí kód přeskočení, který případy převedou na přeskočení, jaké vždy měly. Joby suite a macOS buildují jednou a proměnnou exportují, takže žádný případ nebuilduje. test/cases/94_ci_plan.sh dokazuje tři odpovědi rust_bin; test/cases/72_rust_mcp.sh a ostatní případy v Rustu běží přes něj.

Jak to vidět

scripts/rust-check --integration --artifact /tmp/dist && cat /tmp/dist/majordomus-cli.json
MAJORDOMUS_BIN=/tmp/dist/majordomus bash test/run.sh 72_rust_mcp
MAJORDOMUS_BIN=/nonexistent bash test/run.sh 72_rust_mcp     # a failure, not a skip
just test-shell 94_ci_plan

Co nepokrývá

Dva případy si ponechávají cargo pro tu polovinu svých tvrzení, která je vlastní cargu (sady HTTP a projekcí cratu v 76, příklady v dokumentaci a build měření výkonu v 77); s dodaným spustitelným souborem a bez cargo spustí svou polovinu se spustitelným souborem a řeknou, co přeskočily. V rámci jednoho běhu workflow suite nečeká na artefakt jobu rust: změřeno, build s teplou cache stojí vteřiny, zatímco čekání by serializovalo minuty (docs/CI.md). Artefakt je debug profil, který pohání každá kontrola; release binárky patří release workflow.

Proč existuje

Pozdější fáze pipeline potřebují spustitelný soubor a job, který ho nedbale přestavuje, zaplatí celou kompilaci znovu na izolovaném runneru. Publikovat build jednou s dostatečným původem, aby bylo jasné, že je správný, a naučit každého konzumenta jednu proměnnou, činí ze spustitelného souboru plnohodnotný výstup buildu místo vedlejšího efektu testů.

Detail vykreslený z docs/claims/rust-binary-artifact.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Spustitelný program v Rustu, který sestavila kontrola rust, se publikuje jako artefakt se svým původem a každý případ v Rustu spouští program, který jmenuje MAJORDOMUS_BIN, místo aby si nějaký sestavoval

    Vytvořeno při Install.

  2. 2 · kanonické tvrzení

    rust-binary-artifactdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si na tomto webu · docs/CI.md

  3. 3 · implementace

    scripts/rust-check

  4. 4 · test a scénáře

    Test: test/cases/401_the_rust_artifact_carries_its_provenance.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 401_the_rust_artifact_carries_its_provenance

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.