docker: os: Allow caching vuls db between builds
[validation.git] / docker / os / Makefile
index 4d43df8..5e5386b 100644 (file)
 # limitations under the License.                                             #
 ##############################################################################
 
+export OS_VULS_DB?=/opt/akraino/validation/tests/os/vuls/db.tar.gz
+
+.PHONY: .init_db_cache
+.init_db_cache:
+       if [ ! -f $(OS_VULS_DB) ]; then \
+               sudo mkdir -p $(dir $(OS_VULS_DB)); \
+               sudo chown $(shell id -u):$(shell id -g) $(dir $(OS_VULS_DB)); \
+               tar czf $(OS_VULS_DB) -T /dev/null; \
+       fi
+
+.PHONY: .build
+.build::
+       if [ -f $(OS_VULS_DB) ]; then \
+               echo DB cache file found, will be used during the build; \
+               cp $(OS_VULS_DB) .; \
+       else \
+               tar czf $(notdir $(OS_VULS_DB)) -T /dev/null; \
+       fi
+       date +%s > $(notdir $(OS_VULS_DB)).timestamp
+
 .PHONY: all
 all: push-image .push_manifest
 
@@ -24,3 +44,14 @@ build: .build
 push-image: .push_image
 
 include ../build.mk
+
+.PHONY: .build
+.build::
+       if [ -f $(OS_VULS_DB) ]; then \
+               echo DB cache file found, will be updated; \
+               docker run -v $(OS_VULS_DB):$(OS_VULS_DB).host \
+                       --rm --entrypoint cp \
+                       $(REGISTRY)/$(NAME):$(TAG_PRE)-$(HOST_ARCH)-$(TAG_VER) \
+                       $(OS_VULS_DB) $(OS_VULS_DB).host; \
+       fi
+       rm -f $(notdir $(OS_VULS_DB))*