Moved test environment and deployment process to docker

This commit is contained in:
Kirill Fedoseev 2019-07-17 14:31:38 +07:00
parent 1ab220caf4
commit 38dee19559
21 changed files with 277 additions and 80 deletions

View File

@ -10,7 +10,7 @@ confirm token transfer on the Ethereum Side, or vote for state changes.
ERC20 Token is used on the Ethereum side of the bridge.
All ERC20 tokens are located on address associated with DEPLOY_PRIVATE_KEY.
BNB Token is used on the Binance Chain side.
BEP2 Token is used on the Binance Chain side.
#### Running demo:
1) Build tss from local source.

View File

@ -6,42 +6,51 @@ cd $(dirname "$0")
echo "Starting side test blockchain"
rm -rf ./ganache_data_side
mkdir ganache_data_side
kill $(lsof -t -i:3333) > /dev/null 2>&1 || true
ganache-cli --db ./ganache_data_side -p 3333 -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q &
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 trufflesuite/ganache-cli:latest -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 33 -q
echo "Starting home test blockchain"
rm -rf ./ganache_data
mkdir ganache_data
kill $(lsof -t -i:4444) > /dev/null 2>&1 || true
ganache-cli -a 20 --db ./ganache_data -p 4444 -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 44 -q &
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 trufflesuite/ganache-cli:latest -m "shrug dwarf easily blade trigger lucky reopen cage lake scatter desk boat" -i 44 -q
sleep 4
echo "Deploying erc20"
echo "Compiling and deploying erc20"
cd ../src/deploy/deploy-test
truffle deploy --network development --reset > /dev/null
echo "Building deploy docker image"
docker build -t deploy_test . > /dev/null 2>&1
echo "Deploying"
docker run --network blockchain_home --rm --env-file .env -v "$(pwd)/build:/build/build" deploy_test --network development --reset > /dev/null 2>&1
echo "Deploying home part"
echo "Compiling and deploying home part"
cd ../deploy-home
truffle deploy --network development --reset > /dev/null
echo "Building deploy docker image"
docker build -t deploy_home . > /dev/null 2>&1
echo "Deploying"
docker run --network blockchain_home --rm --env-file .env -v "$(pwd)/build:/build/build" deploy_home --network development --reset > /dev/null 2>&1
echo "Deploying side part"
echo "Compiling and deploying side part"
cd ../deploy-side
truffle deploy --network development --reset > /dev/null
echo "Building deploy docker image"
docker build -t deploy_side . > /dev/null 2>&1
echo "Deploying"
docker run --network blockchain_side --rm --env-file .env -v "$(pwd)/build:/build/build" deploy_side --network development --reset > /dev/null 2>&1
echo "Done"

View File

@ -11,4 +11,4 @@ echo "Starting $NAME"
mkdir -p "$NAME"
cd "$NAME"
docker-compose -p "$NAME" -f ../../src/oracle/docker-compose.yml up ${DCU_FLAGS}
docker-compose -p "$NAME" -f ../../src/oracle/docker-compose-test.yml up ${DCU_FLAGS}

View File

@ -1,9 +1,9 @@
HOME_RPC_URL=http://host.docker.internal:4444
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x94b40CC641Ed7db241A1f04C8896ba6f6cC36b85
HOME_TOKEN_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
SIDE_RPC_URL=http://host.docker.internal:3333
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B

View File

@ -1,9 +1,9 @@
HOME_RPC_URL=http://host.docker.internal:4444
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x94b40CC641Ed7db241A1f04C8896ba6f6cC36b85
HOME_TOKEN_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
SIDE_RPC_URL=http://host.docker.internal:3333
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B

View File

@ -1,9 +1,9 @@
HOME_RPC_URL=http://host.docker.internal:4444
HOME_RPC_URL=http://ganache_home:8545
HOME_CHAIN_ID=44
HOME_BRIDGE_ADDRESS=0x94b40CC641Ed7db241A1f04C8896ba6f6cC36b85
HOME_TOKEN_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B
SIDE_RPC_URL=http://host.docker.internal:3333
SIDE_RPC_URL=http://ganache_side:8545
SIDE_CHAIN_ID=33
SIDE_SHARED_DB_ADDRESS=0x44c158FE850821ae69DaF37AADF5c539e9d0025B

View File

@ -1,5 +1,5 @@
RPC_URL=https://sokol.poa.network
RPC_URL_DEV=http://127.0.0.1:4444
RPC_URL_DEV=http://ganache_home:8545
PRIVATE_KEY=e49fe947f224ae8e126c41b1be3e52be701509c2366e835ea8c08651f91030e0
PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27

View File

@ -0,0 +1,24 @@
FROM node:10.16.0-alpine
WORKDIR /build
RUN apk add git python build-base
RUN npm install -g truffle
RUN npm install truffle-hdwallet-provider
RUN truffle obtain --solc 0.5.9
COPY truffle-config-build.js /build/truffle-config.js
COPY contracts/openzeppelin-solidity /build/contracts/openzeppelin-solidity
RUN truffle compile
COPY contracts /build/contracts
RUN truffle compile
COPY truffle-config.js /build/truffle-config.js
COPY migrations /build/migrations
ENTRYPOINT truffle deploy

