[Tree-wide] Update helm repo after build 70/114670/1
authorKrzysztof Opasiak <k.opasiak@samsung.com>
Fri, 6 Nov 2020 18:33:47 +0000 (19:33 +0100)
committerKrzysztof Opasiak <k.opasiak@samsung.com>
Fri, 6 Nov 2020 18:48:20 +0000 (19:48 +0100)
Helm 3 no longer supports creation of a local repo as helm 2 did. Now
we need to use external component named chartmuseum to provide us repo
for helm charts.

When we start chartmuseum for the first time repo is empty and during
our build process we successively built helm charts to it. As a last
chart we always build our umbrella chart called onap and also push it
to repo. Unfortunately our local helm cache is unaware that this new
chart is now available untill we push sth else or execute helm repo
update which leads to really cryptic deployment failures.

To mitigate this issue let's add a new target helm-repo-update which
will be executed right after onap and just make sure that our local
cache is up to date.

WARNING:
If you are using helm v3 and you build a single component for the
first time on this machine or version of chart for the component that
you are building has just changed recently it's not enough to run:

$ make <component>

You need to also run:

$ make helm-repo-update

after successful build of your component.

Issue-ID: OOM-2562
Change-Id: I77020a3fb5666106b86c6a76477a57d9dd5af047
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
kubernetes/Makefile

index ca46ad8..fc73dd4 100644 (file)
@@ -21,6 +21,10 @@ PACKAGE_DIR := $(OUTPUT_DIR)/packages
 SECRET_DIR := $(OUTPUT_DIR)/secrets
 HELM_BIN := helm
 HELM_VER := $(shell $(HELM_BIN) version --template "{{.Version}}")
+# use this if you would like to push onap charts to repo with other name
+# WARNING: Helm v3+ only
+# WARNING: Make sure to edit also requirements files
+HELM_REPO := local
 
 ifneq ($(SKIP_LINT),TRUE)
        HELM_LINT_CMD := $(HELM_BIN) lint
@@ -34,7 +38,7 @@ HELM_CHARTS := $(filter-out $(EXCLUDES), $(sort $(patsubst %/.,%,$(wildcard */.)
 
 .PHONY: $(EXCLUDES) $(HELM_CHARTS) check-for-staging-images
 
-all: $(COMMON_CHARTS_DIR) $(SUBMODS) $(HELM_CHARTS) plugins
+all: $(COMMON_CHARTS_DIR) $(SUBMODS) $(HELM_CHARTS) helm-repo-update plugins
 
 $(COMMON_CHARTS):
        @echo "\n[$@]"
@@ -68,12 +72,11 @@ lint-%: dep-%
 package-%: lint-%
        @mkdir -p $(PACKAGE_DIR)
 ifeq "$(findstring v3,$(HELM_VER))" "v3"
-       @if [ -f $*/Chart.yaml ]; then PACKAGE_NAME=$$($(HELM_BIN) package -d $(PACKAGE_DIR) $* | cut -d":" -f2) && $(HELM_BIN) push -f $$PACKAGE_NAME local; fi
+       @if [ -f $*/Chart.yaml ]; then PACKAGE_NAME=$$($(HELM_BIN) package -d $(PACKAGE_DIR) $* | cut -d":" -f2) && $(HELM_BIN) push -f $$PACKAGE_NAME $(HELM_REPO); fi
 else
        @if [ -f $*/Chart.yaml ]; then $(HELM_BIN) package -d $(PACKAGE_DIR) $*; fi
-endif
-
        @$(HELM_BIN) repo index $(PACKAGE_DIR)
+endif
 
 clean:
        @rm -f */requirements.lock
@@ -85,6 +88,7 @@ plugins:
        @cp -R $(HELM_BIN) $(PACKAGE_DIR)/
 
 # start up a local helm repo to serve up helm chart packages
+# WARNING: Only helm < v3 supported
 repo:
        @mkdir -p $(PACKAGE_DIR)
        @$(HELM_BIN) serve --repo-path $(PACKAGE_DIR) &
@@ -93,6 +97,7 @@ repo:
        @$(HELM_BIN) repo add local http://127.0.0.1:8879
 
 # stop local helm repo
+# WARNING: Only helm < v3 supported
 repo-stop:
        @pkill $(HELM_BIN)
        @$(HELM_BIN) repo remove local
@@ -100,6 +105,10 @@ repo-stop:
 check-for-staging-images:
        $(ROOT_DIR)/contrib/tools/check-for-staging-images.sh
 
+helm-repo-update:
+ifeq "$(findstring v3,$(HELM_VER))" "v3"
+       @$(HELM_BIN) repo update $(HELM_REPO)
+endif
+
 %:
        @:
-