0g-chain/networks/devnet/deploy.sh

91 lines
2.4 KiB
Bash
Raw Normal View History

2024-05-01 09:00:05 +00:00
#!/bin/bash
function help() {
echo "Usage: deploy.sh IP1 [options]"
echo ""
echo " -i Identity file"
echo " -k Keyring password to create key (for Linux only)"
2024-05-03 15:14:04 +00:00
echo " -n Network (default: devnet)"
2024-05-01 09:00:05 +00:00
echo " -c Chain ID (default: \"zgtendermint_16600-1\")"
echo " -v schedule end time (unix epoch) for vesting accounts"
2024-05-01 09:00:05 +00:00
echo ""
}
if [[ $# -eq 0 ]]; then
help
exit 1
fi
set -e
IP_LIST=$1
shift
PEM_FLAG=""
KEYRING_PASSWORD=""
2024-05-03 15:14:04 +00:00
NETWORK="devnet"
2024-06-18 10:08:11 +00:00
TAG_OR_BRANCH="testnet/v0.2.x"
2024-05-01 09:00:05 +00:00
INIT_GENESIS_ENV=""
VESTING_ACCOUNT_END_TIME=0
2024-05-01 09:00:05 +00:00
while [[ $# -gt 0 ]]; do
case $1 in
-i)
PEM_FLAG="-i $2";
shift; shift
;;
-k)
KEYRING_PASSWORD=$2;
shift; shift
;;
-n)
NETWORK=$2
INIT_GENESIS_ENV="$INIT_GENESIS_ENV export ROOT_DIR=$2;"
shift; shift
;;
-c)
INIT_GENESIS_ENV="$INIT_GENESIS_ENV export CHAIN_ID=$2;"
shift; shift
;;
-v)
2024-06-19 05:28:13 +00:00
INIT_GENESIS_ENV="$INIT_GENESIS_ENV export VESTING_ACCOUNT_END_TIME=$2;"
shift; shift
;;
2024-05-01 09:00:05 +00:00
*)
help
echo "Unknown flag passed: \"$1\""
exit 1
;;
esac
done
if [[ $VESTING_ACCOUNT_END_TIME -eq 0 ]]; then
help
echo "schedule end time (unix epoch) for vesting accounts should be set!"
exit 1
fi
2024-05-01 09:00:05 +00:00
IFS=","; declare -a IPS=($IP_LIST); unset IFS
NUM_NODES=${#IPS[@]}
# Install dependent libraries and binary
for ((i=0; i<$NUM_NODES; i++)) do
2024-06-18 10:08:11 +00:00
ssh $PEM_FLAG ubuntu@${IPS[$i]} "rm -rf 0g-chain; git clone https://github.com/0glabs/0g-chain.git; cd 0g-chain; git checkout $TAG_OR_BRANCH; ./networks/$NETWORK/install.sh"
2024-05-01 09:00:05 +00:00
done
# Create genesis config on node0
2024-06-18 10:08:11 +00:00
ssh $PEM_FLAG ubuntu@${IPS[0]} "cd 0g-chain/networks/$NETWORK; $INIT_GENESIS_ENV ./init-genesis.sh $IP_LIST $KEYRING_PASSWORD; tar czf ~/$NETWORK.tar.gz $NETWORK; rm -rf $NETWORK"
2024-05-01 09:00:05 +00:00
scp $PEM_FLAG ubuntu@${IPS[0]}:$NETWORK.tar.gz .
ssh $PEM_FLAG ubuntu@${IPS[0]} "rm $NETWORK.tar.gz"
# Copy genesis config to remote nodes
tar xzf $NETWORK.tar.gz
rm $NETWORK.tar.gz
cd $NETWORK
for ((i=0; i<$NUM_NODES; i++)) do
tar czf node$i.tar.gz node$i
scp $PEM_FLAG node$i.tar.gz ubuntu@${IPS[$i]}:~
2024-06-18 10:08:11 +00:00
ssh $PEM_FLAG ubuntu@${IPS[$i]} "rm -rf 0gchaind-$NETWORK; tar xzf node$i.tar.gz; rm node$i.tar.gz; mv node$i 0gchaind-$NETWORK"
2024-05-01 09:00:05 +00:00
rm node$i.tar.gz
done
echo -e "\n\nSucceeded to deploy on $NUM_NODES nodes!\n"