Files
keycloak/misc/scripts/kcw
Stian Thorgersen c089a3a6fe Add support to use kcw with remote test server
Closes #44312

Signed-off-by: stianst <stianst@gmail.com>
2025-11-19 20:43:42 +01:00

162 lines
5.2 KiB
Bash
Executable File

#!/bin/bash -e
KC_DIR=~/kc
if [ "$KC_SRC_HOME" != "" ]; then
SRC_DIR="$KC_SRC_HOME"
else
SRC_DIR=$(readlink -f "$0" | sed 's|/misc/scripts/kcw||')
fi
DL_DIR=~/Downloads
ARGS=""
while [ "$1" != "" ]; do
if [ "$1" == "dev" ]; then
INSTALL="dev"
elif [ "$1" == "dev-build" ]; then
INSTALL="dev"
BUILD=1
elif [ "$1" == "rel" ]; then
INSTALL=$(curl --silent https://api.github.com/repos/keycloak/keycloak/releases/latest | jq -r .tag_name)
elif [[ "$1" =~ "rel=" ]]; then
INSTALL=`echo $1 | cut -d '=' -f 2`
elif [ "$1" == "nightly" ]; then
INSTALL="nightly"
elif [ "$1" = "help" ]; then
echo "Usage: kcw [command] [kc commands]"
echo " dev install from local fork"
echo " dev-build build and install from local fork"
echo " nightly install nightly release"
echo " rel install latest release"
echo " rel[=version] install specific version"
echo ""
echo "Environment variables:"
echo " KCW_PROVIDERS comma separated list of providers to install"
echo " KCW_CONFIGS comma separated list of config files to install"
echo ""
echo "Examples:"
echo " Start existing install: kcw start-dev"
echo " Install nightly and start: kcw nightly start-dev --cluster=none"
exit
else
ARGS="$ARGS $1"
fi
shift
done
echo "###########################################################################################"
echo "Installing: $INSTALL"
echo "Executing: bin/kc.sh$ARGS"
echo "###########################################################################################"
if [ "$INSTALL" != "" ]; then
# Clean current install
PID=$(ps -e -wwf | grep java | grep "$KC_DIR" | awk '{ print $2 }')
if [ "$PID" != "" ]; then
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Killing existing install"
echo "-------------------------------------------------------------------------------------------"
kill -9 $PID
echo "Killed: $PID"
fi
if [ -d $KC_DIR ]; then
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Deleting existing install"
echo "-------------------------------------------------------------------------------------------"
rm -rf $KC_DIR
echo "Deleted $KC_DIR"
fi
if [ "$INSTALL" == "dev" ]; then
VERSION=$(cat $SRC_DIR/pom.xml | grep '<version>' | head -n 2 | tail -n 1 | cut -d '>' -f 2 | cut -d '<' -f 1)
if [ "$BUILD" ]; then
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Building"
echo "-------------------------------------------------------------------------------------------"
#mvn -pl quarkus/dist -am -DskipTests -f $SRC_DIR/pom.xml -T 1C --offline clean install
cd $SRC_DIR
./mvnw -T 1C -Dmaven.build.cache.enabled=true -DskipTests -DskipTestsuite -DskipExamples -DskipAdapters -DskipDocs install
fi
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Installing"
echo "-------------------------------------------------------------------------------------------"
cd /tmp/
unzip -q $SRC_DIR/quarkus/dist/target/keycloak-$VERSION.zip
mv keycloak-$VERSION $KC_DIR
echo "Built and installed $VERSION from $SRC_DIR"
else
VERSION=$INSTALL
if [ "$INSTALL" == "nightly" ]; then
VERSION=999.0.0-SNAPSHOT
fi
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Installing"
echo "-------------------------------------------------------------------------------------------"
cd $DL_DIR
if [ -f keycloak-$VERSION.zip ]; then
if ( ! md5sum keycloak-$VERSION.zip | grep $(wget -q -O - https://github.com/keycloak/keycloak/releases/download/$INSTALL/keycloak-$VERSION.zip.md5) &>/dev/null ); then
echo "Checksum doesn't match deleting keycloak-$VERSION.zip"
rm keycloak-$VERSION.zip
fi
fi
if [ ! -f keycloak-$VERSION.zip ]; then
cd $DL_DIR
echo "Downloading keycloak-$VERSION.zip"
wget -q https://github.com/keycloak/keycloak/releases/download/$INSTALL/keycloak-$VERSION.zip
fi
cd /tmp/
unzip -q $DL_DIR/keycloak-$VERSION.zip
mv keycloak-$VERSION $KC_DIR
echo "Installed $VERSION"
fi
fi
if [ "$KCW_PROVIDERS" != "" ]; then
for PROVIDER in $(echo "$KCW_PROVIDERS" | tr "," "\n"); do
cp "$PROVIDER" $KC_DIR/providers/
echo "Installed provider: $PROVIDER"
done
fi
if [ "$KCW_CONFIGS" != "" ]; then
for CONFIG in $(echo "$KCW_CONFIGS" | tr "," "\n"); do
cp "$CONFIG" $KC_DIR/conf/
echo "Installed config file: $CONFIG"
done
fi
if [ "$ARGS" != "" ]; then
echo ""
echo "-------------------------------------------------------------------------------------------"
echo "Running: bin/kc.sh$ARGS"
echo "-------------------------------------------------------------------------------------------"
export KC_BOOTSTRAP_ADMIN_USERNAME=admin
export KC_BOOTSTRAP_ADMIN_PASSWORD=admin
export KC_BOOTSTRAP_ADMIN_CLIENT_ID=admin
export KC_BOOTSTRAP_ADMIN_CLIENT_SECRET=admin
cd $KC_DIR/bin
./kc.sh $ARGS
fi