Deployment to both, dev and staging environments. Automatic contract address update in demo. Refactor sh scripts. .env files splitted on particular enviornments

This commit is contained in:
Kirill Fedoseev 2019-09-01 12:41:06 +03:00
parent c3a495e1ea
commit ed25ca9c68
13 changed files with 133 additions and 79 deletions

1
.gitignore vendored
View File

@ -8,6 +8,7 @@ data/
demo/validator*/db
demo/validator*/keys
demo/validator*/queue
demo/validator*/.keys
demo/ganache_home_db/
demo/ganache_side_db/
src/deploy/deploy-home/build/

View File

@ -3,15 +3,23 @@
set -e
cd $(dirname "$0")
cd ..
# either development or staging
TARGET_NETWORK=${TARGET_NETWORK:=development}
start_blockchains() {
DEPLOY_DIR="`pwd`/src/deploy"
DEMO_DIR="`pwd`/demo"
SIDE_GANACHE_DB="$DEMO_DIR/ganache_side_db"
HOME_GANACHE_DB="$DEMO_DIR/ganache_home_db"
start_dev_blockchain_networks() {
echo "Starting side test blockchain"
docker kill ganache_side > /dev/null 2>&1 || true
docker network create blockchain_side > /dev/null 2>&1 || true
docker run -d --network blockchain_side --rm --name ganache_side -v "$side_db_mount_point:/app/db" \
docker run -d --network blockchain_side --rm --name ganache_side -v "$SIDE_GANACHE_DB:/app/db" \
trufflesuite/ganache-cli:latest \
-m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q --db /app/db
@ -19,91 +27,111 @@ start_blockchains() {
docker kill ganache_home > /dev/null 2>&1 || true
docker network create blockchain_home > /dev/null 2>&1 || true
docker run -d --network blockchain_home --rm --name ganache_home -v "$home_db_mount_point:/app/db" \
docker run -d --network blockchain_home --rm --name ganache_home -v "$HOME_GANACHE_DB:/app/db" \
trufflesuite/ganache-cli:latest \
-m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 44 -q --db /app/db
sleep 4
}
deploy_all() {
cd ../src/deploy
deploy_token() {
echo "Compiling and deploying erc20"
source .keys
echo "Building deploy docker image"
docker build -t deploy_test "$DEPLOY_DIR/deploy-test" > /dev/null 2>&1
TOKEN_ADDRESS=$(source ./deploy-home/.env; echo "$TOKEN_ADDRESS")
if [[ "$TARGET_NETWORK" == "development" ]] || [[ "$TOKEN_ADDRESS" == "0x" ]]; then
echo "Compiling and deploying erc20"
cd ./deploy-test
echo "Building deploy docker image"
docker build -t deploy_test . > /dev/null 2>&1
echo "Deploying"
TOKEN_ADDRESS=$(docker run --network blockchain_home --rm --env-file .env -e "PRIVATE_KEY=$PRIVATE_KEY_KOVAN" deploy_test --network "$TARGET_NETWORK" 2>&1 \
| grep "contract address" \
| awk '{print $4}')
sed -i 's/TOKEN_ADDRESS=0x$/TOKEN_ADDRESS='"$TOKEN_ADDRESS"'/' ../deploy-home/.env
cd ..
fi
echo "Deploying"
TOKEN_ADDRESS=$(docker run --network blockchain_home --rm --env-file "$DEPLOY_DIR/deploy-test/.env" -e "PRIVATE_KEY=$PRIVATE_KEY_KOVAN" \
deploy_test \
--network "$TARGET_NETWORK" 2>&1 \
| grep "contract address" \
| awk '{print $4}')
}
deploy_bridge() {
echo "Compiling and deploying home part"
cd ./deploy-home
echo "Building deploy docker image"
docker build -t deploy_home . > /dev/null 2>&1
docker build -t deploy_home "$DEPLOY_DIR/deploy-home" > /dev/null 2>&1
echo "Deploying"
BRIDGE_ADDRESS=$(docker run --network blockchain_home --rm --env-file .env -e "PRIVATE_KEY=$PRIVATE_KEY_KOVAN" deploy_home --network "$TARGET_NETWORK" 2>&1 \
BRIDGE_ADDRESS=$(docker run --network blockchain_home --rm --env-file "$DEPLOY_DIR/deploy-home/.env" -e "PRIVATE_KEY=$PRIVATE_KEY_KOVAN" \
deploy_home \
--network "$TARGET_NETWORK" 2>&1 \
| grep "contract address" \
| awk '{print $4}')
}
deploy_db() {
echo "Compiling and deploying side part"
cd ../deploy-side
echo "Building deploy docker image"
docker build -t deploy_side . > /dev/null 2>&1
docker build -t deploy_side "$DEPLOY_DIR/deploy-side" > /dev/null 2>&1
echo "Deploying"
SHARED_DB_ADDRESS=$(docker run --network blockchain_side --rm --env-file .env -e "PRIVATE_KEY=$PRIVATE_KEY_SOKOL" deploy_side --network "$TARGET_NETWORK" 2>&1 \
SHARED_DB_ADDRESS=$(docker run --network blockchain_side --rm --env-file "$DEPLOY_DIR/deploy-side/.env" -e "PRIVATE_KEY=$PRIVATE_KEY_SOKOL" \
deploy_side \
--network "$TARGET_NETWORK" 2>&1 \
| grep "contract address" \
| awk '{print $4}')
}
deploy_all() {
cd "$DEPLOY_DIR"
source "$DEPLOY_DIR/.keys"
TOKEN_ADDRESS=$(source "$DEPLOY_DIR/deploy-home/.env"; echo "$TOKEN_ADDRESS")
if [[ "$TARGET_NETWORK" == "development" ]] || [[ "$TOKEN_ADDRESS" == "0x" ]]; then
deploy_token
sed -i 's/TOKEN_ADDRESS=0x$/TOKEN_ADDRESS='"$TOKEN_ADDRESS"'/' "$DEPLOY_DIR/deploy-home/.env"
fi
deploy_bridge
deploy_db
echo "Token contract address in $TARGET_NETWORK network is $TOKEN_ADDRESS"
echo "Bridge contract address in $TARGET_NETWORK network is $BRIDGE_ADDRESS"
echo "Database contract address in $TARGET_NETWORK side network is $SHARED_DB_ADDRESS"
echo "Updating deployed contract addresses in demo validators .env.$TARGET_NETWORK configs"
for file in "$DEMO_DIR"/validator*/.env."$TARGET_NETWORK"; do
sed -i 's/TOKEN_ADDRESS=.*$/TOKEN_ADDRESS='"$TOKEN_ADDRESS"'/' "$file"
sed -i 's/BRIDGE_ADDRESS=.*$/BRIDGE_ADDRESS='"$BRIDGE_ADDRESS"'/' "$file"
sed -i 's/SHARED_DB_ADDRESS=.*$/SHARED_DB_ADDRESS='"$SHARED_DB_ADDRESS"'/' "$file"
done
}
if [[ "$TARGET_NETWORK" == "development" ]]; then
if [[ -z "$(ls -A ganache_side_db)" ]] || [[ -z "$(ls -A ganache_home_db)" ]]; then
if [[ ! -d "$SIDE_GANACHE_DB" ]]; then
mkdir "$SIDE_GANACHE_DB"
fi
if [[ ! -d "$HOME_GANACHE_DB" ]]; then
mkdir "$HOME_GANACHE_DB"
fi
if [[ -z "$(ls -A "$SIDE_GANACHE_DB")" ]] || [[ -z "$(ls -A "$HOME_GANACHE_DB")" ]]; then
echo "Starting dev blockchain networks and deploying contracts"
need_to_deploy=true
else
echo "Restarting dev blockchain networks"
fi
side_db_mount_point="$(pwd)/ganache_side_db"
if [[ ! -d "$side_db_mount_point" ]]; then
mkdir "$side_db_mount_point"
fi
home_db_mount_point="$(pwd)/ganache_home_db"
if [[ ! -d "$home_db_mount_point" ]]; then
mkdir "$home_db_mount_point"
fi
start_blockchains
start_dev_blockchain_networks
if [[ -n "$need_to_deploy" ]]; then
deploy_all
else
echo "Contracts are already deployed, run clean.sh first if you want to redeploy everything"
fi
else
echo "Deploying to staging blockchain environment"
source ../src/deploy/.keys
echo "Deploying to the staging blockchain environment"
deploy_all
fi

View File

@ -11,4 +11,7 @@ echo "Starting $NAME"
mkdir -p "$NAME"
cd "$NAME"
if [[ -e .keys ]]; then
source .keys
fi
docker-compose -p "$NAME" -f ../../src/oracle/docker-compose-test.yml up ${DCU_FLAGS}

View File

@ -1,17 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
FOREIGN_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=2be3f252e16541bf1bb2d4a517d2bf173e6d09f2d765d32c64dc50515aec63ea
#VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5001

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=https://kovan.infura.io/v3/5d7bd94c50ed43fab1cb8e74f58678b0
HOME_CHAIN_ID=42
HOME_BRIDGE_ADDRESS=0x646D46A206c5bb38E925C9Ef148383f317F29466
HOME_TOKEN_ADDRESS=0xFe175c723ca2CB997D0EC000309e2da69B173381
SIDE_RPC_URL=https://sokol.poa.network
SIDE_CHAIN_ID=77
SIDE_SHARED_DB_ADDRESS=0x6FA32e5fC249476E46D695722eAd9E82F4B316f6

View File

@ -1,17 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
FOREIGN_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=e59d58c77b791f98f10187117374ae9c589d48a62720ec6a5e142b0cc134f685
#VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5002

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=https://kovan.infura.io/v3/5d7bd94c50ed43fab1cb8e74f58678b0
HOME_CHAIN_ID=42
HOME_BRIDGE_ADDRESS=0x646D46A206c5bb38E925C9Ef148383f317F29466
HOME_TOKEN_ADDRESS=0xFe175c723ca2CB997D0EC000309e2da69B173381
SIDE_RPC_URL=https://sokol.poa.network
SIDE_CHAIN_ID=77
SIDE_SHARED_DB_ADDRESS=0x6FA32e5fC249476E46D695722eAd9E82F4B316f6

View File

@ -1,17 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
FOREIGN_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=afaa4d4d6e54d25b0bf0361e3fd6cef562f6311bf6200de2dd0aa4cab63ae3b5
#VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5003

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
HOME_TOKEN_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc

View File

@ -0,0 +1,8 @@
HOME_RPC_URL=https://kovan.infura.io/v3/5d7bd94c50ed43fab1cb8e74f58678b0
HOME_CHAIN_ID=42
HOME_BRIDGE_ADDRESS=0x646D46A206c5bb38E925C9Ef148383f317F29466
HOME_TOKEN_ADDRESS=0xFe175c723ca2CB997D0EC000309e2da69B173381
SIDE_RPC_URL=https://sokol.poa.network
SIDE_CHAIN_ID=77
SIDE_SHARED_DB_ADDRESS=0x6FA32e5fC249476E46D695722eAd9E82F4B316f6

View File

@ -4,8 +4,9 @@ RPC_URL_DEV=http://ganache_home:8545
#PRIVATE_KEY is taken from PRIVATE_KEY_KOVAN in src/deploy/.keys
PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27
#Set to empty address '0x' for redeployment of token contract in staging environment
TOKEN_ADDRESS=0xBAD4DD5dA696b1B59932a33c33737ea63438536F
#Set to '0x' for redeployment of token contract in staging environment
TOKEN_ADDRESS=0xFe175c723ca2CB997D0EC000309e2da69B173381
TOKEN_ADDRESS_DEV=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
VALIDATOR_ADDRESS_1=0x99Eb3D86663c6Db090eFFdBC20510Ca9f836DCE3