diff --git a/Makefile b/Makefile index 3472f5a0f21b4..6d402a864027e 100644 --- a/Makefile +++ b/Makefile @@ -203,18 +203,35 @@ else IMAGE_TAG?=latest endif +# defaults for building images and manifests ifeq (${DOCKER_PUSH},true) ifndef IMAGE_NAMESPACE $(error IMAGE_NAMESPACE must be set to push images (e.g. IMAGE_NAMESPACE=argoproj)) endif endif +# Consruct prefix for docker image +# Note: keeping same logic as in hacks/update_manifests.sh +ifdef IMAGE_REGISTRY ifdef IMAGE_NAMESPACE +IMAGE_PREFIX=${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/ +else +$(error IMAGE_NAMESPACE must be set when IMAGE_REGISTRY is set (e.g. IMAGE_NAMESPACE=argoproj)) +endif +else +ifdef IMAGE_NAMESPACE +# for backwards compatibility with the old way like IMAGE_NAMESPACE='quay.io/argoproj' IMAGE_PREFIX=${IMAGE_NAMESPACE}/ +else +# Neither namespace nor registry given - apply the default values +IMAGE_REGISTRY="quay.io" +IMAGE_NAMESPACE="argoproj" +IMAGE_PREFIX=${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/ +endif endif -ifndef IMAGE_REGISTRY -IMAGE_REGISTRY="quay.io" +ifndef IMAGE_REPOSITORY +IMAGE_REPOSITORY=argocd endif .PHONY: all @@ -354,16 +371,16 @@ image: build-ui ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-cmp-server ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-dex cp Dockerfile.dev dist - DOCKER_BUILDKIT=1 $(DOCKER) build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) -f dist/Dockerfile.dev dist + DOCKER_BUILDKIT=1 $(DOCKER) build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)$(IMAGE_REPOSITORY):$(IMAGE_TAG) -f dist/Dockerfile.dev dist else image: - DOCKER_BUILDKIT=1 $(DOCKER) build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) --platform=$(TARGET_ARCH) . + DOCKER_BUILDKIT=1 $(DOCKER) build -t $(IMAGE_PREFIX)$(IMAGE_REPOSITORY):$(IMAGE_TAG) --platform=$(TARGET_ARCH) . endif - @if [ "$(DOCKER_PUSH)" = "true" ] ; then $(DOCKER) push $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) ; fi + @if [ "$(DOCKER_PUSH)" = "true" ] ; then $(DOCKER) push $(IMAGE_PREFIX)$(IMAGE_REPOSITORY):$(IMAGE_TAG) ; fi .PHONY: armimage armimage: - $(DOCKER) build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG)-arm . + $(DOCKER) build -t $(IMAGE_PREFIX)(IMAGE_REPOSITORY):$(IMAGE_TAG)-arm . .PHONY: builder-image builder-image: diff --git a/hack/update-manifests.sh b/hack/update-manifests.sh index d9e25879f7df7..b388312372b6c 100755 --- a/hack/update-manifests.sh +++ b/hack/update-manifests.sh @@ -12,14 +12,39 @@ KUSTOMIZE=kustomize cd "${SRCROOT}/manifests/ha/base/redis-ha" && ./generate.sh +# Empty defaults - to avoid errors for unset env. variables +IMAGE_REGISTRY="${IMAGE_REGISTRY:-}" +IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-}" +IMAGE_TAG="${IMAGE_TAG:-}" # Image repository configuration - can be overridden in forks -IMAGE_REGISTRY="${IMAGE_REGISTRY:-quay.io}" -IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-argoproj}" IMAGE_REPOSITORY="${IMAGE_REPOSITORY:-argocd}" -IMAGE_TAG="${IMAGE_TAG:-}" + +# Apply defaults if needed +if [[ -n $IMAGE_REGISTRY ]];then + if [[ -z $IMAGE_NAMESPACE ]]; then + echo "IMAGE_NAMESPACE must be set when IMAGE_REGISTRY is set (e.g. IMAGE_NAMESPACE=argoproj)" >&2 + exit 1 + fi + # both registry and namespace set, nothing to do +else # registry not set + if [[ -z $IMAGE_NAMESPACE ]]; then + # Neither namespace nor registry given - apply the default values + IMAGE_REGISTRY="${IMAGE_REGISTRY:-quay.io}" + IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-argoproj}" + fi + # If namespace is set, then it's an image without registry or + # registry is given as part of namespace (old convention) +fi # Construct full image name -FULL_IMAGE_NAME="${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/${IMAGE_REPOSITORY}" +# Note: keeping same logic as in Makefile for docker images +FULL_IMAGE_NAME="${IMAGE_REPOSITORY}" +if [[ -n $IMAGE_NAMESPACE ]]; then + FULL_IMAGE_NAME="${IMAGE_NAMESPACE}/${FULL_IMAGE_NAME}" +fi +if [[ -n $IMAGE_REGISTRY ]]; then + FULL_IMAGE_NAME="${IMAGE_REGISTRY}/${FULL_IMAGE_NAME}" +fi # Auto-detect current image in manifests for release workflows detect_current_image() {