mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-02 16:21:42 +00:00
* #7550 Use existing code from @jimmygchen in #7530 and modify for genesis sync test. Thanks @jimmygchen !
97 lines
3.3 KiB
Bash
Executable File
97 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Requires `docker`, `kurtosis`, `yq`
|
|
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
ENCLAVE_NAME=local-testnet
|
|
NETWORK_PARAMS_FILE=$SCRIPT_DIR/network_params.yaml
|
|
ETHEREUM_PKG_VERSION=main
|
|
|
|
BUILD_IMAGE=true
|
|
BUILDER_PROPOSALS=false
|
|
CI=false
|
|
KEEP_ENCLAVE=false
|
|
RUN_ASSERTOOR_TESTS=false
|
|
|
|
# Get options
|
|
while getopts "e:b:n:phcak" flag; do
|
|
case "${flag}" in
|
|
a) RUN_ASSERTOOR_TESTS=true;;
|
|
e) ENCLAVE_NAME=${OPTARG};;
|
|
b) BUILD_IMAGE=${OPTARG};;
|
|
n) NETWORK_PARAMS_FILE=${OPTARG};;
|
|
p) BUILDER_PROPOSALS=true;;
|
|
c) CI=true;;
|
|
k) KEEP_ENCLAVE=true;;
|
|
h)
|
|
echo "Start a local testnet with kurtosis."
|
|
echo
|
|
echo "usage: $0 <Options>"
|
|
echo
|
|
echo "Options:"
|
|
echo " -e: enclave name default: $ENCLAVE_NAME"
|
|
echo " -b: whether to build Lighthouse docker image default: $BUILD_IMAGE"
|
|
echo " -n: kurtosis network params file path default: $NETWORK_PARAMS_FILE"
|
|
echo " -p: enable builder proposals"
|
|
echo " -c: CI mode, run without other additional services like Grafana and Dora explorer"
|
|
echo " -a: run Assertoor tests"
|
|
echo " -k: keeping enclave to allow starting the testnet without destroying the existing one"
|
|
echo " -h: this help"
|
|
exit
|
|
;;
|
|
esac
|
|
done
|
|
|
|
LH_IMAGE_NAME=$(yq eval ".participants[0].cl_image" $NETWORK_PARAMS_FILE)
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "Docker is not installed. Please install Docker and try again."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v kurtosis &> /dev/null; then
|
|
echo "kurtosis command not found. Please install kurtosis and try again."
|
|
exit
|
|
fi
|
|
|
|
if ! command -v yq &> /dev/null; then
|
|
echo "yq not found. Please install yq and try again."
|
|
fi
|
|
|
|
if [ "$BUILDER_PROPOSALS" = true ]; then
|
|
yq eval '.participants[0].vc_extra_params = ["--builder-proposals"]' -i $NETWORK_PARAMS_FILE
|
|
echo "--builder-proposals VC flag added to network_params.yaml"
|
|
fi
|
|
|
|
if [ "$CI" = true ]; then
|
|
yq eval '.additional_services = []' -i $NETWORK_PARAMS_FILE
|
|
echo "Running without additional services (CI mode)."
|
|
fi
|
|
|
|
if [ "$RUN_ASSERTOOR_TESTS" = true ]; then
|
|
yq eval '.additional_services += ["assertoor"] | .additional_services |= unique' -i $NETWORK_PARAMS_FILE
|
|
# The available tests can be found in the `assertoor_params` section:
|
|
# https://github.com/ethpandaops/ethereum-package?tab=readme-ov-file#configuration
|
|
yq eval '.assertoor_params = {"run_stability_check": true, "run_block_proposal_check": true, "run_transaction_test": true, "run_blob_transaction_test": true}' -i $NETWORK_PARAMS_FILE
|
|
echo "Assertoor has been added to $NETWORK_PARAMS_FILE."
|
|
fi
|
|
|
|
if [ "$BUILD_IMAGE" = true ]; then
|
|
echo "Building Lighthouse Docker image."
|
|
ROOT_DIR="$SCRIPT_DIR/../.."
|
|
docker build --build-arg FEATURES=portable,spec-minimal -f $ROOT_DIR/Dockerfile -t $LH_IMAGE_NAME $ROOT_DIR
|
|
else
|
|
echo "Not rebuilding Lighthouse Docker image."
|
|
fi
|
|
|
|
if [ "$KEEP_ENCLAVE" = false ]; then
|
|
# Stop local testnet
|
|
kurtosis enclave rm -f $ENCLAVE_NAME 2>/dev/null || true
|
|
fi
|
|
|
|
kurtosis run --enclave $ENCLAVE_NAME github.com/ethpandaops/ethereum-package@$ETHEREUM_PKG_VERSION --args-file $NETWORK_PARAMS_FILE
|
|
|
|
echo "Started!"
|