diff --git a/common/Makefile b/common/Makefile index fb0ac95ea..2db611852 100644 --- a/common/Makefile +++ b/common/Makefile @@ -25,12 +25,15 @@ EXTRA_PLAYBOOK_OPTS ?= # INDEX_IMAGES=registry-proxy.engineering.redhat.com/rh-osbs/iib:394248,registry-proxy.engineering.redhat.com/rh-osbs/iib:394249 INDEX_IMAGES ?= -TARGET_ORIGIN ?= origin +# git branch --show-current is also available as of git 2.22, but we will use this for compatibility +TARGET_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD) + +#default to the branch remote +TARGET_ORIGIN ?= $(shell git config branch.$(TARGET_BRANCH).remote) + # This is to ensure that whether we start with a git@ or https:// URL, we end up with an https:// URL # This is because we expect to use tokens for repo authentication as opposed to SSH keys TARGET_REPO=$(shell git ls-remote --get-url --symref $(TARGET_ORIGIN) | sed -e 's/.*URL:[[:space:]]*//' -e 's%^git@%%' -e 's%^https://%%' -e 's%:%/%' -e 's%^%https://%') -# git branch --show-current is also available as of git 2.22, but we will use this for compatibility -TARGET_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD) UUID_FILE ?= ~/.config/validated-patterns/pattern-uuid UUID_HELM_OPTS ?= diff --git a/common/scripts/argocd-login.sh b/common/scripts/argocd-login.sh new file mode 100755 index 000000000..99512c57c --- /dev/null +++ b/common/scripts/argocd-login.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +## Login to validated patterns argocd instances + +# Detect Argo CD namespaces +ARGOCD_NAMESPACES=$(oc get argoCD -A -o jsonpath='{.items[*].metadata.namespace}') +if [ -z "$ARGOCD_NAMESPACES" ]; then + echo "Error: No Argo CD instances found in the cluster." + exit 1 +fi + +# Split the namespaces into an array +NAMESPACES=($ARGOCD_NAMESPACES) + +# Check if there are at least two Argo CD instances +if [ ${#NAMESPACES[@]} -lt 2 ]; then + echo "Error: Less than two Argo CD instances found. Found instances in namespaces: $ARGOCD_NAMESPACES" + exit 1 +fi + + +for NAMESPACE in ${NAMESPACES[@]}; do + # get the instance name + ARGOCD_INSTANCE=$(oc get argocd -n "$NAMESPACE" -o jsonpath='{.items[0].metadata.name}') # assume only one per NS + SERVER_URL=$(oc get route "$ARGOCD_INSTANCE"-server -n "$NAMESPACE" -o jsonpath='{.status.ingress[0].host}') + PASSWORD=$(oc get secret "$ARGOCD_INSTANCE"-cluster -n "$NAMESPACE" -o jsonpath='{.data.admin\.password}' | base64 -d) + echo $PASSWORD + argocd login --skip-test-tls --insecure --grpc-web "$SERVER_URL" --username "admin" --password "$PASSWORD" + if [ "$?" -ne 0 ]; then + echo "Login to Argo CD ${SERVER_URL} failed. Exiting." + exit 1 + fi + +done