Skip to content

Commit 40c2fc6

Browse files
initv2 pm
Signed-off-by: Anton Fomichev <anton.fomichev@flant.com>
1 parent 7612e87 commit 40c2fc6

4 files changed

Lines changed: 20 additions & 259 deletions

File tree

.werf/defines/parse-base-images-map.tmpl

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,20 @@
2121
# <prefix>/<name>: "sha256:abcde12345
2222
*/}}
2323
{{- $usedImagesDict := (include "project_images" . | fromJson) }}
24+
{{/*
25+
# defaultRegistry: main repo for stable base_images
26+
# altRegistry: sandbox for experimental images (e.g. builder/distroless image)
27+
*/}}
28+
{{- $defaultRegistry := $deckhouseImages.REGISTRY_PATH }}
29+
{{- $altRegistry := $deckhouseImages.ALT_REGISTRY_PATH }}
2430
{{- range $k, $v := $deckhouseImages }}
25-
{{- $baseImagePath := (printf "%s@%s" $deckhouseImages.REGISTRY_PATH (trimSuffix "/" $v)) }}
26-
{{- if ne $k "REGISTRY_PATH" }}
27-
{{- $_ := set $deckhouseImages $k $baseImagePath }}
31+
{{- if and (ne $k "REGISTRY_PATH") (ne $k "ALT_REGISTRY_PATH") }}
32+
{{- $registry := $defaultRegistry }}
33+
{{- if and $altRegistry (eq "builder/distroless" $k) }}
34+
{{- $registry = $altRegistry }}
35+
{{- end }}
36+
{{- $baseImagePath := (printf "%s@%s" $registry (trimSuffix "/" $v)) }}
37+
{{- $_ := set $deckhouseImages $k $baseImagePath }}
2838
{{- end }}
2939
{{- end }}
3040
{{- $_ := unset $deckhouseImages "REGISTRY_PATH" }}

build/base-images/deckhouse_images.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,6 @@ tools/xfsprogs-v6.16.0: "sha256:ec14d7e45fca638728c198b7eb8d675934e777dd4cfaca6f
304304
tools/yq: "sha256:4f294d46559f45bbd7d20f2306e2eaa2b6ec1cb6e826f906377c10bb9eea04d5" # from: builder/scratch
305305
tools/yq-v4.45.1: "sha256:893d67cc466e2be16006f9053d43701cb8bd376cd6864547ca43bafa08e01127" # from: builder/scratch
306306
tools/yq-v4.47.1: "sha256:4f294d46559f45bbd7d20f2306e2eaa2b6ec1cb6e826f906377c10bb9eea04d5" # from: builder/scratch
307+
308+
ALT_REGISTRY_PATH: registry.deckhouse.io/container-factory
309+
builder/distroless: "sha256:5f2c2d54bd6d1ef5e207fb4e70731895d3876ebf12ffc434d25f3b3949c81694" # from: builder/scratch

images/packages/libvirt/werf.inc.yaml

