mirror of https://github.com/rancher/dashboard.git
86 lines
2.5 KiB
Bash
Executable File
86 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
DIR=$(cd $(dirname $0)/..; pwd)
|
|
|
|
# See `script/build-e2e`
|
|
DASHBOARD_DIST=${DIR}/dist
|
|
EMBER_DIST=${DIR}/dist_ember
|
|
|
|
# Image version
|
|
RANCHER_IMG_VERSION=head
|
|
|
|
# Docker volume args when mounting the locally-built UI into the container
|
|
VOLUME_ARGS="-v ${DASHBOARD_DIST}:/usr/share/rancher/ui-dashboard/dashboard -v ${EMBER_DIST}:/usr/share/rancher/ui"
|
|
|
|
# check if script invoke contains any argument. If so, adjust RANCHER_IMG_VERSION
|
|
if [ $# -eq 1 ]; then
|
|
RANCHER_IMG_VERSION=$1
|
|
# When an image is specified, we use that image, including its front-end, so we don't want the volume args to mount the locally-built UI
|
|
VOLUME_ARGS=""
|
|
fi
|
|
|
|
echo "Using Rancher image version: ${RANCHER_IMG_VERSION}"
|
|
|
|
# Configure the Rancher server URL from start, similarly to how chart installations work
|
|
# The special host.docker.internal domain only works for Docker Desktop, not plain Docker Engine on linux, so using the special IP 172.17.0.1 to access the gateway of the default bridge network
|
|
SERVER_URL="https://172.17.0.1"
|
|
|
|
# we are now enabling the "oidc-provider" feature flag on install because we will need it for e2e testing (not enabled by default in non-prime versions)
|
|
# "oidc-provider" feature flag needs a system restart so it's not feasible to enable it as part of the test
|
|
|
|
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 ${VOLUME_ARGS} \
|
|
-e CATTLE_UI_OFFLINE_PREFERRED=true \
|
|
-e CATTLE_BOOTSTRAP_PASSWORD=password \
|
|
-e CATTLE_PASSWORD_MIN_LENGTH=3 \
|
|
-e CATTLE_SERVER_URL="${SERVER_URL}" \
|
|
-e CATTLE_DEBUG=true \
|
|
-e CATTLE_TRACE=true \
|
|
--name cypress \
|
|
--privileged \
|
|
rancher/rancher:${RANCHER_IMG_VERSION} \
|
|
--features=oidc-provider=true
|
|
|
|
docker ps
|
|
|
|
echo "Waiting for dashboard UI to be reachable (initial 20s wait) ..."
|
|
|
|
sleep 20
|
|
|
|
echo "Waiting for dashboard UI to be reachable ..."
|
|
|
|
okay=0
|
|
|
|
while [ $okay -lt 30 ]; do
|
|
STATUS=$(curl --silent --head -k https://127.0.0.1/dashboard/ | awk '/^HTTP/{print $2}')
|
|
|
|
echo "Status: $STATUS (Try: $okay)"
|
|
|
|
okay=$((okay+1))
|
|
|
|
if [ "$STATUS" == "200" ]; then
|
|
okay=100
|
|
else
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
if [ "$STATUS" != "200" ]; then
|
|
echo "Dashboard did not become available in a reasonable time"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Dashboard UI is ready"
|
|
|
|
echo "Waiting for webhook to be running..."
|
|
okay=0
|
|
while [ $okay -lt 30 ] ; do
|
|
if docker exec cypress kubectl -n cattle-system get po -l app=rancher-webhook | grep -q '1/1.*Running' ; then
|
|
break
|
|
else
|
|
echo "Webhook not ready, checking again in 10s..."
|
|
okay=$((okay+1))
|
|
sleep 10
|
|
fi
|
|
done
|
|
echo "Rancher is ready"
|