diff --git a/.gitignore b/.gitignore
index e0a3bc0618cf62d7905867a25404d4714640b47b..d890588e189903b1efc03a6e8f03a1d59d3735d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,5 @@ charts/ska-tango-base/charts/tango-util-0.1.0.tgz
 charts/ska-tango-base/charts/*
 charts/ska-tango-base/Chart.lock
 charts/ska-tango-umbrella/charts
+# we generate this values.yaml
+charts/ska-tango-base/values.yaml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 703860ccef03a0c9d6c69b4791844b71c5606004..72beaafa03518223a92e71f7a730d1029b0aa0c1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -58,8 +58,9 @@ build_dependencies:
   variables:
     OCI_IMAGE: ska-tango-images-tango-dependencies
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_1"'
-    - if: '$CI_PIPELINE_SOURCE == "push"' ## To eliminate duplicate detached MRs
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' ## To eliminate duplicate detached MRs
       changes:
       - images/ska-tango-images-tango-dependencies/*
 
@@ -71,8 +72,9 @@ build_dependencies-alpine:
   variables:
     OCI_IMAGE: ska-tango-images-tango-dependencies-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_1"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies-alpine/*
 
@@ -84,8 +86,9 @@ build_tango-db:
   variables:
     OCI_IMAGE: ska-tango-images-tango-db
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-db/*
 
@@ -97,8 +100,9 @@ build_tango-db-alpine:
   variables:
     OCI_IMAGE: ska-tango-images-tango-db-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_1"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-db-alpine/*
 
@@ -111,8 +115,9 @@ build_tango-cpp:
     OCI_IMAGE: ska-tango-images-tango-cpp
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-dependencies
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_2"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -126,8 +131,9 @@ build_tango-cpp-alpine:
     OCI_IMAGE: ska-tango-images-tango-cpp-alpine
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-dependencies-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_2"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies-alpine/*
       - images/ska-tango-images-tango-cpp-alpine/*
@@ -141,8 +147,9 @@ build_tango-java:
     OCI_IMAGE: ska-tango-images-tango-java
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-dependencies
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_2"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-java/*
@@ -157,8 +164,9 @@ build_tango-rest:
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-java
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-dependencies
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -173,8 +181,9 @@ build_pytango-builder:
     OCI_IMAGE: ska-tango-images-pytango-builder
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-cpp
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -189,8 +198,9 @@ build_pytango-builder-alpine:
     OCI_IMAGE: ska-tango-images-pytango-builder-alpine
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-cpp-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-cpp-alpine/*
       - images/ska-tango-images-pytango-builder-alpine/*
@@ -204,8 +214,9 @@ build_tango-pogo:
     OCI_IMAGE: ska-tango-images-tango-pogo
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-java
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-java/*
@@ -220,8 +231,9 @@ build_tango-libtango:
     OCI_IMAGE: ska-tango-images-tango-libtango
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-cpp
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -236,8 +248,9 @@ build_tango-jive:
     OCI_IMAGE: ska-tango-images-tango-jive
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-java
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_3"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-java/*
@@ -253,8 +266,9 @@ build_pytango-runtime:
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-cpp
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes"'
-    - if: '$CI_PIPELINE_SOURCE == "push" || $FORCE_REBUILD == "build_4"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $FORCE_REBUILD == "build_4"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -271,8 +285,9 @@ build_pytango-runtime-alpine:
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-cpp-alpine
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_4"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-cpp-alpine/*
       - images/ska-tango-images-pytango-builder-alpine/*
@@ -287,8 +302,9 @@ build_tango-admin:
     OCI_IMAGE: ska-tango-images-tango-admin
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-libtango
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_4"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -304,8 +320,9 @@ build_tango-databaseds:
     OCI_IMAGE: ska-tango-images-tango-databaseds
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-libtango
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_4"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -321,8 +338,9 @@ build_tango-test:
     OCI_IMAGE: ska-tango-images-tango-test
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-libtango
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_4"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -339,8 +357,9 @@ build_tango-dsconfig:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -358,8 +377,9 @@ build_tango-dsconfig-alpine:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder-alpine
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-pytango-builder-alpine/*
       - images/ska-tango-images-pytango-runtime-alpine/*
@@ -375,8 +395,9 @@ build_tango-itango:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -394,8 +415,9 @@ build_tango-itango-alpine:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder-alpine
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-pytango-builder-alpine/*
       - images/ska-tango-images-pytango-runtime-alpine/*
@@ -410,8 +432,9 @@ build_tango-vnc:
     OCI_IMAGE: ska-tango-images-tango-vnc
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-tango-java
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-java/*
@@ -427,8 +450,9 @@ build_tango-pytango:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-dependencies/*
       - images/ska-tango-images-tango-cpp/*
@@ -446,8 +470,9 @@ build_tango-pytango-alpine:
     BUILD_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder-alpine
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-runtime-alpine
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-pytango-builder-alpine/*
       - images/ska-tango-images-tango-pytango-alpine/*
@@ -461,8 +486,9 @@ build_tango-panic:
     OCI_IMAGE: ska-tango-images-tango-panic
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-panic/*
       - images/ska-tango-images-tango-dependencies/*
@@ -480,8 +506,9 @@ build_tango-panic-gui:
     OCI_IMAGE: ska-tango-images-tango-panic-gui
     BASE_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/ska-tango-images-pytango-builder
   rules:
+    - if: '$CI_COMMIT_TAG'
     - if: '$FORCE_REBUILD == "yes" || $FORCE_REBUILD == "build_5"'
-    - if: '$CI_PIPELINE_SOURCE == "push"'
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       changes:
       - images/ska-tango-images-tango-panic-gui/*
       - images/ska-tango-images-tango-dependencies/*
@@ -500,7 +527,7 @@ test-chart:
   script:
   - kubectl version
   - helm version
-  - make install-chart
+  - make install-chart CAR_OCI_REGISTRY_HOST=${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}
   - make wait
   - make test
   - mkdir -p ./build/reports ./build/htmlcov
@@ -519,15 +546,29 @@ test-chart:
     reports:
       junit: build/reports/unit-tests.xml
 
+# Custom OCI Image publish stage
+oci-image-publish: #Executed on a tag for CAR
+  stage: publish
+  image: $SKA_K8S_TOOLS_DOCKER_BUILDER_IMAGE
+  tags:
+    - k8srunner
+  before_script:
+    - '[ -f .make/oci.mk ] || (echo "File oci.mk not included in Makefile; exit 1")'
+    - 'make help | grep oci.mk:oci-publish'
+    - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
+    - echo $CAR_OCI_REGISTRY_PASSWORD | docker login -u $CAR_OCI_REGISTRY_USERNAME --password-stdin $CAR_OCI_REGISTRY_HOST
+  script:
+    - make custom-oci-publish-all
+  rules:
+    - if: '$CI_COMMIT_TAG'
+
 
 # Include CI templates
 include:
 # OCI Images
-  # do a custom set of build stages
+  # do a custom set of build and publish stages
   - project: 'ska-telescope/templates-repository'
     file: 'gitlab-ci/includes/oci-image-lint.gitlab-ci.yml'
-  - project: 'ska-telescope/templates-repository'
-    file: 'gitlab-ci/includes/oci-image-publish.gitlab-ci.yml'
 
 # Helm Charts
   - project: 'ska-telescope/templates-repository'
diff --git a/.make b/.make
index a8cb6bd09c57481e58e66c90cc87e23c2b49c5dc..ad14f13b66f38159dc7c8aec61c101daf027b6c2 160000
--- a/.make
+++ b/.make
@@ -1 +1 @@
-Subproject commit a8cb6bd09c57481e58e66c90cc87e23c2b49c5dc
+Subproject commit ad14f13b66f38159dc7c8aec61c101daf027b6c2
diff --git a/Makefile b/Makefile
index dc3ae8afa07a0f7e2ee1f5d2bf7e0da0134c9473..1300c3aaa74a946ddbd27ef91171bb123f7150a0 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@ BASE = $(shell pwd)
 
 HELM_CHARTS_TO_PUBLISH ?= ska-tango-util ska-tango-base
 OCI_IMAGES ?= ska-tango-images-tango-dependencies ska-tango-images-tango-dependencies-alpine ska-tango-images-tango-db ska-tango-images-tango-cpp ska-tango-images-tango-cpp-alpine ska-tango-images-tango-java ska-tango-images-tango-rest ska-tango-images-pytango-builder ska-tango-images-pytango-builder-alpine ska-tango-images-tango-pogo ska-tango-images-tango-libtango ska-tango-images-tango-jive ska-tango-images-pytango-runtime ska-tango-images-pytango-runtime-alpine ska-tango-images-tango-admin ska-tango-images-tango-databaseds ska-tango-images-tango-test ska-tango-images-tango-dsconfig ska-tango-images-tango-itango ska-tango-images-tango-vnc ska-tango-images-tango-pytango ska-tango-images-tango-panic ska-tango-images-tango-panic-gui
+OCI_IMAGES_TO_PUBLISH ?= $(OCI_IMAGES)
 
 KUBE_NAMESPACE ?= ska-tango-images#namespace to be used
 RELEASE_NAME ?= test## release name of the chart
@@ -68,7 +69,7 @@ delete_namespace: ## delete the kubernetes namespace
 		kubectl describe namespace $(KUBE_NAMESPACE) && kubectl delete namespace $(KUBE_NAMESPACE); \
 	fi
 
-package: ## package charts
+package: helm-pre-publish ## package charts
 	@echo "Packaging helm charts. Any existing file won't be overwritten."; \
 	mkdir -p ./tmp
 	@for i in $(CHARTS); do \
@@ -78,15 +79,23 @@ package: ## package charts
 	cd ./repository && helm repo index .; \
 	rm -rf ./tmp
 
-dep-up: ## update dependencies for every charts in the env var CHARTS
+helm-pre-publish: ## hook before helm chart publish
+	@echo "helm-pre-publish: generating charts/ska-tango-base/values.yaml"
+	@cd charts/ska-tango-base && bash ./values.yaml.sh
+
+helm-pre-lint: helm-pre-publish ## make sure auto-generate values.yaml happens
+
+custom-oci-publish-all: ## Custom Publish all OCI Images in OCI_IMAGES_TO_PUBLISH using image local .release
+	$(foreach ociimage,$(OCI_IMAGES_TO_PUBLISH), make oci-publish OCI_IMAGE=$(ociimage) RELEASE_CONTEXT_DIR=images/$(ociimage);)
+
+dep-up: helm-pre-publish ## update dependencies for every charts in the env var CHARTS
 	@cd charts; \
 	for i in $(CHARTS); do \
 		helm dependency update $${i}; \
 	done;
 
 install-chart: clean dep-up namespace## install the helm chart with name RELEASE_NAME and path UMBRELLA_CHART_PATH on the namespace KUBE_NAMESPACE
-	RELEASE_SUPPORT=$(RELEASE_SUPPORT) bash ./scripts/generate-values.sh; \
-	cd charts; \
+	@cd charts; \
 	sed -e 's/CI_PROJECT_PATH_SLUG/$(CI_PROJECT_PATH_SLUG)/' ci-values.yaml > generated_values.yaml; \
 	sed -e 's/CI_ENVIRONMENT_SLUG/$(CI_ENVIRONMENT_SLUG)/' generated_values.yaml > values.yaml; \
 	helm install $(RELEASE_NAME) \
@@ -98,7 +107,7 @@ install-chart: clean dep-up namespace## install the helm chart with name RELEASE
 	 rm values.yaml
 
 template-chart: clean dep-up## install the helm chart with name RELEASE_NAME and path UMBRELLA_CHART_PATH on the namespace KUBE_NAMESPACE
-	@RELEASE_SUPPORT=$(RELEASE_SUPPORT) bash ./scripts/generate-values.sh; \
+	@cd charts; \
 	sed -e 's/CI_PROJECT_PATH_SLUG/$(CI_PROJECT_PATH_SLUG)/' ci-values.yaml > generated_values.yaml; \
 	sed -e 's/CI_ENVIRONMENT_SLUG/$(CI_ENVIRONMENT_SLUG)/' generated_values.yaml > values.yaml; \
 	helm template $(RELEASE_NAME) \
@@ -130,7 +139,7 @@ reinstall-chart: uninstall-chart install-chart ## reinstall the ska-tango-images
 # 	echo "<testsuites><testsuite errors=\"$(LINTING_OUTPUT)\" failures=\"0\" name=\"helm-lint\" skipped=\"0\" tests=\"0\" time=\"0.000\" timestamp=\"$(shell date)\"> </testsuite> </testsuites>" > build/linting.xml
 # 	exit $(LINTING_OUTPUT)
 
-wait:## wait for pods to be ready
+wait: ## wait for pods to be ready
 	@echo "Waiting for pods to be ready"
 	@date
 	@kubectl -n $(KUBE_NAMESPACE) get pods
@@ -168,7 +177,7 @@ k8s_test = tar -c tests/post-deployment/ | \
 # base64 payload is given a boundary "~~~~BOUNDARY~~~~" and extracted using perl
 # clean up the run to completion container
 # exit the saved status
-test: ## test the application on K8s
+test: helm-pre-publish ## test the application on K8s
 	cp charts/ska-tango-base/values.yaml tests/post-deployment/tango_values.yaml; \
 	$(call k8s_test,test); \
 		status=$$?; \
diff --git a/charts/ci-values.yaml b/charts/ci-values.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..696b3422973890628a8bde70590bd2fa4a16bd34
--- /dev/null
+++ b/charts/ci-values.yaml
@@ -0,0 +1,17 @@
+global:
+  annotations:
+    app.gitlab.com/app: CI_PROJECT_PATH_SLUG
+    app.gitlab.com/env: CI_ENVIRONMENT_SLUG
+  # by setting this parameter we can disable the lower level sub-system tango-base, archiver and webjive
+  # sub-system:
+  #   tango-base:
+  #     enabled: false
+  #   archiver:
+  #     enabled: false
+  #   webjive:
+  #     enabled: false
+
+# tango-base:
+#   enabled: true
+
+
diff --git a/charts/ska-tango-base/values.yaml b/charts/ska-tango-base/values.yaml.sh
similarity index 67%
rename from charts/ska-tango-base/values.yaml
rename to charts/ska-tango-base/values.yaml.sh
index 1b348218c0d5248a29b3e242241cecc5773a91d4..6a4874d2ba711bf3b782693ff0ae18cb5e59577b 100644
--- a/charts/ska-tango-base/values.yaml
+++ b/charts/ska-tango-base/values.yaml.sh
@@ -1,3 +1,39 @@
+#!/bin/bash
+
+RELEASE_SUPPORT="${RELEASE_SUPPORT:-../../.make/.make-release-support}"
+VALUES_YAML=values.yaml
+CAR_OCI_REGISTRY_HOST="${CAR_OCI_REGISTRY_HOST:-artefact.skao.int}"
+CI_COMMIT_SHORT_SHA="${CI_COMMIT_SHORT_SHA:-blah}"
+SUFFIX=""
+
+# Disabled this as it complicates the rules: changes: - pxh 30/09/2021
+# Check if this is a dev build
+# if [[ "${CAR_OCI_REGISTRY_HOST}" == registry.gitlab.com* ]] || [[ -z "${CAR_OCI_REGISTRY_HOST}" ]]; then
+#     SUFFIX="-dev.${CI_COMMIT_SHORT_SHA}"  #"-" is used as "+" causes the docker building process to fail
+# fi
+
+cat <<EOF > ${VALUES_YAML}
+# Default values for tango-base.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+global:
+  annotations:
+    app.gitlab.com/app: CI_PROJECT_PATH_SLUG
+    app.gitlab.com/env: CI_ENVIRONMENT_SLUG
+  # by setting this parameter we can disable the lower level sub-system tango-base, archiver and webjive
+  # sub-system:
+  #   tango-base:
+  #     enabled: false
+  #   archiver:
+  #     enabled: false
+  #   webjive:
+  #     enabled: false
+
+# tango-base:
+#   enabled: true
+
+
 # Default values for tango-base.
 # This is a YAML-formatted file.
 # Declare variables to be passed into your templates.
@@ -25,9 +61,9 @@ annotations:
 
 dsconfig:
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-dsconfig
-    tag: 1.5.2
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-dsconfig setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
 
 itango:
@@ -37,9 +73,9 @@ itango:
   domain: interactive-testing
   intent: enabling
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-itango
-    tag: 9.3.6
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-itango setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -57,9 +93,9 @@ databaseds:
   domain: tango-configuration
   intent: production
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-cpp
-    tag: 9.3.7
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-cpp setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -103,9 +139,9 @@ deviceServers:
           devices:
           - name: "sys/tg_test/1"
     image:
-      registry: artefact.skao.int
+      registry: ${CAR_OCI_REGISTRY_HOST}
       image: ska-tango-images-tango-java
-      tag: 9.3.5
+      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-java setContextHelper; getVersion)${SUFFIX}
       pullPolicy: IfNotPresent
     resources:
       requests:
@@ -125,9 +161,9 @@ tangodb:
   domain: tango-configuration
   intent: production
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-db
-    tag: 10.4.13
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-db setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   db:
     rootpw: secret
@@ -165,9 +201,9 @@ jive:
   domain: interactive-testing
   intent: enabling
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-java
-    tag: 9.3.5
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-java setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -190,9 +226,9 @@ vnc:
   nodeport_novnc: 32082
   replicas: 3
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-vnc
-    tag: 0.1.4
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-vnc setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -212,9 +248,9 @@ tangorest:
   domain: tango-configuration
   intent: enabling
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-rest
-    tag: 1.14.5
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-rest setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -233,9 +269,9 @@ logviewer:
   domain: interactive-testing
   intent: enabling
   image:
-    registry: artefact.skao.int
+    registry: ${CAR_OCI_REGISTRY_HOST}
     image: ska-tango-images-tango-java
-    tag: 9.3.5
+    tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=../../images/ska-tango-images-tango-java setContextHelper; getVersion)${SUFFIX}
     pullPolicy: IfNotPresent
   resources:
     requests:
@@ -257,3 +293,5 @@ nodeSelector: {}
 affinity: {}
 
 tolerations: []
+
+EOF
diff --git a/scripts/generate-values.sh b/scripts/generate-values.sh
deleted file mode 100755
index 58b9e126fc2f165bbe43119d2b491bf312ddf947..0000000000000000000000000000000000000000
--- a/scripts/generate-values.sh
+++ /dev/null
@@ -1,286 +0,0 @@
-#!/bin/bash
-
-RELEASE_SUPPORT=./.make/.make-release-support
-VALUES_YAML=./charts/ci-values.yaml
-OCI_REGISTRY=registry.gitlab.com/ska-telescope/ska-tango-images
-
-cat <<EOF > ${VALUES_YAML}
-global:
-  annotations:
-    app.gitlab.com/app: CI_PROJECT_PATH_SLUG
-    app.gitlab.com/env: CI_ENVIRONMENT_SLUG
-  # by setting this parameter we can disable the lower level sub-system tango-base, archiver and webjive
-  # sub-system:
-  #   tango-base:
-  #     enabled: false
-  #   archiver:
-  #     enabled: false
-  #   webjive:
-  #     enabled: false
-
-# tango-base:
-#   enabled: true
-
-
-# Default values for tango-base.
-# This is a YAML-formatted file.
-# Declare variables to be passed into your templates.
-
-ska-tango-base:
-  display: ":0"
-  xauthority: "~/.Xauthority"
-
-  global:
-    minikube: false
-    tango_host: databaseds-tango-base-{{.Release.Name}}:10000
-    retry:
-    - "--sleep=1"
-    - "--tries=100"
-
-  homeDir: /home/ubuntu
-  system: SW-infrastructure
-  subsystem: ska-tango-base
-  telescope: SKA-mid
-
-  labels:
-    app: ska-tango-images
-  annotations:
-    app.gitlab.com/app: CI_PROJECT_PATH_SLUG
-    app.gitlab.com/env: CI_ENVIRONMENT_SLUG
-
-  dsconfig:
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-dsconfig
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-dsconfig setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-
-  itango:
-    enabled: false
-    component: itango-console
-    function: generic-tango-console
-    domain: interactive-testing
-    intent: enabling
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-itango
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-itango setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 100m     # 00m = 0.1 CPU
-        memory: 128Mi # 128Mi = 0.125 GB mem
-        ephemeral-storage: 512Mi
-      limits:
-        cpu: 100m     # 00m = 0.1 CPU
-        memory: 128Mi # 128Mi = 0.125 GB mem
-        ephemeral-storage: 512Mi
-
-  databaseds:
-    component: databaseds
-    function: tangodb-interface
-    domain: tango-configuration
-    intent: production
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-cpp
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-cpp setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 128Mi # 128Mi = 0.125 GB mem
-        ephemeral-storage: 512Mi
-      limits:
-        cpu: 200m     # 200m = 0.2 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 1Gi
-    livenessProbe:
-      enabled: false
-      initialDelaySeconds: 0
-      periodSeconds: 10
-      timeoutSeconds: 1
-      successThreshold: 1
-      failureThreshold: 3
-    readinessProbe:
-      enabled: false
-      initialDelaySeconds: 0
-      periodSeconds: 10
-      timeoutSeconds: 1
-      successThreshold: 1
-      failureThreshold: 3
-
-  deviceServers:
-    - name: tangotest
-      function: tango-test
-      domain: tango-base
-      command: "/usr/local/bin/TangoTest"
-      instances: ["test"]
-      depends_on:
-      - device: sys/database/2
-      environment_variables: []
-      server:
-        name: "TangoTest"
-        instances:
-        - name: "test"
-          classes:
-          - name: "TangoTest"
-            devices:
-            - name: "sys/tg_test/1"
-      image:
-        registry: ${OCI_REGISTRY}
-        image: ska-tango-images-tango-java
-        tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-java setContextHelper; getVersion)
-        pullPolicy: IfNotPresent
-      resources:
-        requests:
-          cpu: 200m     # 200m = 0.2 CPU
-          memory: 256Mi # 256Mi = 0.25 GB mem
-          ephemeral-storage: 1Gi
-        limits:
-          cpu: 500m     # 500m = 0.5 CPU
-          memory: 512Mi # 512Mi = 0.5 GB mem
-          ephemeral-storage: 1Gi
-
-  tangodb:
-    enabled: true
-    use_pv: false
-    component: tangodb
-    function: tango-device-configuration
-    domain: tango-configuration
-    intent: production
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-db
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-db setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    db:
-      rootpw: secret
-      db: tango
-      user: tango
-      password: tango
-    resources:
-      requests:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 1Gi
-      limits:
-        cpu: 200m     # 200m = 0.2 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 2Gi
-    livenessProbe:
-      enabled: false
-      initialDelaySeconds: 0
-      periodSeconds: 10
-      timeoutSeconds: 1
-      successThreshold: 1
-      failureThreshold: 3
-    readinessProbe:
-      enabled: false
-      initialDelaySeconds: 0
-      periodSeconds: 10
-      timeoutSeconds: 1
-      successThreshold: 1
-      failureThreshold: 3
-
-  jive:
-    enabled: false
-    component: jive-gui
-    function: generic-tango-jive-gui
-    domain: interactive-testing
-    intent: enabling
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-java
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-java setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 200m     # 200m = 0.2 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 256Mi
-      limits:
-        cpu: 500m     # 500m = 0.5 CPU
-        memory: 512Mi # 512Mi = 0.5 GB mem
-        ephemeral-storage: 256Mi
-
-  vnc:
-    enabled: false
-    component: vnc-gui
-    function: generic-tango-vnc-gui
-    domain: interactive-testing
-    intent: enabling
-    nodeport_enabled: false
-    nodeport_vnc: 32081
-    nodeport_novnc: 32082
-    replicas: 3
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-vnc
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-vnc setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 256Mi
-      limits:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 256Mi
-
-  tangorest:
-    enabled: false
-    replicas: 3
-    component: tango-rest
-    function: tango-http-interface
-    domain: tango-configuration
-    intent: enabling
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-rest
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-rest setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 256Mi
-      limits:
-        cpu: 200m     # 100m = 0.1 CPU
-        memory: 512Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 512Mi
-
-  logviewer:
-    enabled: false
-    component: logviewer
-    function: tango-log-inspection
-    domain: interactive-testing
-    intent: enabling
-    image:
-      registry: ${OCI_REGISTRY}
-      image: ska-tango-images-tango-java
-      tag: $(. ${RELEASE_SUPPORT}; RELEASE_CONTEXT_DIR=images/ska-tango-images-tango-java setContextHelper; getVersion)
-      pullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 128Mi # 128Mi = 0.125 GB mem
-        ephemeral-storage: 256Mi
-      limits:
-        cpu: 100m     # 100m = 0.1 CPU
-        memory: 256Mi # 256Mi = 0.25 GB mem
-        ephemeral-storage: 256Mi
-
-  # Configure Ingress resource that allow you to access the Tango REST API
-  ingress:
-    enabled: true
-    nginx: true
-
-  nodeSelector: {}
-
-  affinity: {}
-
-  tolerations: []
-
-EOF