X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=SPECS%2Fcaas-danm.spec;h=4a0b62b09768512d0c19e5531c87eceb5b8358f7;hb=152845cf845aa447baeb5a241f82a6fd6dc69a8f;hp=42ab482103aa725521d9025802c83963a509ec17;hpb=8e53059aed6a7fdde34149893f05552aca3ed89a;p=ta%2Fcaas-danm.git diff --git a/SPECS/caas-danm.spec b/SPECS/caas-danm.spec index 42ab482..4a0b62b 100644 --- a/SPECS/caas-danm.spec +++ b/SPECS/caas-danm.spec @@ -14,16 +14,19 @@ %define COMPONENT danm %define RPM_NAME caas-%{COMPONENT} -%define RPM_MAJOR_VERSION 3.2.0 -%define RPM_MINOR_VERSION 1 -%define CNI_VERSION 0.7.0 -%define DANM_VERSION b48eb154a7f81fcafb0ff9e5b7d3ca6b54e6565a -%define go_version 1.12.1 -%define SRIOV_VERSION 6b53446e5781570c44e399cccb1fcdfa417f43a1 +%define RPM_MAJOR_VERSION 4.0.0 +%define RPM_MINOR_VERSION 6 +%define DANM_VERSION 687031341573550f387e109b273d8dd0cebf93bf +%define CNI_VERSION 0.8.1 +%define go_version 1.12.9 +%define SRIOV_VERSION 9e4c973b2ac517c64867e33d61aee152d70dc330 %define IMAGE_TAG %{RPM_MAJOR_VERSION}-%{RPM_MINOR_VERSION} %define binary_build_dir %{_builddir}/%{RPM_NAME}-%{RPM_MAJOR_VERSION}/binary-save %define docker_build_dir %{_builddir}/%{RPM_NAME}-%{RPM_MAJOR_VERSION}/docker-build +%define build_dir %{_builddir}/%{RPM_NAME}-%{RPM_MAJOR_VERSION}/build %define built_binaries_dir /binary-save +%define danm_components danm fakeipam +%define cnis flannel sriov Name: %{RPM_NAME} Version: %{RPM_MAJOR_VERSION} @@ -32,11 +35,11 @@ Summary: Containers as a Service %{COMPONENT} component License: %{_platform_license} and BSD 3-Clause License URL: https://github.com/nokia/danm BuildArch: x86_64 -Vendor: %{_platform_vendor} and Nokia +Vendor: %{_platform_vendor} and Nokia and Others unmodified Source0: %{name}-%{version}.tar.gz -Requires: docker-ce >= 18.09.2, iputils -BuildRequires: docker-ce >= 18.09.2, git +Requires: docker-ce >= 18.09.2, iputils, rsync +BuildRequires: docker-ce-cli >= 18.09.2, curl # more info at: https://fedoraproject.org/wiki/Packaging:Debuginfo No build ID note in Flannel %global debug_package %{nil} @@ -49,8 +52,9 @@ This RPM contains the DANM and related CNI binaries for CaaS subsystem. %build mkdir -p %{binary_build_dir}/cni -curl -fsSL -k https://github.com/containernetworking/plugins/releases/download/v%{CNI_VERSION}/cni-plugins-amd64-v%{CNI_VERSION}.tgz | tar zx --strip-components=1 -C %{binary_build_dir}/cni +curl -fsSL -k https://github.com/containernetworking/plugins/releases/download/v%{CNI_VERSION}/cni-plugins-linux-amd64-v%{CNI_VERSION}.tgz | tar zx --strip-components=1 -C %{binary_build_dir}/cni +# Build DANM binaries docker build \ --network=host \ --no-cache \ @@ -63,22 +67,49 @@ docker build \ --build-arg no_proxy="${no_proxy}" \ --build-arg DANM_VERSION="%{DANM_VERSION}" \ --build-arg go_version="%{go_version}" \ + --build-arg binaries="%{built_binaries_dir}" \ + --build-arg components="%{danm_components}" \ + --tag danm-builder:%{IMAGE_TAG} \ + %{docker_build_dir}/danm-builder/ + +builder_container=$(docker run -id --rm --network=none --entrypoint=/bin/sh danm-builder:%{IMAGE_TAG}) +mkdir -p %{binary_build_dir}/danm +for component in %{danm_components}; do + docker cp ${builder_container}:%{built_binaries_dir}/${component} %{binary_build_dir}/danm/ +done +docker rm -f ${builder_container} +docker rmi danm-builder:%{IMAGE_TAG} + +# Build CNI binaries +docker build \ + --network=host \ + --no-cache \ + --force-rm \ + --build-arg HTTP_PROXY="${http_proxy}" \ + --build-arg HTTPS_PROXY="${https_proxy}" \ + --build-arg NO_PROXY="${no_proxy}" \ + --build-arg http_proxy="${http_proxy}" \ + --build-arg https_proxy="${https_proxy}" \ + --build-arg no_proxy="${no_proxy}" \ + --build-arg go_version="%{go_version}" \ --build-arg SRIOV_VERSION="%{SRIOV_VERSION}" \ --build-arg binaries="%{built_binaries_dir}" \ --tag cni-builder:%{IMAGE_TAG} \ %{docker_build_dir}/cni-builder/ builder_container=$(docker run -id --rm --network=none --entrypoint=/bin/sh cni-builder:%{IMAGE_TAG}) -mkdir -p %{binary_build_dir}/danm -docker cp ${builder_container}:%{built_binaries_dir}/danm %{binary_build_dir}/ -mkdir -p %{binary_build_dir}/flannel -docker cp ${builder_container}:%{built_binaries_dir}/flannel %{binary_build_dir}/ -mkdir -p %{binary_build_dir}/sriov -docker cp ${builder_container}:%{built_binaries_dir}/sriov %{binary_build_dir}/ - +mkdir -p %{binary_build_dir}/built_cnis +for cni in %{cnis}; do + docker cp ${builder_container}:%{built_binaries_dir}/${cni} %{binary_build_dir}/built_cnis/ +done docker rm -f ${builder_container} docker rmi cni-builder:%{IMAGE_TAG} +# Collect DANM CRDs +git clone https://github.com/nokia/danm.git %{build_dir}/danm +cd %{build_dir}/danm +git checkout %{DANM_VERSION} + %install mkdir -p %{buildroot}/etc/cni/net.d/ rsync -av cni-config/00-danm.conf %{buildroot}/etc/cni/net.d/00-danm.conf @@ -87,19 +118,25 @@ rsync -av cni-config/flannel.conf %{buildroot}/etc/cni/net.d/flannel.conf mkdir -p %{buildroot}/opt/cni/bin/ # Generic CNI plugins # Don't use the standard ipvlan binary \ -# Dont't use portmap, quick fix for CVE-2019-9946 \ +# Don't use portmap, quick fix for CVE-2019-9946 \ rsync -av \ --chmod=go+rx,u+rwx \ --exclude=ipvlan \ --exclude=portmap \ %{binary_build_dir}/cni/* %{buildroot}/opt/cni/bin # DANM -install -D -m 0755 %{binary_build_dir}/danm/danm %{buildroot}/opt/cni/bin/danm -install -D -m 0755 %{binary_build_dir}/danm/fakeipam %{buildroot}/opt/cni/bin/fakeipam -# FLANNEL -install -D -m 0755 %{binary_build_dir}/flannel/flannel %{buildroot}/opt/cni/bin/flannel -# SRIOV -install -D -m 0755 %{binary_build_dir}/sriov/sriov %{buildroot}/opt/cni/bin/sriov +for component in %{danm_components}; do + install -D -m 0755 %{binary_build_dir}/danm/${component} %{buildroot}/opt/cni/bin/${component} +done +# Other CNIs +for cni in %{cnis}; do + install -D -m 0755 %{binary_build_dir}/built_cnis/${cni} %{buildroot}/opt/cni/bin/${cni} +done + +# DANM CRDs +mkdir -p %{buildroot}/%{_caas_danm_crd_path} +rsync -av %{build_dir}/danm/integration/crds/production/ %{buildroot}/%{_caas_danm_crd_path} + %files # CONFIG @@ -107,6 +144,8 @@ install -D -m 0755 %{binary_build_dir}/sriov/sriov %{buildroot}/opt/cni/bin/srio /etc/cni/net.d/flannel.conf # CNI binaries /opt/cni/bin +# DANM CRDs +/%{_caas_danm_crd_path} %preun