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*/db
demo/validator*/keys demo/validator*/keys
demo/validator*/queue demo/validator*/queue
demo/validator*/.keys
demo/ganache_home_db/ demo/ganache_home_db/
demo/ganache_side_db/ demo/ganache_side_db/
src/deploy/deploy-home/build/ src/deploy/deploy-home/build/

View File

@ -3,15 +3,23 @@
set -e set -e
cd $(dirname "$0") cd $(dirname "$0")
cd ..
# either development or staging
TARGET_NETWORK=${TARGET_NETWORK:=development} 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" echo "Starting side test blockchain"
docker kill ganache_side > /dev/null 2>&1 || true docker kill ganache_side > /dev/null 2>&1 || true
docker network create blockchain_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 \ trufflesuite/ganache-cli:latest \
-m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q --db /app/db -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 kill ganache_home > /dev/null 2>&1 || true
docker network create blockchain_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 \ trufflesuite/ganache-cli:latest \
-m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 44 -q --db /app/db -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 44 -q --db /app/db
sleep 4 sleep 4
} }
deploy_all() { deploy_token() {
cd ../src/deploy 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") echo "Deploying"
TOKEN_ADDRESS=$(docker run --network blockchain_home --rm --env-file "$DEPLOY_DIR/deploy-test/.env" -e "PRIVATE_KEY=$PRIVATE_KEY_KOVAN" \
if [[ "$TARGET_NETWORK" == "development" ]] || [[ "$TOKEN_ADDRESS" == "0x" ]]; then deploy_test \
echo "Compiling and deploying erc20" --network "$TARGET_NETWORK" 2>&1 \
| grep "contract address" \
cd ./deploy-test | awk '{print $4}')
}
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
deploy_bridge() {
echo "Compiling and deploying home part" echo "Compiling and deploying home part"
cd ./deploy-home
echo "Building deploy docker image" 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" 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" \ | grep "contract address" \
| awk '{print $4}') | awk '{print $4}')
}
deploy_db() {
echo "Compiling and deploying side part" echo "Compiling and deploying side part"
cd ../deploy-side
echo "Building deploy docker image" 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" 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" \ | grep "contract address" \
| awk '{print $4}') | 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 "Token contract address in $TARGET_NETWORK network is $TOKEN_ADDRESS"
echo "Bridge contract address in $TARGET_NETWORK network is $BRIDGE_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 "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 [[ "$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" echo "Starting dev blockchain networks and deploying contracts"
need_to_deploy=true need_to_deploy=true
else else
echo "Restarting dev blockchain networks" echo "Restarting dev blockchain networks"
fi fi
side_db_mount_point="$(pwd)/ganache_side_db" start_dev_blockchain_networks
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
if [[ -n "$need_to_deploy" ]]; then if [[ -n "$need_to_deploy" ]]; then
deploy_all deploy_all
else
echo "Contracts are already deployed, run clean.sh first if you want to redeploy everything"
fi fi
else else
echo "Deploying to staging blockchain environment" echo "Deploying to the staging blockchain environment"
source ../src/deploy/.keys
deploy_all deploy_all
fi fi

View File

@ -11,4 +11,7 @@ echo "Starting $NAME"
mkdir -p "$NAME" mkdir -p "$NAME"
cd "$NAME" cd "$NAME"
if [[ -e .keys ]]; then
source .keys
fi
docker-compose -p "$NAME" -f ../../src/oracle/docker-compose-test.yml up ${DCU_FLAGS} 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_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=2be3f252e16541bf1bb2d4a517d2bf173e6d09f2d765d32c64dc50515aec63ea #VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5001 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_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=e59d58c77b791f98f10187117374ae9c589d48a62720ec6a5e142b0cc134f685 #VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5002 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_URL=https://testnet-dex.binance.org/
FOREIGN_CHAIN_ID=Binance-Chain-Nile FOREIGN_CHAIN_ID=Binance-Chain-Nile
FOREIGN_ASSET=KFT-94F FOREIGN_ASSET=KFT-94F
VALIDATOR_PRIVATE_KEY=afaa4d4d6e54d25b0bf0361e3fd6cef562f6311bf6200de2dd0aa4cab63ae3b5 #VALIDATOR_PRIVATE_KEY is taken from .keys
VOTES_PROXY_PORT=5003 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 is taken from PRIVATE_KEY_KOVAN in src/deploy/.keys
PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27 PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27
#Set to empty address '0x' for redeployment of token contract in staging environment #Set to '0x' for redeployment of token contract in staging environment
TOKEN_ADDRESS=0xBAD4DD5dA696b1B59932a33c33737ea63438536F TOKEN_ADDRESS=0xFe175c723ca2CB997D0EC000309e2da69B173381
TOKEN_ADDRESS_DEV=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc TOKEN_ADDRESS_DEV=0xd5fE0D28e058D375b0b038fFbB446Da37E85fFdc
VALIDATOR_ADDRESS_1=0x99Eb3D86663c6Db090eFFdBC20510Ca9f836DCE3 VALIDATOR_ADDRESS_1=0x99Eb3D86663c6Db090eFFdBC20510Ca9f836DCE3