diff --git a/scripts/tendermint/all_start.sh b/scripts/tendermint/all_start.sh new file mode 100755 index 00000000..c11964c8 --- /dev/null +++ b/scripts/tendermint/all_start.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck > /dev/null && shellcheck "$0" + +# Find latest patch releases at https://hub.docker.com/r/tendermint/tendermint/tags/ +declare -a TM_VERSIONS +TM_VERSIONS[31]=v0.31.8 +TM_VERSIONS[32]=v0.32.3 + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +for KEY in "${!TM_VERSIONS[@]}"; do + export TENDERMINT_VERSION="${TM_VERSIONS[$KEY]}" + export TENDERMINT_PORT="111$KEY" + export TENDERMINT_NAME="tendermint-$KEY" + + echo "Starting $TENDERMINT_NAME ($TENDERMINT_VERSION) on port $TENDERMINT_PORT ..." + "$SCRIPT_DIR/start.sh" +done diff --git a/scripts/tendermint/all_stop.sh b/scripts/tendermint/all_stop.sh new file mode 100755 index 00000000..e82b4dab --- /dev/null +++ b/scripts/tendermint/all_stop.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck > /dev/null && shellcheck "$0" + +declare -a TM_VERSIONS +TM_VERSIONS[31]=v0.31.8 +TM_VERSIONS[32]=v0.32.3 + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +for KEY in "${!TM_VERSIONS[@]}"; do + export TENDERMINT_NAME="tendermint-$KEY" + + echo "Stopping $TENDERMINT_NAME ..." + "$SCRIPT_DIR/stop.sh" +done diff --git a/scripts/tendermint/start.sh b/scripts/tendermint/start.sh new file mode 100755 index 00000000..e7bd33f8 --- /dev/null +++ b/scripts/tendermint/start.sh @@ -0,0 +1,43 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck > /dev/null && shellcheck "$0" + +# Tendermint settings must be specified +# Choose version from https://hub.docker.com/r/tendermint/tendermint/tags/ +for SETTING in "TENDERMINT_VERSION" "TENDERMINT_PORT" "TENDERMINT_NAME" +do + if test -z "$(eval echo "\$$SETTING")" + then + echo "\$$SETTING must be set when running this script" + exit 1 + fi +done + +TMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tendermint.XXXXXXXXX") +chmod 777 "${TMP_DIR}" +echo "Using temporary dir $TMP_DIR" +LOGFILE="$TMP_DIR/tendermint.log" + +docker run --rm \ + --user="$UID" \ + -v "${TMP_DIR}:/tendermint" \ + "tendermint/tendermint:${TENDERMINT_VERSION}" \ + init + +# make sure we allow cors origins, only possible by modifying the config file +# https://github.com/tendermint/tendermint/issues/3216 +sed -ie 's/cors_allowed_origins.*$/cors_allowed_origins = ["*"]/' "${TMP_DIR}/config/config.toml" + +# must enable tx index for search and subscribe +docker run --rm \ + --user="$UID" \ + --name "$TENDERMINT_NAME" \ + -p "${TENDERMINT_PORT}:26657" -v "${TMP_DIR}:/tendermint" \ + -e "TM_TX_INDEX_INDEX_ALL_TAGS=true" \ + "tendermint/tendermint:${TENDERMINT_VERSION}" node \ + --proxy_app=kvstore \ + --rpc.laddr=tcp://0.0.0.0:26657 \ + --log_level=state:info,rpc:info,*:error \ + > "$LOGFILE" & + +echo "Tendermint running and logging into $LOGFILE" diff --git a/scripts/tendermint/stop.sh b/scripts/tendermint/stop.sh new file mode 100755 index 00000000..89692b82 --- /dev/null +++ b/scripts/tendermint/stop.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck > /dev/null && shellcheck "$0" + +NAME=${TENDERMINT_NAME:-tendermint-25} + +echo "Killing container named '$NAME' ..." +docker container kill "$NAME"