Lines changed: 3 additions & 255 deletions
Original file line numberDiff line numberDiff line change
@@ -7,263 +7,11 @@ import:
77
add: /out
88
to: /{{ $.ImageName }}
99
before: setup
10-
1110
---
12-
{{- $gitRepoName := $.ImageName }}
13-
{{- $version := get $.Firmware $gitRepoName }}
14-
{{- $gitRepoUrl := "libvirt/libvirt.git" }}
15-
16-
image: {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-src-artifact
17-
final: false
18-
fromImage: builder/src
19-
git:
20-
- add: {{ .ModuleDir }}/images/packages/{{ .ImageName }}
21-
to: /
22-
includePaths:
23-
- patches
24-
excludePaths:
25-
- patches/README.md
26-
stageDependencies:
27-
install:
28-
- '**/*'
29-
secrets:
30-
- id: SOURCE_REPO
31-
value: {{ $.SOURCE_REPO_GIT }}
32-
shell:
33-
install:
34-
- |
35-
git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch {{ $version }} /src/{{ $gitRepoName }}-{{ $version }}
36-
37-
cd /src/{{ $gitRepoName }}-{{ $version }}
38-
39-
if [[ "$(cat /run/secrets/SOURCE_REPO)" =~ "github.com" ]] ; then
40-
echo "Checkout submodules"
41-
git submodule update --init --recursive --depth=1
42-
else
43-
echo "Checkout submodules with URL rewrite"
44-
git \
45-
-c url."$(cat /run/secrets/SOURCE_REPO)/".insteadOf=https://github.com/ \
46-
-c url."$(cat /run/secrets/SOURCE_REPO)/".insteadOf=https://gitlab.com/ \
47-
submodule update --init --recursive --depth=1
48-
fi
49-
50-
for p in /patches/*.patch ; do
51-
echo -n "Apply ${p} ... "
52-
git apply --ignore-space-change --ignore-whitespace ${p} && echo OK || (echo FAIL ; exit 1)
53-
done
54-
55-
---
56-
{{- $name := print $.ImageName "-dependencies" -}}
57-
{{- define "$name" -}}
58-
altPackages:
59-
- binutils
60-
- gcc-c++
61-
- git gettext
62-
- bash-completion
63-
- clang ccache
64-
- make cmake
65-
- meson ninja-build
66-
- iproute iptables iptables-nft iptables-ipv6
67-
- openvswitch ebtables
68-
- pkgconfig
69-
- polkit kmod
70-
- parted
71-
- qemu-img open-iscsi
72-
- xml-utils xsltproc
73-
- polkit
74-
- python3 python3-devel
75-
- python3-module-pytest python3-module-docutils
76-
- python3-tools python3-module-pip
77-
- python3-module-black
78-
- mdevctl tshark
79-
- dmsetup pm-utils
80-
- tree
81-
altLibraries:
82-
- libpciaccess-devel
83-
- libyajl-devel sanlock-devel
84-
- libpcap-devel
85-
- libparted-devel
86-
- libdevmapper-devel
87-
- ceph-devel
88-
- libiscsi-devel libglusterfs-devel
89-
- systemtap-sdt-devel
90-
- wireshark-devel
91-
- libclocale
92-
- libyajl-devel
93-
packages:
94-
- dmidecode lvm2 libattr libbsd libmd util-linux
95-
- libgcrypt libfuse3 libaudit libnbd libcap-ng
96-
- openssl libcurl e2fsprogs libxcrypt numactl
97-
- zlib p11-kit
98-
- libssh libssh2 libjson-c5 keyutils
99-
- krb5 xz
100-
- readline
101-
- selinux
102-
- cyrus-sasl2
103-
- libtasn1 libtirpc
104-
- glib2 acl libunistring libxml2
105-
- gnutls
106-
- systemd libnl3 libslirp
107-
- glibc
108-
{{- end -}}
109-
110-
{{ $builderDependencies := include "$name" . | fromYaml }}
11111
image: {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-builder
11212
final: false
113-
fromImage: {{ eq $.SVACE_ENABLED "false" | ternary "builder/alt" "builder/golang-alt-svace-1.24" }}
114-
import:
115-
- image: {{ .ModuleNamePrefix }}{{ .PackagePath }}/{{ .ImageName }}-src-artifact
116-
add: /src/{{ $gitRepoName }}-{{ $version }}
117-
to: /{{ $gitRepoName }}-{{ $version }}
118-
before: install
119-
{{- include "importPackageImages" (list . $builderDependencies.packages "install") -}}
13+
fromImage: builder/distroless
12014
shell:
121-
beforeInstall:
122-
{{- include "alt packages proxy" . | nindent 2 }}
123-
- |
124-
apt-get install -y \
125-
{{ $builderDependencies.altPackages | join " " }} \
126-
{{ $builderDependencies.altLibraries | join " " }}
127-
128-
{{- include "alt packages clean" . | nindent 2 }}
129-
- |
130-
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
131-
rpm -qa | sort > /packages.txt
132-
mkdir -p /usr/libexec/ccache-wrappers
133-
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc
134-
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang
135-
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
136-
13715
install:
138-
- |
139-
# Install packages
140-
PKGS="{{ $builderDependencies.packages | join " " }}"
141-
for pkg in $PKGS; do
142-
cp -a /$pkg/. /
143-
rm -rf /$pkg
144-
done
145-
146-
export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
147-
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
148-
export CCACHE_BASEDIR="$(pwd)"
149-
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
150-
export MAKE="/usr/bin/make"
151-
export NINJA="/usr/bin/ninja"
152-
export PYTHON="/usr/bin/python3"
153-
154-
cd /{{ $gitRepoName }}-{{ $version }}
155-
156-
CFLAGS="-Wframe-larger-than=262144" meson setup build \
157-
-Dinit_script=systemd \
158-
-Dsystem=true \
159-
-Dremote_default_mode=direct \
160-
-Dpciaccess=enabled \
161-
-Dsasl=enabled \
162-
-Dpolkit=enabled \
163-
-Dlibssh=enabled \
164-
-Dlibssh2=enabled \
165-
-Dnumactl=enabled \
166-
-Dcapng=enabled \
167-
-Dudev=enabled \
168-
-Ddriver_network=enabled \
169-
-Ddriver_interface=enabled \
170-
-Ddriver_libvirtd=enabled \
171-
-Ddriver_qemu=enabled \
172-
-Ddriver_remote=enabled \
173-
-Dselinux=enabled \
174-
-Dselinux_mount=enabled \
175-
-Ddriver_esx=disabled -Dcurl=disabled \
176-
-Dfirewalld=disabled \
177-
-Dfirewalld_zone=disabled \
178-
-Ddocs=disabled \
179-
-Ddriver_ch=disabled \
180-
-Ddriver_lxc=disabled -Dlogin_shell=disabled \
181-
-Ddriver_openvz=disabled \
182-
-Ddriver_test=disabled \
183-
-Ddriver_vbox=disabled \
184-
-Ddriver_vmware=disabled \
185-
-Ddriver_hyperv=disabled -Dopenwsman=disabled \
186-
-Ddriver_vz=disabled \
187-
-Ddriver_bhyve=disabled \
188-
-Dvbox_xpcomc_dir=disabled \
189-
-Dwireshark_dissector=disabled \
190-
-Dwireshark_plugindir=disabled \
191-
-Dstorage_gluster=disabled -Dglusterfs=disabled \
192-
-Dstorage_fs=disabled \
193-
-Dstorage_lvm=disabled \
194-
-Dstorage_zfs=disabled \
195-
-Dstorage_vstorage=disabled \
196-
-Dstorage_rbd=disabled \
197-
-Dstorage_mpath=disabled \
198-
-Dstorage_iscsi=disabled \
199-
-Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled \
200-
-Dlibiscsi=disabled
201-
202-
203-
{{- $_ := set $ "ProjectName" (list $.ImageName "libvirt" | join "/") }}
204-
{{- include "image-build.build" (set $ "BuildCommand" `ninja -C build -j$(nproc)`) | nindent 6 }}
205-
206-
setup:
207-
- |
208-
OUTDIR=/out
209-
cd /{{ $gitRepoName }}-{{ $version }}
210-
DESTDIR=$OUTDIR ninja -C build install
211-
212-
rm -rf $OUTDIR/var
213-
rm -rf $OUTDIR/usr/share/systemtap/tapset/libvirt_probes.stp
214-
rm -rf $OUTDIR/usr/share/systemtap/tapset/libvirt_qemu_probes.stp
215-
rm -rf $OUTDIR/usr/lib64/libvirt/lock-driver/sanlock.so
216-
find $OUTDIR/usr/lib64/libvirt/storage-backend/ -type f -not -name 'libvirt_storage_backend_fs.so' -delete
217-
rm -rf $OUTDIR/usr/lib64/libvirt/storage-file/libvirt_storage_file_gluster.so
218-
rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_lxc.so
219-
rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_ch.so
220-
rm -rf $OUTDIR/usr/lib64/libvirt/connection-driver/libvirt_driver_vbox.so
221-
rm -rf $OUTDIR/usr/sbin/virtlxcd
222-
rm -rf $OUTDIR/usr/sbin/virtchd
223-
rm -rf $OUTDIR/usr/sbin/virtvboxd
224-
rm -rf $OUTDIR/usr/libexec/libvirt_sanlock_helper
225-
rm -rf $OUTDIR/usr/libexec/libvirt_parthelper
226-
rm -rf $OUTDIR/usr/libexec/libvirt_lxc
227-
rm -rf $OUTDIR/usr/share/augeas/lenses/tests/
228-
rm -rf $OUTDIR/usr/bin/virt-login-shell
229-
rm -rf $OUTDIR/usr/libexec/virt-login-shell-helper
230-
rm -rf $OUTDIR/usr/bin/virsh
231-
rm -rf $OUTDIR/usr/bin/virt-admin
232-
rm -rf $OUTDIR/usr/lib64/wireshark/plugins/4.4/epan/libvirt.so
233-
rm -rf $OUTDIR/usr/share/libvirt/cpu_map/arm_*
234-
rm -rf $OUTDIR/usr/share/libvirt/cpu_map/ppc64_*
235-
rm -rf $OUTDIR/usr/share/libvirt/schemas/
236-
rm -rf $OUTDIR/etc/logrotate.d/
237-
rm -rf $OUTDIR/usr/lib/firewalld/
238-
rm -rf $OUTDIR/etc/libvirt/nwfilter/
239-
rm -rf $OUTDIR/usr/lib/sysusers.d/libvirt-qemu.sysusers.conf
240-
rm -rf $OUTDIR/usr/lib/sysctl.d/postcopy-migration.sysctl
241-
rm -rf $OUTDIR/usr/share/libvirt/test-screenshot.png
242-
rm -rf $OUTDIR/etc/libvirt/libvirt-admin.conf
243-
rm -rf $OUTDIR/etc/libvirt/qemu-lockd.conf
244-
rm -rf $OUTDIR/etc/libvirt/qemu-sanlock.conf
245-
rm -rf $OUTDIR/etc/libvirt/virtlockd.conf
246-
rm -rf $OUTDIR/etc/libvirt/lxc.conf
247-
rm -rf $OUTDIR/etc/libvirt/qemu.conf
248-
rm -rf $OUTDIR/usr/share/augeas/
249-
rm -rf $OUTDIR/etc/libvirt/virtnetworkd.conf
250-
rm -rf $OUTDIR/etc/libvirt/virtsecretd.conf
251-
rm -rf $OUTDIR/etc/libvirt/virtstoraged.conf
252-
rm -rf $OUTDIR/etc/libvirt/virtlxcd.conf
253-
rm -rf $OUTDIR/etc/libvirt/virtchd.conf
254-
rm -rf $OUTDIR/etc/libvirt/virtqemud.conf
255-
rm -rf $OUTDIR/etc/libvirt/virtvboxd.conf
256-
rm -rf $OUTDIR/usr/sbin/virt-sanlock-cleanup
257-
rm -rf $OUTDIR/usr/lib/systemd/
258-
rm -rf $OUTDIR/usr/bin/virt-qemu-qmp-proxy
259-
rm -rf $OUTDIR/usr/share/bash-completion/
260-
rm -rf $OUTDIR/etc/ssh/
261-
rm -rf $OUTDIR/usr/share/doc
262-
rm -rf $OUTDIR/usr/local/share/locale/
263-
264-
find $OUTDIR -type f -executable | while read -r execfile; do
265-
if strip "$execfile"; then
266-
echo "Stripped: $execfile"
267-
fi
268-
done
269-
tree -hp $OUTDIR
16+
- pm --version
17+
- pm install -1 {{ .ImageName }} {{ .ImageName }}-devel -d /out

images/virt-artifact/werf.inc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ shell:
7373
PKGS="{{ $builderDependencies.packages | join " " }}"
7474
for pkg in $PKGS; do
7575
cp -a /$pkg/. /
76-
rm -rf /$pkg
76+
rm -rf /$pkg || true
7777
done
7878
- |
7979
export GOPROXY=$(cat /run/secrets/GOPROXY)

0 commit comments

Comments
 (0)