* E2E: Use standalone Image Renderer for tests instead of plugin * E2E: Allow configuring image renderer version if needed
104 lines
2.8 KiB
Bash
Executable File
104 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
|
|
. scripts/grafana-server/variables
|
|
|
|
PORT=${PORT:-$DEFAULT_PORT}
|
|
ARCH=${ARCH:-$DEFAULT_ARCH}
|
|
|
|
if [ "$ARCH" ]; then
|
|
ARCH+="/"
|
|
fi
|
|
|
|
./scripts/grafana-server/kill-server
|
|
|
|
docker ps -q --filter "name=grafana-image-renderer" | xargs docker stop || true
|
|
|
|
mkdir $RUNDIR
|
|
|
|
echo -e "Copying grafana backend files to temp dir..."
|
|
|
|
if [[ ! -f bin/"$ARCH"grafana-server ]]; then
|
|
echo "bin/linux-amd64/grafana-server missing, trying local grafana-server binary"
|
|
fi
|
|
|
|
echo starting server
|
|
|
|
# air now deletes the binary, so we check if we need to build it before trying to start the server
|
|
# see https://github.com/air-verse/air/issues/525
|
|
# if this gets resolved, we could remove the go build and rely on the binary being present as before
|
|
if [[ ! -f ./bin/"$ARCH"grafana ]]; then
|
|
make GO_BUILD_DEV=1 build-go
|
|
fi
|
|
|
|
cp -r ./bin $RUNDIR
|
|
cp -r ./tools $RUNDIR
|
|
ln -s $(realpath ./public) $RUNDIR
|
|
|
|
|
|
mkdir $RUNDIR/conf
|
|
mkdir $PROV_DIR
|
|
mkdir $PROV_DIR/datasources
|
|
mkdir $PROV_DIR/dashboards
|
|
mkdir $PROV_DIR/alerting
|
|
mkdir $PROV_DIR/plugins
|
|
|
|
cp ./scripts/grafana-server/custom.ini $RUNDIR/conf/custom.ini
|
|
cp ./conf/defaults.ini $RUNDIR/conf/defaults.ini
|
|
|
|
echo -e "Copying custom plugins from e2e tests"
|
|
|
|
mkdir -p "$RUNDIR/data/plugins"
|
|
|
|
if [ -d "./e2e-playwright/test-plugins" ]; then
|
|
ln -s $(realpath ./e2e-playwright/test-plugins/*) "$RUNDIR/data/plugins"
|
|
# when running in CI
|
|
elif [ -d "../e2e-playwright/test-plugins" ]; then
|
|
cp -r "../e2e-playwright/test-plugins" "$RUNDIR/data/plugins"
|
|
fi
|
|
|
|
if [ "$START_IMAGE_RENDERER" ]; then
|
|
echo -e "Starting image renderer container"
|
|
docker run -d --rm --name=grafana-image-renderer -p ${IR_DEFAULT_PORT}:${IR_DEFAULT_PORT} grafana/grafana-image-renderer:${IMAGE_RENDERER_VERSION:-latest}
|
|
|
|
if [[ "$(uname)" == "Darwin" ]]; then
|
|
DOCKER_HOST="host.docker.internal"
|
|
echo "Detected Mac host, using $DOCKER_HOST as the Docker host"
|
|
else
|
|
DOCKER_HOST="172.17.0.1"
|
|
echo "Detected Linux host, using $DOCKER_HOST as the Docker host"
|
|
fi
|
|
fi
|
|
|
|
echo -e "Copy provisioning setup from devenv"
|
|
|
|
cp devenv/datasources.yaml $PROV_DIR/datasources
|
|
cp devenv/dashboards.yaml $PROV_DIR/dashboards
|
|
cp devenv/alert_rules.yaml $PROV_DIR/alerting
|
|
cp devenv/plugins.yaml $PROV_DIR/plugins
|
|
|
|
cp -r devenv $RUNDIR
|
|
|
|
echo -e "Starting Grafana server port $PORT"
|
|
|
|
# We get a lot of "context canceled" errors from navigating away from pages,
|
|
# so filter them out because they're not useful
|
|
{
|
|
CMD=(
|
|
"$RUNDIR/bin/${ARCH}grafana" server
|
|
--homepath="$HOME_PATH"
|
|
--pidfile="$RUNDIR/pid"
|
|
cfg:server.http_port="$PORT"
|
|
cfg:enterprise.license_path="$1"
|
|
)
|
|
|
|
if [ "$START_IMAGE_RENDERER" ]; then
|
|
CMD+=(
|
|
cfg:rendering.callback_url="http://$DOCKER_HOST:$PORT"
|
|
cfg:rendering.server_url="http://localhost:$IR_DEFAULT_PORT/render"
|
|
)
|
|
fi
|
|
|
|
exec "${CMD[@]}" 2>&1
|
|
} | grep -v -i "context canceled"
|