View File

@ -1,5 +1,3 @@
require('dotenv').config()
const Bridge = artifacts.require('Bridge')
const {

View File

@ -0,0 +1,13 @@
module.exports = {
compilers: {
solc: {
version: '0.5.9',
settings: {
optimizer: {
enabled: true,
runs: 3
}
}
}
}
}

View File

@ -1,5 +1,3 @@
require('dotenv').config()
const PrivateKeyProvider = require('truffle-hdwallet-provider')
const { RPC_URL, PRIVATE_KEY, RPC_URL_DEV, PRIVATE_KEY_DEV } = process.env

View File

@ -1,5 +1,5 @@
RPC_URL=https://sokol.poa.network
RPC_URL_DEV=http://127.0.0.1:3333
RPC_URL_DEV=http://ganache_side:8545
PRIVATE_KEY=e49fe947f224ae8e126c41b1be3e52be701509c2366e835ea8c08651f91030e0
PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27

View File

@ -0,0 +1,20 @@
FROM node:10.16.0-alpine
WORKDIR /build
RUN apk add git python build-base
RUN npm install -g truffle
RUN npm install truffle-hdwallet-provider
RUN truffle obtain --solc 0.5.9
COPY truffle-config-build.js /build/truffle-config.js
COPY contracts /build/contracts
RUN truffle compile
COPY truffle-config.js /build/truffle-config.js
COPY migrations /build/migrations
ENTRYPOINT truffle deploy

View File

@ -0,0 +1,13 @@
module.exports = {
compilers: {
solc: {
version: '0.5.9',
settings: {
optimizer: {
enabled: true,
runs: 3
}
}
}
}
}

View File

@ -1,5 +1,3 @@
require('dotenv').config()
const PrivateKeyProvider = require('truffle-hdwallet-provider')
const { RPC_URL, PRIVATE_KEY, RPC_URL_DEV, PRIVATE_KEY_DEV } = process.env

View File

@ -1,5 +1,5 @@
RPC_URL=https://sokol.poa.network
RPC_URL_DEV=http://127.0.0.1:4444
RPC_URL_DEV=http://ganache_home:8545
PRIVATE_KEY=e49fe947f224ae8e126c41b1be3e52be701509c2366e835ea8c08651f91030e0
PRIVATE_KEY_DEV=e2aeb24eaa63102d0c0821717c3b6384abdabd7af2ad4ec8e650dce300798b27

View File

@ -0,0 +1,24 @@
FROM node:10.16.0-alpine
WORKDIR /build
RUN apk add git python build-base
RUN npm install -g truffle
RUN npm install truffle-hdwallet-provider
RUN truffle obtain --solc 0.5.9
COPY truffle-config-build.js /build/truffle-config.js
COPY contracts/openzeppelin-solidity /build/contracts/openzeppelin-solidity
RUN truffle compile
COPY contracts /build/contracts
RUN truffle compile
COPY truffle-config.js /build/truffle-config.js
COPY migrations /build/migrations
ENTRYPOINT truffle deploy

View File

@ -0,0 +1,13 @@
module.exports = {
compilers: {
solc: {
version: '0.5.9',
settings: {
optimizer: {
enabled: true,
runs: 3
}
}
}
}
}

View File

@ -1,5 +1,3 @@
require('dotenv').config()
const PrivateKeyProvider = require('truffle-hdwallet-provider')
const { RPC_URL, PRIVATE_KEY, RPC_URL_DEV, PRIVATE_KEY_DEV } = process.env

View File

@ -0,0 +1,97 @@
version: '3.7'
services:
proxy:
image: blockchain-proxy
build: ./proxy
environment:
- HOME_RPC_URL
- HOME_BRIDGE_ADDRESS
- HOME_TOKEN_ADDRESS
- HOME_CHAIN_ID
- SIDE_RPC_URL
- SIDE_SHARED_DB_ADDRESS
- SIDE_CHAIN_ID
- VALIDATOR_PRIVATE_KEY
- FOREIGN_URL
- FOREIGN_ASSET
volumes:
- '../deploy/deploy-test/build/contracts/IERC20.json:/proxy/contracts_data/IERC20.json'
- '../deploy/deploy-home/build/contracts/Bridge.json:/proxy/contracts_data/Bridge.json'
- '../deploy/deploy-side/build/contracts/SharedDB.json:/proxy/contracts_data/SharedDB.json'
ports:
- '${VOTES_PROXY_PORT}:8002'
networks:
- test_network
- blockchain_home
- blockchain_side
keygen:
image: keygen-client
build: ./tss-keygen
environment:
- 'RABBITMQ_URL=amqp://rabbitmq:5672'
- 'PROXY_URL=http://proxy:8001'
volumes:
- '${PWD}/keys:/keys'
networks:
- test_network
signer:
image: sign-client
build: ./tss-sign
environment:
- 'RABBITMQ_URL=amqp://rabbitmq:5672'
- 'PROXY_URL=http://proxy:8001'
- FOREIGN_CHAIN_ID
- FOREIGN_URL
- FOREIGN_ASSET
volumes:
- '${PWD}/keys:/keys'
ports:
- '${SIGN_RESTART_PORT}:8001'
networks:
- test_network
redis:
image: redis:5.0.5-alpine
volumes:
- '${PWD}/db:/data'
networks:
- test_network
rabbitmq:
hostname: rabbit
image: rabbitmq:3.7.15-alpine
volumes:
- '${PWD}/queue:/var/lib/rabbitmq/mnesia'
networks:
- test_network
eth-watcher:
build: ethWatcher
image: eth-watcher
environment:
- HOME_RPC_URL
- HOME_BRIDGE_ADDRESS
- HOME_TOKEN_ADDRESS
- HOME_CHAIN_ID
- 'RABBITMQ_URL=amqp://rabbitmq:5672'
volumes:
- '../deploy/deploy-home/build/contracts/Bridge.json:/watcher/contracts_data/Bridge.json'
- '../deploy/deploy-test/build/contracts/IERC20.json:/watcher/contracts_data/IERC20.json'
networks:
- test_network
- blockchain_home
bnc-watcher:
build: bncWatcher
image: bnc-watcher
environment:
- FOREIGN_URL
- FOREIGN_ASSET
- 'RABBITMQ_URL=amqp://rabbitmq:5672'
- 'PROXY_URL=http://proxy:8001'
volumes:
- '${PWD}/keys:/keys'
networks:
- test_network
networks:
test_network:
blockchain_side:
external: true
blockchain_home:
external: true

View File

@ -21,10 +21,9 @@ services:
ports:
- '${VOTES_PROXY_PORT}:8002'
networks:
- test_network
# - sign-proxy-net
# - keygen-proxy-net
# - bncwatcher-proxy-net
- sign-proxy-net
- keygen-proxy-net
- bncwatcher-proxy-net
keygen:
image: keygen-client
build: ./tss-keygen
@ -34,10 +33,9 @@ services:
volumes:
- '${PWD}/keys:/keys'
networks:
- test_network
# - keygen-proxy-net
# - rabbit-keygen-net
# - redis-keygen-net
- keygen-proxy-net
- rabbit-keygen-net
- redis-keygen-net
signer:
image: sign-client
build: ./tss-sign
@ -52,31 +50,28 @@ services:
ports:
- '${SIGN_RESTART_PORT}:8001'
networks:
- test_network
# - sign-proxy-net
# - rabbit-signer-net
# - redis-signer-net
- sign-proxy-net
- rabbit-signer-net
- redis-signer-net
redis:
image: redis:5.0.5-alpine
volumes:
- '${PWD}/db:/data'
networks:
- test_network
# - redis-signer-net
# - redis-keygen-net
# - redis-ethwatcher-net
# - redis-bncwatcher-net
- redis-signer-net
- redis-keygen-net
- redis-ethwatcher-net
- redis-bncwatcher-net
rabbitmq:
hostname: rabbit
image: rabbitmq:3.7.15-alpine
volumes:
- '${PWD}/queue:/var/lib/rabbitmq/mnesia'
networks:
- test_network
# - rabbit-signer-net
# - rabbit-keygen-net
# - rabbit-ethwatcher-net
# - rabbit-bncwatcher-net
- rabbit-signer-net
- rabbit-keygen-net
- rabbit-ethwatcher-net
- rabbit-bncwatcher-net
eth-watcher:
build: ethWatcher
image: eth-watcher
@ -90,9 +85,8 @@ services:
- '../deploy/deploy-home/build/contracts/Bridge.json:/watcher/contracts_data/Bridge.json'
- '../deploy/deploy-test/build/contracts/IERC20.json:/watcher/contracts_data/IERC20.json'
networks:
- test_network
# - rabbit-ethwatcher-net
# - redis-ethwatcher-net
- rabbit-ethwatcher-net
- redis-ethwatcher-net
bnc-watcher:
build: bncWatcher
image: bnc-watcher
@ -104,20 +98,18 @@ services:
volumes:
- '${PWD}/keys:/keys'
networks:
- test_network
# - rabbit-bncwatcher-net
# - redis-bncwatcher-net
# - bncwatcher-proxy-net
- rabbit-bncwatcher-net
- redis-bncwatcher-net
- bncwatcher-proxy-net
networks:
test_network:
# sign-proxy-net:
# keygen-proxy-net:
# rabbit-signer-net:
# rabbit-keygen-net:
# rabbit-ethwatcher-net:
# rabbit-bncwatcher-net:
# redis-keygen-net:
# redis-signer-net:
# redis-ethwatcher-net:
# redis-bncwatcher-net:
# bncwatcher-proxy-net:
sign-proxy-net:
keygen-proxy-net:
rabbit-signer-net:
rabbit-keygen-net:
rabbit-ethwatcher-net:
rabbit-bncwatcher-net:
redis-keygen-net:
redis-signer-net:
redis-ethwatcher-net:
redis-bncwatcher-net:
bncwatcher-proxy-net: