Skip to content

Commit ea95477

Browse files
committed
refactor image builds (#2818)
1 parent ddfedfa commit ea95477

10 files changed

+46
-215
lines changed

.github/workflows/build-arm64-image.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,12 @@ jobs:
6060
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
6161
docker tag kubeovn/kube-ovn:$TAG kubeovn/kube-ovn:$TAG-arm
6262
docker tag kubeovn/kube-ovn:$TAG kubeovn/kube-ovn-dev:$COMMIT-arm
63+
docker tag kubeovn/kube-ovn:$TAG-debug kubeovn/kube-ovn:$TAG-debug-arm
6364
docker tag kubeovn/vpc-nat-gateway:$TAG kubeovn/vpc-nat-gateway:$TAG-arm
6465
docker tag kubeovn/vpc-nat-gateway:$TAG kubeovn/vpc-nat-gateway-dev:$COMMIT-arm
6566
docker images
6667
docker push kubeovn/kube-ovn:$TAG-arm
68+
docker push kubeovn/kube-ovn:$TAG-debug-arm
6769
docker push kubeovn/kube-ovn-dev:$COMMIT-arm
6870
docker push kubeovn/vpc-nat-gateway:$TAG-arm
6971
docker push kubeovn/vpc-nat-gateway-dev:$COMMIT-arm

.github/workflows/build-kube-ovn-base.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,12 @@ jobs:
7777
docker images
7878
docker push kubeovn/kube-ovn-base:$TAG-amd64
7979
docker push kubeovn/kube-ovn-base:$TAG-amd64-no-avx512
80+
docker push kubeovn/kube-ovn-base:$TAG-debug-amd64
8081
docker push kubeovn/kube-ovn-base:$TAG-arm64
82+
docker push kubeovn/kube-ovn-base:$TAG-debug-arm64
8183
docker manifest create kubeovn/kube-ovn-base:$TAG kubeovn/kube-ovn-base:$TAG-amd64 kubeovn/kube-ovn-base:$TAG-arm64
8284
docker manifest push kubeovn/kube-ovn-base:$TAG
8385
docker manifest create kubeovn/kube-ovn-base:$TAG-no-avx512 kubeovn/kube-ovn-base:$TAG-amd64-no-avx512
8486
docker manifest push kubeovn/kube-ovn-base:$TAG-no-avx512
87+
docker manifest create kubeovn/kube-ovn-base:$TAG-debug kubeovn/kube-ovn-base:$TAG-debug-amd64 kubeovn/kube-ovn-base:$TAG-debug-arm64
88+
docker manifest push kubeovn/kube-ovn-base:$TAG-debug

.github/workflows/build-kube-ovn-debug.yaml

-27
This file was deleted.

.github/workflows/build-x86-image.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ jobs:
126126
TAG=$(cat VERSION)
127127
docker tag kubeovn/kube-ovn-base:$TAG-amd64 kubeovn/kube-ovn-base:$TAG
128128
docker tag kubeovn/kube-ovn-base:$TAG-amd64-no-avx512 kubeovn/kube-ovn-base:$TAG-no-avx512
129+
docker tag kubeovn/kube-ovn-base:$TAG-debug-amd64 kubeovn/kube-ovn-base:$TAG-debug
129130
make build-kube-ovn
130131
else
131132
make image-kube-ovn
@@ -1328,6 +1329,7 @@ jobs:
13281329
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
13291330
docker tag kubeovn/kube-ovn:$TAG kubeovn/kube-ovn-dev:$COMMIT-x86
13301331
docker tag kubeovn/kube-ovn:$TAG kubeovn/kube-ovn:$TAG-x86
1332+
docker tag kubeovn/kube-ovn:$TAG-debug kubeovn/kube-ovn:$TAG-debug-x86
13311333
docker tag kubeovn/vpc-nat-gateway:$TAG kubeovn/vpc-nat-gateway-dev:$COMMIT-x86
13321334
docker tag kubeovn/vpc-nat-gateway:$TAG kubeovn/vpc-nat-gateway:$TAG-x86
13331335
docker tag kubeovn/centos7-compile:$TAG kubeovn/centos7-compile-dev:$TAG-x86
@@ -1338,6 +1340,7 @@ jobs:
13381340
docker push kubeovn/kube-ovn:$TAG-x86
13391341
docker push kubeovn/kube-ovn:$TAG-no-avx512
13401342
docker push kubeovn/kube-ovn-dev:$COMMIT-x86
1343+
docker push kubeovn/kube-ovn:$TAG-debug-x86
13411344
docker push kubeovn/vpc-nat-gateway:$TAG-x86
13421345
docker push kubeovn/vpc-nat-gateway-dev:$COMMIT-x86
13431346
docker push kubeovn/centos7-compile:$TAG-x86

.github/workflows/publish.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,12 @@ jobs:
2525
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
2626
docker pull kubeovn/kube-ovn:$TAG-x86
2727
docker pull kubeovn/kube-ovn:$TAG-arm
28+
docker pull kubeovn/kube-ovn:$TAG-debug-x86
29+
docker pull kubeovn/kube-ovn:$TAG-debug-arm
2830
docker manifest create kubeovn/kube-ovn:$TAG kubeovn/kube-ovn:$TAG-x86 kubeovn/kube-ovn:$TAG-arm
31+
docker manifest create kubeovn/kube-ovn:$TAG-debug kubeovn/kube-ovn:$TAG-debug-x86 kubeovn/kube-ovn:$TAG-debug-arm
2932
docker manifest push kubeovn/kube-ovn:$TAG
33+
docker manifest push kubeovn/kube-ovn:$TAG-debug
3034
3135
docker pull kubeovn/vpc-nat-gateway:$TAG-x86
3236
docker pull kubeovn/vpc-nat-gateway:$TAG-arm

Makefile

+22-13
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ include Makefile.e2e
55
REGISTRY = kubeovn
66
DEV_TAG = dev
77
RELEASE_TAG = $(shell cat VERSION)
8+
DEBUG_TAG = $(shell cat VERSION)-debug
89
VERSION = $(shell echo $${VERSION:-$(RELEASE_TAG)})
910
COMMIT = git-$(shell git rev-parse --short HEAD)
1011
DATE = $(shell date +"%Y-%m-%d_%H:%M:%S")
@@ -48,13 +49,18 @@ build-go-arm:
4849

4950
.PHONY: build-kube-ovn
5051
build-kube-ovn: build-go
51-
docker build -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) -f dist/images/Dockerfile dist/images/
52-
docker build -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-no-avx512 -f dist/images/Dockerfile.no-avx512 dist/images/
52+
docker build -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) --build-arg VERSION=$(RELEASE_TAG) -f dist/images/Dockerfile dist/images/
53+
docker build -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-no-avx512 --build-arg BASE_TAG=$(RELEASE_TAG)-no-avx512 -f dist/images/Dockerfile dist/images/
54+
docker build -t $(REGISTRY)/kube-ovn:$(DEBUG_TAG) --build-arg BASE_TAG=$(DEBUG_TAG) -f dist/images/Dockerfile dist/images/
5355
docker build -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-dpdk -f dist/images/Dockerfile.dpdk dist/images/
5456

