mirror of
https://github.com/keycloak/keycloak.git
synced 2025-12-21 06:20:05 -06:00
162 lines
5.2 KiB
Bash
Executable File
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
|