From b371dc8b1dab25a4cde39c11eca4a97fad9e976e Mon Sep 17 00:00:00 2001 From: Anton Fomichev Date: Tue, 20 Jan 2026 11:55:51 +0300 Subject: [PATCH] add baseImages helper to add external images from deckhouse_images.yml --- .werf/defines/images.tmpl | 24 ++++++++++++++++ .werf/images.yaml | 1 + build/base-images/deckhouse_images.yml | 2 ++ images/virt-launcher/werf.inc.yaml | 38 ++++++++++++++++++++++++-- 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/.werf/defines/images.tmpl b/.werf/defines/images.tmpl index 51152c5e52..00e1689889 100644 --- a/.werf/defines/images.tmpl +++ b/.werf/defines/images.tmpl @@ -47,3 +47,27 @@ Result: {{- end -}} {{- end }} {{ end }} + +{{ define "baseImages" }} +{{- if not (eq (kindOf .) "slice") }} +{{- fail "importPackageImages: invalid type of argument, slice is expected" }} +{{- end }} +{{- $context := index . 0 }} +{{- $imageNames := index . 1 }} +{{- $stage := "install" }} +{{- $toSuffix := "" }} +{{- if gt (len .) 2 }} +{{- $stage = index . 2 }} +{{- end }} +{{- if gt (len .) 3 }} +{{- $toSuffix = index . 3 }} +{{- end }} +{{- range $imageName := $imageNames }} +{{- if ne $imageName "" }} +- image: dev-{{ index $context.Images $imageName }} + add: /out + to: /{{ last (splitList "/" $imageName) }}{{ $toSuffix }} + before: {{ $stage }} +{{- end -}} +{{- end }} +{{ end }} diff --git a/.werf/images.yaml b/.werf/images.yaml index d0850ad3c9..56508cc238 100644 --- a/.werf/images.yaml +++ b/.werf/images.yaml @@ -42,6 +42,7 @@ dockerfile: Dockerfile {{- $_ := set $ctx "SVACE_ANALYZE_SSH_USER" $Root.SVACE_ANALYZE_SSH_USER }} {{- $_ := set $ctx "SVACE_ANALYZE_HOST" $Root.SVACE_ANALYZE_HOST }} {{- $_ := set $ctx "SVACE_IMAGE_SUFFIX" $Root.SVACE_IMAGE_SUFFIX }} +{{- $_ := set $ctx "Images" $Root.Images }} {{- include "module_image_template" $ctx }} diff --git a/build/base-images/deckhouse_images.yml b/build/base-images/deckhouse_images.yml index e5eb7774e8..7eb2b7b895 100644 --- a/build/base-images/deckhouse_images.yml +++ b/build/base-images/deckhouse_images.yml @@ -304,3 +304,5 @@ tools/xfsprogs-v6.16.0: "sha256:bb8b1e677b0be4a2bdf33c61d1e09803126ce32486ebda27 tools/yq: "sha256:035f73ce4ee26186851b039ff6c0afec622354bb6c5f0d6e8859c40a16286c0d" # from: builder/scratch tools/yq-v4.45.1: "sha256:31262bbc95fc1f9f2c831e1b148402b829f2a7cf8a62611e98543677fe28ff70" # from: builder/scratch tools/yq-v4.47.1: "sha256:035f73ce4ee26186851b039ff6c0afec622354bb6c5f0d6e8859c40a16286c0d" # from: builder/scratch +libs/libvirt: "sha256:ae60c3483b74bd5d61ea5c16809ee78b4925ea31c9b2a252b15b50533deebff9" +libs/libvirt-10.9.0: "sha256:ae60c3483b74bd5d61ea5c16809ee78b4925ea31c9b2a252b15b50533deebff9" diff --git a/images/virt-launcher/werf.inc.yaml b/images/virt-launcher/werf.inc.yaml index c91eed764b..18f02096e5 100644 --- a/images/virt-launcher/werf.inc.yaml +++ b/images/virt-launcher/werf.inc.yaml @@ -124,10 +124,11 @@ packages: - glibc nghttp3 ngtcp2 nghttp2 libpsl libidn2 libgmp - openldap openssl - e2fsprogs libxcrypt lvm2 libjson-glib -- libvirt - libffi - libbrotli libntlm gcc libcap libgpg-error lz4 - libuserspace-rcu lzo dtc +baseImages: +- libs/libvirt {{- end -}} {{ $builderDependencies := include "$name" . | fromYaml }} @@ -158,10 +159,19 @@ git: - nsswitch.conf import: # Libvirt and QEMU libraries and binaries -- image: {{ .ModuleNamePrefix }}packages/libvirt - add: /libvirt +{{- if $builderDependencies.baseImages }} + {{- range $imageName := $builderDependencies.baseImages }} +{{- $fullName := index $.Images $imageName }} +{{- $simpleName := last (splitList "/" $imageName) }} +{{- if eq $imageName "libs/libvirt" }} +# Libvirt from base_images +- image: dev-{{ $fullName }} + add: /out to: /libvirt-bins before: install +{{- end }} +{{- end }} +{{- end }} - image: {{ .ModuleNamePrefix }}qemu add: /BINS to: /qemu-bins @@ -209,6 +219,7 @@ import: - vlctl {{- include "importPackageImages" (list . $builderDependencies.packages "install") -}} +{{- include "baseImages" (list . $builderDependencies.baseImages "install") -}} # Statically built. - image: {{ .ModuleNamePrefix }}packages/openssl @@ -264,6 +275,17 @@ shell: rm -rf /$pkg done + {{- if $builderDependencies.baseImages }} + echo "Copy base_images" + {{- range $imageName := $builderDependencies.baseImages }} + {{- $simpleName := last (splitList "/" $imageName) }} + if [ -d "/{{ $simpleName }}" ]; then + cp -a "/{{ $simpleName }}" / + rm -rf "/{{ $simpleName }}" + fi + {{- end }} + {{- end }} + echo "Create folder hierarchy in VBINS" mkdir -p /VBINS/{etc,root} mkdir -p /VBINS/var/{log/libvirt/qemu,log/swtpm/libvirt/qemu,lib/libvirt/qemu,run/libvirt/qemu,lib/swtpm-localca,lib/libvirt/swtpm} @@ -422,6 +444,16 @@ shell: cp -a /$pkg/. / rm -rf /$pkg done + {{- if $builderDependencies.baseImages }} + echo "Copy base_images" + {{- range $imageName := $builderDependencies.baseImages }} + {{- $simpleName := last (splitList "/" $imageName) }} + if [ -d "/{{ $simpleName }}" ]; then + cp -a "/{{ $simpleName }}" / + rm -rf "/{{ $simpleName }}" + fi + {{- end }} + {{- end }} - mkdir -p /binaries - export GOPROXY=$(cat /run/secrets/GOPROXY) - export CGO_ENABLED=1