{"slug":"virtapi","tag":"v1.9.1-CE-debian12-r1","current":true,"account":false,"tarball":"ReadyStack-virtapi-v1.9.1-CE-debian12-r1.tar.gz","tarball_sha256":"f48e3b80271a1986c158408fc06277d5be879e4bff7ac7e3d979925aef3dcf04","generated_at":"2026-10-29T19:26:01Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/kubevirt/kubevirt","ref":"v1.9.1","commit":"c3d19093f9c7b843b3879b18dc088911c081c39e","url":"https://github.com/kubevirt/kubevirt/tree/c3d19093f9c7b843b3879b18dc088911c081c39e"},"fetches":[{"kind":"git","url":"https://github.com/kubevirt/kubevirt.git"}],"bases":[{"image":"quay.io/kubevirt/builder:2606231619-4fe2cd536f","digest":"sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0","builder_images":["quay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8"]},"build_method":"source-rebuild-go","source_date_epoch":1791523273,"source_date_epoch_utc":"2026-10-09T05:21:13Z","target":{"image":"readystack/virtapi:v1.9.1-CE-debian12-r1","image_manifest_digest":"sha256:1b50959eea78ae4db3a6037b90943ada86b9cb5426bb4790525316087d0ff582","config_digest":"sha256:b17e4190206c645d0d7d05dec8b896f2b7258c0ea2fe87e8696bacaa3cc9823c"},"checksummed_files":25689},"files":[{"path":"BASES.tsv","size":189,"sha256":"5a810af4e9abf4e10d821842707a424825d58eff1e69e2c84d4f7aa40b772f7a","public":"full","lines":1,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/BASES.tsv","text":"quay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8\tbases/quay.io_kubevirt_builder_2606231619-4fe2cd536f_a48a7dd5a1b8.oci\n"},{"path":"BUILD_OFFLINE.sh","size":6738,"sha256":"83299978ccd02a0b69e163d760da1211b401bbfa35a3184ca674dc37ff876732","public":"preview","lines":125,"preview":{"text":"#!/usr/bin/env bash\n# =============================================================================\n# ReadyStack — offline reproducible rebuild.\n#\n# Rebuilds this product's image from THIS ARCHIVE ALONE, with no network access\n# of any kind, and prints the resulting linux/amd64 image-manifest digest.\n# Run ./VERIFY_OFFLINE.sh afterwards to assert it equals the published digest.\n#\n# Requirements: linux/amd64 Docker host, docker buildx >= 0.30, jq, tar.\n# No git, no registry access, no additional tooling.\n#\n#   ./BUILD_OFFLINE.sh                the rebuild (OCI image + a docker-loadable copy)\n#   ./BUILD_OFFLINE.sh --provenance   the same rebuild with SLSA v1 build provenance (mode=max) attached to the OCI\n#                                     image, generated by BuildKit, not by any build step. Run on your own hardened,\n#                                     isolated build platform and sign that provenance with a key the build cannot\n#                                     reach, and the result meets SLSA Build Level 3 (see REBUILD.md). The image\n#                                     digest is the same either way.\n# =============================================================================\nset -euo pipefail\nPROVENANCE=0\nfor arg in \"$@\"; do\n  case \"$arg\" in\n    --provenance) PROVENANCE=1 ;;\n    -h|--help) sed -n '2,20p' \"$0\"; exit 0 ;;","lines_shown":24,"lines_total":125}},{"path":"CHECKSUMS.sha256","size":3876299,"sha256":"35fd17bb05d66cfdfbc682b1d08c3dff4126d524e6c7f1d4f5cd196706929899","public":"account","lines":25689},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":3290,"sha256":"afb96fd325bf25b89c78a0124ad561f80a7dd76fb0c1bdba6f98c6675c9c9f75","public":"account","lines":42},{"path":"Dockerfile.offline","size":3290,"sha256":"afb96fd325bf25b89c78a0124ad561f80a7dd76fb0c1bdba6f98c6675c9c9f75","public":"account","lines":42},{"path":"Dockerfile.offline.pinned","size":3290,"sha256":"afb96fd325bf25b89c78a0124ad561f80a7dd76fb0c1bdba6f98c6675c9c9f75","public":"preview","lines":42,"preview":{"text":"# =====================================================================================================================\n# KubeVirt v1.9.1 virt-api: KubeVirt's OWN Bazel build, offline (docker buildx build --network=none).\n# Stage kubevirt-build is KubeVirt's pinned builder (quay.io/kubevirt/builder, CentOS Stream 9, Bazel 6.5.0). It runs\n# kubevirt-build.sh: the ReadyStack patch series (patches/, each patch says what it changes and why), KubeVirt's\n# bootstrap and `bazel build //cmd/virt-api:virt-api-image` on vendored/virtapi-src (git archive of c3d19093f9c7), with the\n# vendored Bazel repository cache (RPMs, Go SDK, rules, distroless base, libssl3 .deb: every download by sha256, none\n# made here). The image Bazel builds is unpacked into /out/rootfs\n# (oci-rootfs.py: config parity with the final stage below, no build path in any file); the final stage is that\n# filesystem with that config, as one layer.\n# Dockerfile and Dockerfile.offline are byte copies of this file. Written by\n# product-kits/kubevirt-stack/kubevirt/mk-kits.py from strategies/virtapi.json; never edit by hand.\n# =====================================================================================================================\nFROM quay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8 AS kubevirt-build\n# the commit's date as the default (as every kit declares it): assemble_kit's scratch build passes no build arguments,\n# and kubevirt-build.sh refuses to build without it; the canonical build and BUILD_OFFLINE.sh pass the same value\nARG SOURCE_DATE_EPOCH=1791523273\nARG KUBEVIRT_VERSION=v1.9.1\nCOPY vendored/virtapi-src/ /root/go/src/kubevirt.io/kubevirt/\nCOPY vendored/bazel-repository-cache/ /kvs/cache/repo/\nCOPY patches/ /kvs/kit/patches/\nCOPY vendor/ /kvs/kit/vendor/\nCOPY kubevirt-build.sh oci-rootfs.py gen_rpmdb.py gomod-sbom.py gomod-virt-api.txt kubevirt-pins.env Dockerfile.offline.pinned /kvs/kit/\n# Bazel runs no ldconfig, so there is no /var/cache/ldconfig/aux-cache to strip; the rm keeps that true.\nRUN bash /kvs/kit/kubevirt-build.sh build virt-api && rm -f /out/rootfs/var/cache/ldconfig/aux-cache","lines_shown":24,"lines_total":42}},{"path":"Dockerfile.vendor","size":2195,"sha256":"ad936fda7c117f5b356c9034dfdc1f7e9fd22f58a1a0711f2ef703dfb23208e7","public":"account","lines":28},{"path":"MANIFEST.txt","size":2129477,"sha256":"4c3950243f6a4c0c58c15e8299da3a88202dcfd97be8a7218f3c174aabfce18f","public":"account","lines":25691},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"db702391979e0aeef560b35228390eff6b06039d97d03e916f6b9883bdd32df7","public":"full","lines":1,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/SOURCE_DATE_EPOCH.txt","text":"1791523273\n"},{"path":"TARGET_DIGEST.txt","size":360,"sha256":"983d942bffe5a8f58b01fe077d47ea09054755db7fa57a807fe88973cdf30c42","public":"full","lines":9,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:1b50959eea78ae4db3a6037b90943ada86b9cb5426bb4790525316087d0ff582\nconfig_digest=sha256:b17e4190206c645d0d7d05dec8b896f2b7258c0ea2fe87e8696bacaa3cc9823c\ntag=readystack/virtapi:v1.9.1-CE-debian12-r1\nprobe_port=80\nprobe_path=/\nprobe_timeout=180\nverify_boot=oneshot\nverify_oneshot_arg=--help\nverify_oneshot_expect=--console-server-port\n"},{"path":"VERIFY_OFFLINE.sh","size":10153,"sha256":"3e8184ea230cfd8f41f977e26be6bf7bd03112c396c517837ce0c7de4f7399dd","public":"account","lines":165},{"path":"docs/PROVENANCE.md","size":1782,"sha256":"1f40db5f938724248c56bfcd8c6c25c789f8d2ea16f35d29c1ba9b853386ab23","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5323,"sha256":"5b20b746858a4babcbe2f1ddf42b9eeec6ad369c2911484b46096d1cfa554aa3","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1941,"sha256":"8cffc7d6114b218c4534b162b708d60f925fba5a9da1cd819a18862de8d2357c","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":168,"sha256":"f7d52724d89cf0f9376d323520daad0bc7c15b86f08e3d433514e9fa2c6f1c43","public":"full","lines":2,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for virtapi (resolve at build_kit)\nquay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":2449,"sha256":"fe97a1f4bca37ff4b3d8a736f3242a31fb65050c11815fea0af931cb00a47498","public":"account","lines":42},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":649,"sha256":"3eb60a1cb3ba04aaf0a7043ed8b4270feb8e2edb0efd32479f990ff3ea414e84","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":276315,"sha256":"ac5fc885c080a684ffec83f3eba382c59cea4cd7dcfec9bcf1f99fa1bf52e241","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":308,"sha256":"01d037b2587cb4edb02472ac9b68ea1dce63603dbeb499ab758ba652c54783d0","public":"full","lines":9,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"virtapi\",\n  \"repo\": \"https://github.com/kubevirt/kubevirt\",\n  \"ref\": \"v1.9.1\",\n  \"commit\": \"c3d19093f9c7b843b3879b18dc088911c081c39e\",\n  \"tree_listing_sha256\": \"de7abf04e51b6cf004d0365dfe6d8c5251edeeb69bfa0caa3d8b366b85fe6f36\",\n  \"file_count\": 12717\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":1,"sha256":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","public":"account","lines":1},{"path":"docs/provenance/TOOLCHAIN.lock","size":5836,"sha256":"919aaa65ab5c244a11eb3dfb4dd4c6469f4c7afff10bcf2ddf9052209a72dcfb","public":"account","lines":103},{"path":"gen_rpmdb.py","size":1955,"sha256":"4ccfc567d8604ba578a9001bdfb6ffce9e4f759018a487e83b82a291141b150d","public":"account","lines":34},{"path":"gomod-sbom.py","size":6827,"sha256":"36dda6e3fecfe3b36290c2d590cfe0b017ed8bdc6261f7c74c14754c098cb868","public":"account","lines":122},{"path":"gomod-virt-api.txt","size":5782,"sha256":"daf8439d64a3ccb1f0b7a2d9e5948007b40b4ea78d77ec58f6ecd9c6513e0b1d","public":"account","lines":114},{"path":"kubevirt-build.sh","size":8200,"sha256":"0a8b822cd8dabb2009f98e06a3a40db8f35ec1fdcda7eed1e19110c0cb0225f2","public":"account","lines":156},{"path":"kubevirt-pins.env","size":485,"sha256":"17f3ad30a730a21ef24f6a92de7d96bc48330ee7386fa9c7c7ba6b58150552a7","public":"account","lines":9},{"path":"oci-rootfs.py","size":9179,"sha256":"4f065252354c788d72290f873f6ef96c5a45a712883fa027aeb5a047367b99e1","public":"account","lines":199},{"path":"patches/0001-go-sdk-1.26.10.patch","size":1331,"sha256":"ebbc8de594974d46e283c9c2259436825eb44692624c1d3db3f36f23686dca56","public":"account","lines":37},{"path":"patches/0002-rpm-bumps-cs9-x86_64.patch","size":30141,"sha256":"6cb034453b7b829eb834c5e86d0ca129e0414c05021af640b4216f2f885420d8","public":"account","lines":633},{"path":"patches/0003-rpmdb-layer.patch","size":20458,"sha256":"fbfb796cd80f0be6975414591c1228227780fd3fa107a6fce14de5581c0e1b81","public":"account","lines":416},{"path":"patches/0004-virt-handler-nonroot-default-user.patch","size":734,"sha256":"860de2d46557b3a57c18e95ce4163bd616bd421bb5e9ff88b6375b41e4bc6697","public":"account","lines":16},{"path":"patches/0005-distroless-libssl3-3.0.22-1-deb12u2.patch","size":6313,"sha256":"3a160db2ff4d0e3d2e744370bcee04619523b13b2cbcf7471731635538a29f09","public":"account","lines":137},{"path":"patches/0006-go-modules-x-net-0.60.0-grpc-1.83.2.patch","size":6546865,"sha256":"b315eef09f6fe792a9671bcbc7aa6590cb23d20b8bf9ead8eb93f825e951c863","public":"account","lines":128561,"redactions":[{"line":126576,"kind":"internal host"},{"line":126615,"kind":"internal host"},{"line":126650,"kind":"internal host"},{"line":126654,"kind":"internal host"},{"line":126764,"kind":"internal host"},{"line":128124,"kind":"internal host"},{"line":128138,"kind":"internal host"},{"line":128152,"kind":"internal host"},{"line":128336,"kind":"internal host"}],"kit_sha256":"3af4e8b008f588b32181378111c1bafb09a47ab40eb008e20c8f609caef5b018"},{"path":"rebuild.json","size":1258,"sha256":"ee5af3a10e16db272a290594c6dbd4aef8cd9c2eb3e07f5ba891176749cbeb62","public":"account","lines":36},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/virtapi/v1.9.1-CE-debian12-r1/files/toolchain/BUILDKIT_TAG.txt","text":"moby/buildkit:v0.31.2\n"}],"skipped":[],"kit_adds":{"bases":{"files":22,"bytes":816718381},"docs":{"files":12771,"bytes":115895763},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":12861,"bytes":346991873}},"links":{"page":"https://readystack.dev/products/virtapi/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fvirtapi%2Frecipe","kit":"https://readystack.dev/buy.html?product=virtapi"}}