{"slug":"virtcontroller","tag":"v1.9.1-CE-debian12-r1","current":true,"account":false,"tarball":"ReadyStack-virtcontroller-v1.9.1-CE-debian12-r1.tar.gz","tarball_sha256":"18197a84fe52b2ad79fc6a212678655ea6f8bbee69817c425a667594c31bb9e7","generated_at":"2026-10-29T19:26:29Z","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/virtcontroller:v1.9.1-CE-debian12-r1","image_manifest_digest":"sha256:4e9192b84b55aa401f992f0337ac4a76e79d25ff2519e803274a3c353b01ad12","config_digest":"sha256:4572cc70f70bff2054e2c03b7a317456f854041b55e2937cd5e4fac678b3cce2"},"checksummed_files":25689},"files":[{"path":"BASES.tsv","size":189,"sha256":"5a810af4e9abf4e10d821842707a424825d58eff1e69e2c84d4f7aa40b772f7a","public":"full","lines":1,"url":"/api/recipe/virtcontroller/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":3965318,"sha256":"59679a09a043ad7c55899b01d60147f6a491f16c90deba9f3423db092865fdf3","public":"account","lines":25689},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/virtcontroller/v1.9.1-CE-debian12-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":3377,"sha256":"de03fa78678ffba3610058ea69fa70bc4fde2c5ea0c4718c0ffcf534757e7d16","public":"account","lines":42},{"path":"Dockerfile.offline","size":3377,"sha256":"de03fa78678ffba3610058ea69fa70bc4fde2c5ea0c4718c0ffcf534757e7d16","public":"account","lines":42},{"path":"Dockerfile.offline.pinned","size":3377,"sha256":"de03fa78678ffba3610058ea69fa70bc4fde2c5ea0c4718c0ffcf534757e7d16","public":"preview","lines":42,"preview":{"text":"# =====================================================================================================================\n# KubeVirt v1.9.1 virt-controller: 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-controller:virt-controller-image` on vendored/virtcontroller-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/virtcontroller.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/virtcontroller-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-controller.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-controller && rm -f /out/rootfs/var/cache/ldconfig/aux-cache","lines_shown":24,"lines_total":42}},{"path":"Dockerfile.vendor","size":2251,"sha256":"0ac0581bd4e71d6ef2f87018c8e9919a8033b8b078315fd3e7b647f428213c22","public":"account","lines":28},{"path":"MANIFEST.txt","size":2218496,"sha256":"725e5b861909627553328b729b2205094c1a18e061fb179475acd4c259b780d2","public":"account","lines":25691},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"db702391979e0aeef560b35228390eff6b06039d97d03e916f6b9883bdd32df7","public":"full","lines":1,"url":"/api/recipe/virtcontroller/v1.9.1-CE-debian12-r1/files/SOURCE_DATE_EPOCH.txt","text":"1791523273\n"},{"path":"TARGET_DIGEST.txt","size":362,"sha256":"2100a6b91f908e365c331a9980614b9a2a3634ba46ffb9ac695119c237e05121","public":"full","lines":9,"url":"/api/recipe/virtcontroller/v1.9.1-CE-debian12-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:4e9192b84b55aa401f992f0337ac4a76e79d25ff2519e803274a3c353b01ad12\nconfig_digest=sha256:4572cc70f70bff2054e2c03b7a317456f854041b55e2937cd5e4fac678b3cce2\ntag=readystack/virtcontroller:v1.9.1-CE-debian12-r1\nprobe_port=80\nprobe_path=/\nprobe_timeout=180\nverify_boot=oneshot\nverify_oneshot_arg=--help\nverify_oneshot_expect=--launcher-image\n"},{"path":"VERIFY_OFFLINE.sh","size":10153,"sha256":"3e8184ea230cfd8f41f977e26be6bf7bd03112c396c517837ce0c7de4f7399dd","public":"account","lines":165},{"path":"docs/PROVENANCE.md","size":1803,"sha256":"b4d1df1799ec1af0fbb13637eb9986cbb29b4e59f841db796b8e4a0e8ca962fa","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5365,"sha256":"b01e85f33b605823c526e603aa19cd7d725547740a91ad10908de38d80292247","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1976,"sha256":"d2ab071c8107209a6be61daf1aa4be65a5beddabd7a5329ef4f4d1ecf3bca4f9","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":175,"sha256":"4acda0c088e7f4e178a413af2a1949223d94b52783749533846f7afdef93e89e","public":"full","lines":2,"url":"/api/recipe/virtcontroller/v1.9.1-CE-debian12-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for virtcontroller (resolve at build_kit)\nquay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":2477,"sha256":"db14be6e3fb86d73c9700b6d9ad0a709bd9dcd4c494f9a879bb5a0df04d00fc4","public":"account","lines":42},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":656,"sha256":"f04aeabdea64ae2d4c80978cfaef5e0f4b5aceab38c6f920ee0ce791f85f46f6","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":276322,"sha256":"87636f1f4a64b764afc7cd0447d34615ede1a0ab508a58bf92019b6a63b83124","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":315,"sha256":"56992ab2c00928df084859479a6200c447fdd2e4d85a3508525477acdfafbada","public":"full","lines":9,"url":"/api/recipe/virtcontroller/v1.9.1-CE-debian12-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"virtcontroller\",\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":4846,"sha256":"802466d514d20fed2e94d20b7f66bd4a573be1bb8dfa86c901126228ce7c5f79","public":"account","lines":87},{"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-controller.txt","size":5802,"sha256":"58124486471cb7ab304bdb82cd88658fca70a98587a9ec70e7cb301afc4fdfe5","public":"account","lines":101},{"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":1260,"sha256":"8d843711dc10f4a81e4cb9edfb5c2ec56021ce68d62d0fc9eb014a42659fad09","public":"account","lines":36},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/virtcontroller/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":115890633},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":12861,"bytes":346991873}},"links":{"page":"https://readystack.dev/products/virtcontroller/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fvirtcontroller%2Frecipe","kit":"https://readystack.dev/buy.html?product=virtcontroller"}}