From 53b6da5efc0d2f7b36b4e9f6b2d306f5f7a79cd3 Mon Sep 17 00:00:00 2001 From: Eugene Doudine Date: Sun, 4 Jan 2026 22:16:56 +0200 Subject: [PATCH 1/5] fix: inconsistent use of IMAGE_NAMESPACE and IMAGE_REGISTRY vars Signed-off-by: Eugene Doudine --- Makefile | 24 ++++++++++++++++++------ hack/update-manifests.sh | 18 +++++++++++++++--- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 3472f5a0f21b4..7d3dbee8cb5a3 100644 --- a/Makefile +++ b/Makefile @@ -203,18 +203,30 @@ 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 +# for backwards compatibility with the old way like IMAGE_NAMESPACE='quay.io/argoproj' ifdef IMAGE_NAMESPACE IMAGE_PREFIX=${IMAGE_NAMESPACE}/ endif +endif -ifndef IMAGE_REGISTRY -IMAGE_REGISTRY="quay.io" +ifndef IMAGE_REPOSITORY +IMAGE_REPOSITORY=argocd endif .PHONY: all @@ -354,16 +366,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..78d3a3efd1ea7 100755 --- a/hack/update-manifests.sh +++ b/hack/update-manifests.sh @@ -13,13 +13,25 @@ KUSTOMIZE=kustomize cd "${SRCROOT}/manifests/ha/base/redis-ha" && ./generate.sh # Image repository configuration - can be overridden in forks -IMAGE_REGISTRY="${IMAGE_REGISTRY:-quay.io}" -IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-argoproj}" +IMAGE_REGISTRY="${IMAGE_REGISTRY:-}" +IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-}" IMAGE_REPOSITORY="${IMAGE_REPOSITORY:-argocd}" IMAGE_TAG="${IMAGE_TAG:-}" # 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 + # for backwards compatibility with the old way like IMAGE_NAMESPACE='quay.io/argoproj' + FULL_IMAGE_NAME="${IMAGE_NAMESPACE}/${FULL_IMAGE_NAME}" +fi +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 + FULL_IMAGE_NAME="${IMAGE_REGISTRY}/${FULL_IMAGE_NAME}" +fi # Auto-detect current image in manifests for release workflows detect_current_image() { From 266e4e3565c9d78a7606065d75b2f6fc37a4f27e Mon Sep 17 00:00:00 2001 From: Eugene Doudine Date: Mon, 5 Jan 2026 01:23:31 +0200 Subject: [PATCH 2/5] fix: pass image variables to the chach changes wf. Signed-off-by: Eugene Doudine --- .github/workflows/ci-build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 5954d34ef7924..12b304859d44f 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -288,7 +288,7 @@ jobs: set -x export GOPATH=$(go env GOPATH) git checkout -- go.mod go.sum - make codegen-local + make IMAGE_NAMESPACE=${{ env.IMAGE_NAMESPACE }} IMAGE_REGISTRY=${{ env.IMAGE_REGISTRY }} IMAGE_REPOSITORY=${{ env.IMAGE_REPOSITORY }} codegen-local # generalizing repo name for forks: ${{ github.event.repository.name }} working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} - name: Check nothing has changed From 2c3b87facba6522d1212f7c79e2b2d5731213701 Mon Sep 17 00:00:00 2001 From: Eugene Doudine Date: Mon, 5 Jan 2026 01:36:28 +0200 Subject: [PATCH 3/5] fix: github variables usage in ci-build Signed-off-by: Eugene Doudine --- .github/workflows/ci-build.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 12b304859d44f..d2a0f4fd31bf1 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -15,6 +15,9 @@ env: # Golang version to use across CI steps # renovate: datasource=golang-version packageName=golang GOLANG_VERSION: '1.25.5' + IMAGE_REGISTRY: ${{ vars.IMAGE_REGISTRY || 'quay.io' }} + IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE || 'argoproj' }} + IMAGE_REPOSITORY: ${{ vars.IMAGE_REPOSITORY || 'argocd' }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -288,7 +291,8 @@ jobs: set -x export GOPATH=$(go env GOPATH) git checkout -- go.mod go.sum - make IMAGE_NAMESPACE=${{ env.IMAGE_NAMESPACE }} IMAGE_REGISTRY=${{ env.IMAGE_REGISTRY }} IMAGE_REPOSITORY=${{ env.IMAGE_REPOSITORY }} codegen-local + #make IMAGE_NAMESPACE=${{ env.IMAGE_NAMESPACE }} IMAGE_REGISTRY=${{ env.IMAGE_REGISTRY }} IMAGE_REPOSITORY=${{ env.IMAGE_REPOSITORY }} codegen-local + make codegen-local # generalizing repo name for forks: ${{ github.event.repository.name }} working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} - name: Check nothing has changed From 998bbe69332d0e2e9c20f1ae7f8e785136342d9b Mon Sep 17 00:00:00 2001 From: Eugene Doudine Date: Mon, 5 Jan 2026 17:35:31 +0200 Subject: [PATCH 4/5] fix: cleanup of comments Signed-off-by: Eugene Doudine --- .github/workflows/ci-build.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index d2a0f4fd31bf1..503c41306973a 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -291,7 +291,6 @@ jobs: set -x export GOPATH=$(go env GOPATH) git checkout -- go.mod go.sum - #make IMAGE_NAMESPACE=${{ env.IMAGE_NAMESPACE }} IMAGE_REGISTRY=${{ env.IMAGE_REGISTRY }} IMAGE_REPOSITORY=${{ env.IMAGE_REPOSITORY }} codegen-local make codegen-local # generalizing repo name for forks: ${{ github.event.repository.name }} working-directory: /home/runner/go/src/github.com/argoproj/${{ github.event.repository.name }} From 2568565c72cbcf0d64a5453624a33db4c9de982c Mon Sep 17 00:00:00 2001 From: Eugene Doudine Date: Wed, 7 Jan 2026 15:53:33 +0200 Subject: [PATCH 5/5] fix(ci): move defaults from build-ci back to Makefile/shell Signed-off-by: Eugene Doudine --- .github/workflows/ci-build.yaml | 3 --- Makefile | 7 ++++++- hack/update-manifests.sh | 27 ++++++++++++++++++++------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 503c41306973a..5954d34ef7924 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -15,9 +15,6 @@ env: # Golang version to use across CI steps # renovate: datasource=golang-version packageName=golang GOLANG_VERSION: '1.25.5' - IMAGE_REGISTRY: ${{ vars.IMAGE_REGISTRY || 'quay.io' }} - IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE || 'argoproj' }} - IMAGE_REPOSITORY: ${{ vars.IMAGE_REPOSITORY || 'argocd' }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/Makefile b/Makefile index 7d3dbee8cb5a3..6d402a864027e 100644 --- a/Makefile +++ b/Makefile @@ -219,9 +219,14 @@ else $(error IMAGE_NAMESPACE must be set when IMAGE_REGISTRY is set (e.g. IMAGE_NAMESPACE=argoproj)) endif else -# for backwards compatibility with the old way like IMAGE_NAMESPACE='quay.io/argoproj' 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 diff --git a/hack/update-manifests.sh b/hack/update-manifests.sh index 78d3a3efd1ea7..b388312372b6c 100755 --- a/hack/update-manifests.sh +++ b/hack/update-manifests.sh @@ -12,24 +12,37 @@ KUSTOMIZE=kustomize cd "${SRCROOT}/manifests/ha/base/redis-ha" && ./generate.sh -# Image repository configuration - can be overridden in forks +# Empty defaults - to avoid errors for unset env. variables IMAGE_REGISTRY="${IMAGE_REGISTRY:-}" IMAGE_NAMESPACE="${IMAGE_NAMESPACE:-}" -IMAGE_REPOSITORY="${IMAGE_REPOSITORY:-argocd}" IMAGE_TAG="${IMAGE_TAG:-}" +# Image repository configuration - can be overridden in forks +IMAGE_REPOSITORY="${IMAGE_REPOSITORY:-argocd}" + +# 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 # Note: keeping same logic as in Makefile for docker images FULL_IMAGE_NAME="${IMAGE_REPOSITORY}" if [[ -n $IMAGE_NAMESPACE ]]; then - # for backwards compatibility with the old way like IMAGE_NAMESPACE='quay.io/argoproj' FULL_IMAGE_NAME="${IMAGE_NAMESPACE}/${FULL_IMAGE_NAME}" fi 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 FULL_IMAGE_NAME="${IMAGE_REGISTRY}/${FULL_IMAGE_NAME}" fi