{"slug":"virtoperator","tag":"v1.9.1-CE-debian12-r1","current":true,"account":false,"tarball":"ReadyStack-virtoperator-v1.9.1-CE-debian12-r1.tar.gz","tarball_sha256":"4e7a0e73726dde53389c67efc71197899a363f511845751a824727240c62960f","generated_at":"2026-10-29T19:28:42Z","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/virtoperator:v1.9.1-CE-debian12-r1","image_manifest_digest":"sha256:78de21c348d6b5c03db14e9b14e4fe02f947114771f8897f53c2f52bf435a0a6","config_digest":"sha256:4aeb293bd959d150231785c9c029cfcc262adb1ad631f55b1c37e38d40415fd0"},"checksummed_files":25689},"files":[{"path":"BASES.tsv","size":189,"sha256":"5a810af4e9abf4e10d821842707a424825d58eff1e69e2c84d4f7aa40b772f7a","public":"full","lines":1,"url":"/api/recipe/virtoperator/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":3939884,"sha256":"45fe76c6f9951c35ebb80228494ddda948504374eebf3d347cd423fc09f507b8","public":"account","lines":25689},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/virtoperator/v1.9.1-CE-debian12-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":3361,"sha256":"0b0971043e7ff8c6806b5bd78b1351c341232a7d00a8921519c4f4a29455c884","public":"account","lines":42},{"path":"Dockerfile.offline","size":3361,"sha256":"0b0971043e7ff8c6806b5bd78b1351c341232a7d00a8921519c4f4a29455c884","public":"account","lines":42},{"path":"Dockerfile.offline.pinned","size":3361,"sha256":"0b0971043e7ff8c6806b5bd78b1351c341232a7d00a8921519c4f4a29455c884","public":"preview","lines":42,"preview":{"text":"# =====================================================================================================================\n# KubeVirt v1.9.1 virt-operator: 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-operator:virt-operator-image` on vendored/virtoperator-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/virtoperator.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/virtoperator-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-operator.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-operator && rm -f /out/rootfs/var/cache/ldconfig/aux-cache","lines_shown":24,"lines_total":42}},{"path":"Dockerfile.vendor","size":2235,"sha256":"ab5f3b0c9e439953f70380fff0f8bda35a671d99efff3e0c486d2bd5bae81e2f","public":"account","lines":28},{"path":"MANIFEST.txt","size":2193062,"sha256":"1d00b88ac9b35881084ccd1a003a958ad56af0a439e20a02256bc900fa4d2e08","public":"account","lines":25691},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"db702391979e0aeef560b35228390eff6b06039d97d03e916f6b9883bdd32df7","public":"full","lines":1,"url":"/api/recipe/virtoperator/v1.9.1-CE-debian12-r1/files/SOURCE_DATE_EPOCH.txt","text":"1791523273\n"},{"path":"TARGET_DIGEST.txt","size":367,"sha256":"b62160eebf832fb190d9f5d85ac00eb820079bdbf48669a133cf9269bab0d8bd","public":"full","lines":9,"url":"/api/recipe/virtoperator/v1.9.1-CE-debian12-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:78de21c348d6b5c03db14e9b14e4fe02f947114771f8897f53c2f52bf435a0a6\nconfig_digest=sha256:4aeb293bd959d150231785c9c029cfcc262adb1ad631f55b1c37e38d40415fd0\ntag=readystack/virtoperator:v1.9.1-CE-debian12-r1\nprobe_port=80\nprobe_path=/\nprobe_timeout=180\nverify_boot=oneshot\nverify_oneshot_arg=--help\nverify_oneshot_expect=--dump-install-strategy\n"},{"path":"VERIFY_OFFLINE.sh","size":10153,"sha256":"3e8184ea230cfd8f41f977e26be6bf7bd03112c396c517837ce0c7de4f7399dd","public":"account","lines":165},{"path":"docs/PROVENANCE.md","size":1797,"sha256":"077d09ccb2a9132314ffb7c45be16af7eb18e10bfb9a756bc3aa0457831c7272","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5360,"sha256":"536075cfab941fe1565b169e1287c84289685d02afd978c77df3b1e437cda59b","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1966,"sha256":"bd3c93571a8fbba46d99fcec981c3307bed13485e7acbc9dd2f84fd7e884d1b5","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":173,"sha256":"a455fc90be988bd06ef818b726bd3a37ea571e72ed4d309910a83835baae313f","public":"full","lines":2,"url":"/api/recipe/virtoperator/v1.9.1-CE-debian12-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for virtoperator (resolve at build_kit)\nquay.io/kubevirt/builder:2606231619-4fe2cd536f@sha256:a48a7dd5a1b80602269b8c714fdaa54f729a9a4a4d096f7ee0d15c94cef343e8\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":2469,"sha256":"ccc2417ef7c923dd67c277cc8af5c4d6d52891f3f244d4c741f7731ee97386ac","public":"account","lines":42},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":654,"sha256":"408868b69813f1f305e8a9b1faeba6eedbd12bf1e5cc000251192b5a5daa9e72","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":276320,"sha256":"31fc6c388e5ce722ce9dd126f14f4ae928434a2edbf24a1af1e52e4547cf27e1","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":313,"sha256":"88b570c0f69e6eef22bcb781396a67350f37bc4ff26612934749a893f5596c71","public":"full","lines":9,"url":"/api/recipe/virtoperator/v1.9.1-CE-debian12-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"virtoperator\",\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":4784,"sha256":"b0f8b21bd4cab8af4a2dc1bcae59fd4c4a74c36fb7ac9be38aea64428f1f230a","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-operator.txt","size":10726,"sha256":"f99a591dd09ec1a97ec5c8201c862d79cf2f66590163f00204ab4fbceefcc487","public":"account","lines":194},{"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":1265,"sha256":"163a31701b77948a1c784f31cab97ff4f6fd961636f6b90beed6a5ea9e5268fb","public":"account","lines":36},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/virtoperator/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":115895962},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":12861,"bytes":346991873}},"links":{"page":"https://readystack.dev/products/virtoperator/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fvirtoperator%2Frecipe","kit":"https://readystack.dev/buy.html?product=virtoperator"}}