5557
.PHONY: build-dev
5658
build-dev: build-go
57-
docker build -t $(REGISTRY)/kube-ovn:$(DEV_TAG) -f dist/images/Dockerfile dist/images/
59+
docker build -t $(REGISTRY)/kube-ovn:$(DEV_TAG) --build-arg VERSION=$(RELEASE_TAG) -f dist/images/Dockerfile dist/images/
60+
61+
.PHONY: build-debug
62+
build-debug: build-go
63+
docker build -t $(REGISTRY)/kube-ovn:$(DEBUG_TAG) --build-arg BASE_TAG=$(DEBUG_TAG) -f dist/images/Dockerfile dist/images/
5864

5965
.PHONY: build-dpdk
6066
build-dpdk:
@@ -63,6 +69,7 @@ build-dpdk:
6369
.PHONY: base-amd64
6470
base-amd64:
6571
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 -t $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64 -o type=docker -f dist/images/Dockerfile.base dist/images/
72+
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 --build-arg DEBUG=true -t $(REGISTRY)/kube-ovn-base:$(DEBUG_TAG)-amd64 -o type=docker -f dist/images/Dockerfile.base dist/images/
6673
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 --build-arg NO_AVX512=true -t $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64-no-avx512 -o type=docker -f dist/images/Dockerfile.base dist/images/
6774

6875
.PHONY: base-amd64-dpdk
@@ -72,17 +79,14 @@ base-amd64-dpdk:
7279
.PHONY: base-arm64
7380
base-arm64:
7481
docker buildx build --platform linux/arm64 --build-arg ARCH=arm64 -t $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-arm64 -o type=docker -f dist/images/Dockerfile.base dist/images/
82+
docker buildx build --platform linux/arm64 --build-arg ARCH=arm64 --build-arg DEBUG=true -t $(REGISTRY)/kube-ovn-base:$(DEBUG_TAG)-arm64 -o type=docker -f dist/images/Dockerfile.base dist/images/
7583

7684
.PHONY: image-kube-ovn
7785
image-kube-ovn: build-go
78-
docker buildx build --platform linux/amd64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
79-
docker buildx build --platform linux/amd64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-no-avx512 -o type=docker -f dist/images/Dockerfile.no-avx512 dist/images/
86+
docker buildx build --platform linux/amd64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) --build-arg VERSION=$(RELEASE_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
87+
docker buildx build --platform linux/amd64 -t $(REGISTRY)/kube-ovn:$(DEBUG_TAG) --build-arg BASE_TAG=$(DEBUG_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
8088
docker buildx build --platform linux/amd64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-dpdk -o type=docker -f dist/images/Dockerfile.dpdk dist/images/
8189

82-
.PHONY: image-debug
83-
image-debug: build-go
84-
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 -t $(REGISTRY)/kube-ovn:debug -o type=docker -f dist/images/Dockerfile.debug dist/images/
85-
8690
.PHONY: image-vpc-nat-gateway
8791
image-vpc-nat-gateway:
8892
docker buildx build --platform linux/amd64 -t $(REGISTRY)/vpc-nat-gateway:$(RELEASE_TAG) -o type=docker -f dist/images/vpcnatgateway/Dockerfile dist/images/vpcnatgateway
@@ -101,7 +105,8 @@ release: lint image-kube-ovn image-vpc-nat-gateway image-centos-compile
101105

102106
.PHONY: release-arm
103107
release-arm: build-go-arm
104-
docker buildx build --platform linux/arm64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
108+
docker buildx build --platform linux/arm64 -t $(REGISTRY)/kube-ovn:$(RELEASE_TAG) --build-arg VERSION=$(RELEASE_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
109+
docker buildx build --platform linux/arm64 -t $(REGISTRY)/kube-ovn:$(DEBUG_TAG) --build-arg BASE_TAG=$(DEBUG_TAG) -o type=docker -f dist/images/Dockerfile dist/images/
105110
docker buildx build --platform linux/arm64 -t $(REGISTRY)/vpc-nat-gateway:$(RELEASE_TAG) -o type=docker -f dist/images/vpcnatgateway/Dockerfile dist/images/vpcnatgateway
106111

107112
.PHONY: push-dev
@@ -114,7 +119,7 @@ push-release: release
114119

115120
.PHONY: tar-kube-ovn
116121
tar-kube-ovn:
117-
docker save $(REGISTRY)/kube-ovn:$(RELEASE_TAG) $(REGISTRY)/kube-ovn:$(RELEASE_TAG)-no-avx512 -o kube-ovn.tar
122+
docker save $(REGISTRY)/kube-ovn:$(RELEASE_TAG) $(REGISTRY)/kube-ovn:$(DEBUG_TAG) -o kube-ovn.tar
118123

119124
.PHONY: tar-vpc-nat-gateway
120125
tar-vpc-nat-gateway:
@@ -130,15 +135,15 @@ tar: tar-kube-ovn tar-vpc-nat-gateway tar-centos-compile
130135

131136
.PHONY: base-tar-amd64
132137
base-tar-amd64:
133-
docker save $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64 $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64-no-avx512 -o image-amd64.tar
138+
docker save $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64 $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64-no-avx512 $(REGISTRY)/kube-ovn-base:$(DEBUG_TAG)-amd64 -o image-amd64.tar
134139

135140
.PHONY: base-tar-amd64-dpdk
136141
base-tar-amd64-dpdk:
137142
docker save $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-amd64-dpdk -o image-amd64-dpdk.tar
138143

139144
.PHONY: base-tar-arm64
140145
base-tar-arm64:
141-
docker save $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-arm64 -o image-arm64.tar
146+
docker save $(REGISTRY)/kube-ovn-base:$(RELEASE_TAG)-arm64 $(REGISTRY)/kube-ovn-base:$(DEBUG_TAG)-arm64 -o image-arm64.tar
142147

143148
define docker_ensure_image_exists
144149
if ! docker images --format "{{.Repository}}:{{.Tag}}" | grep "^$(1)$$" >/dev/null; then \
@@ -334,6 +339,10 @@ kind-install: kind-load-image
334339
kind-install-dev:
335340
@VERSION=$(DEV_TAG) $(MAKE) kind-install
336341

342+
.PHONY: kind-install-debug
343+
kind-install-debug:
344+
@VERSION=$(DEBUG_TAG) $(MAKE) kind-install
345+
337346
.PHONY: kind-install-ipv4
338347
kind-install-ipv4: kind-install-overlay-ipv4
339348

dist/images/Dockerfile

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# syntax = docker/dockerfile:experimental
2-
FROM kubeovn/kube-ovn-base:v1.11.4
2+
ARG VERSION
3+
ARG BASE_TAG=$VERSION
4+
FROM kubeovn/kube-ovn-base:$BASE_TAG
35

46
COPY *.sh /kube-ovn/
57
COPY kubectl-ko /kube-ovn/kubectl-ko

dist/images/Dockerfile.base

+8-5
Original file line numberDiff line numberDiff line change
@@ -68,20 +68,22 @@ RUN cd /usr/src/ && git clone -b branch-22.03 --depth=1 https://github.com/ovn-o
6868
OVSDIR=/usr/src/ovs EXTRA_CONFIGURE_OPTS=$CONFIGURE_OPTS DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary
6969

7070
RUN mkdir /packages/ && \
71-
cp /usr/src/libopenvswitch*.deb /packages && \
72-
cp /usr/src/openvswitch-*.deb /packages && \
73-
cp /usr/src/python3-openvswitch*.deb /packages && \
74-
cp /usr/src/ovn-*.deb /packages && \
75-
cd /packages && rm -f *dbg* *datapath* *docker* *vtep* *test* *dev*
71+
cp /usr/src/libopenvswitch*deb /packages && \
72+
cp /usr/src/openvswitch-*deb /packages && \
73+
cp /usr/src/python3-openvswitch*deb /packages && \
74+
cp /usr/src/ovn-*deb /packages && \
75+
cd /packages && rm -f *datapath* *docker* *vtep* *test* *dev*
7676

7777
FROM ubuntu:22.04
7878

79+
ARG DEBUG=false
7980
ARG DEBIAN_FRONTEND=noninteractive
8081
RUN apt update && apt upgrade -y && apt install ca-certificates python3 hostname libunwind8 netbase \
8182
ethtool iproute2 ncat libunbound-dev procps libatomic1 kmod iptables \
8283
tcpdump ipset curl uuid-runtime openssl inetutils-ping arping ndisc6 \
8384
logrotate dnsutils net-tools strongswan strongswan-pki libcharon-extra-plugins \
8485
libcharon-extauth-plugins libstrongswan-extra-plugins libstrongswan-standard-plugins -y --no-install-recommends && \
86+
if [ "${DEBUG}" = "true" ]; then apt install -y --no-install-recommends valgrind; fi && \
8587
rm -rf /var/lib/apt/lists/* && \
8688
rm -rf /etc/localtime
8789

@@ -104,6 +106,7 @@ RUN --mount=type=bind,target=/packages,from=ovs-builder,source=/packages \
104106
dpkg -i /packages/python3-openvswitch*.deb && \
105107
dpkg -i /packages/openvswitch-*.deb && \
106108
dpkg -i --ignore-depends=openvswitch-switch,openvswitch-common /packages/ovn-*.deb && \
109+
if [ "${DEBUG}" = "true" ]; then dpkg -i --ignore-depends=openvswitch-switch,openvswitch-common /packages/*.ddeb; fi && \
107110
mv /usr/lib/python3.7/dist-packages/ovs /usr/lib/python3/dist-packages/ && \
108111
rm -rf /var/lib/openvswitch/pki/
109112

0 commit comments

Comments
 (0)