diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 67ccdc9d..f01a4f54 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,6 +10,7 @@ include: #- local: 'apps/data-seeding/.gitlab-ci.yml' stages: + - version - build - test - deploy @@ -20,9 +21,39 @@ variables: DOCKER_BUILDKIT: "1" COMPOSE_DOCKER_CLI_BUILD: "1" CI_DEBUG_TRACE: "true" + SEMVERBOT_VERSION: "0.2.0" -before_script: - - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + #before_script: + # - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + +version: + #image: python:3.7-stretch + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-version:b01318ae + stage: version + script: + - mkdir -p ~/.ssh && chmod 700 ~/.ssh + - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts && chmod 644 ~/.ssh/known_hosts + - eval $(ssh-agent -s) + - ssh-add <(echo "$SSH_PRIVATE_KEY") + - git remote set-url origin git@gitlab.com:grassrootseconomics/cic-internal-integration.git + - export TAG=$(sbot predict version -m auto) + - | + if [[ -z $TAG ]] + then + echo "tag could not be set $@" + exit 1 + fi + - echo $TAG > version + - git tag -a v$TAG -m "ci tagged" + - git push origin v$TAG + artifacts: + paths: + - version + rules: + - if: $CI_COMMIT_REF_PROTECTED == "true" + when: always + - if: $CI_COMMIT_REF_NAME == "master" + when: always # runs on protected branches and pushes to repo build-push: @@ -30,12 +61,17 @@ build-push: tags: - integration #script: - # - TAG=$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA sh ./scripts/build-push.sh + # - TAG=$CI_Cbefore_script: + before_script: + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY script: - - TAG=latest sh ./scripts/build-push.sh + - TAG=latest ./scripts/build-push.sh + - TAG=$(cat ./version) ./scripts/build-push.sh rules: - if: $CI_COMMIT_REF_PROTECTED == "true" when: always + - if: $CI_COMMIT_REF_NAME == "master" + when: always deploy-dev: stage: deploy diff --git a/.semverbot.toml b/.semverbot.toml new file mode 100644 index 00000000..f24eb80b --- /dev/null +++ b/.semverbot.toml @@ -0,0 +1,16 @@ +[git] + +[git.config] +email = "semverbot@grassroots.org" +name = "semvervot" + +[git.tags] +prefix = "v" + +[semver] +mode = "git-commit" + +[semver.detection] +patch = ["fix", "[fix]", "patch", "[patch]"] +minor = ["minor", "[minor]", "feat", "[feat]", "release", "[release]", "bump", "[bump]"] +major = ["BREAKING CHANGE"] diff --git a/README.md b/README.md index 9e0d62d0..a7966dc9 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ This repo uses docker-compose and docker buildkit. Set the following environment variables to get started: + ``` export COMPOSE_DOCKER_CLI_BUILD=1 export DOCKER_BUILDKIT=1 diff --git a/apps/cic-cache/docker/Dockerfile b/apps/cic-cache/docker/Dockerfile index be5cd172..dc4bf6db 100644 --- a/apps/cic-cache/docker/Dockerfile +++ b/apps/cic-cache/docker/Dockerfile @@ -1,19 +1,16 @@ -ARG DOCKER_REGISTRY=registry.gitlab.com/grassrootseconomics +ARG DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" -FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-55da5f4e +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 COPY requirements.txt . -RUN apt-get install libffi-dev -y - ARG EXTRA_PIP_INDEX_URL="https://pip.grassrootseconomics.net:8433" ARG EXTRA_PIP_ARGS="" ARG PIP_INDEX_URL="https://pypi.org/simple" -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ --pre \ - --force-reinstall \ - --no-cache \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt diff --git a/apps/cic-cache/scripts/migrate.py b/apps/cic-cache/scripts/migrate.py index b6925144..458b1ff2 100644 --- a/apps/cic-cache/scripts/migrate.py +++ b/apps/cic-cache/scripts/migrate.py @@ -17,11 +17,12 @@ logg = logging.getLogger() rootdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) dbdir = os.path.join(rootdir, 'cic_cache', 'db') migrationsdir = os.path.join(dbdir, 'migrations') +configdir = os.path.join(rootdir, 'cic_cache', 'data', 'config') -config_dir = os.path.join('/usr/local/etc/cic-cache') +#config_dir = os.path.join('/usr/local/etc/cic-cache') argparser = argparse.ArgumentParser() -argparser.add_argument('-c', type=str, default=config_dir, help='config file') +argparser.add_argument('-c', type=str, help='config file') argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration') argparser.add_argument('--migrations-dir', dest='migrations_dir', default=migrationsdir, type=str, help='path to alembic migrations directory') argparser.add_argument('--reset', action='store_true', help='downgrade before upgrading') @@ -35,7 +36,7 @@ if args.vv: elif args.v: logging.getLogger().setLevel(logging.INFO) -config = confini.Config(args.c, args.env_prefix) +config = confini.Config(configdir, args.env_prefix) config.process() config.censor('PASSWORD', 'DATABASE') config.censor('PASSWORD', 'SSL') diff --git a/apps/cic-eth/cic_eth/api/api_task.py b/apps/cic-eth/cic_eth/api/api_task.py index b0ecf047..bee04223 100644 --- a/apps/cic-eth/cic_eth/api/api_task.py +++ b/apps/cic-eth/cic_eth/api/api_task.py @@ -683,3 +683,4 @@ class Api(ApiBase): t = self.callback_success.apply_async([r]) return t + diff --git a/apps/cic-eth/docker/Dockerfile b/apps/cic-eth/docker/Dockerfile index 59c8d65e..e04d0541 100644 --- a/apps/cic-eth/docker/Dockerfile +++ b/apps/cic-eth/docker/Dockerfile @@ -1,6 +1,6 @@ ARG DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" -FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-55da5f4e +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 # Copy just the requirements and install....this _might_ give docker a hint on caching but we # do load these all into setup.py later @@ -11,21 +11,17 @@ ARG EXTRA_PIP_INDEX_URL=https://pip.grassrootseconomics.net:8433 ARG EXTRA_PIP_ARGS="" ARG PIP_INDEX_URL=https://pypi.org/simple -RUN apt-get install libffi-dev - -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ --pre \ - --force-reinstall \ - --no-cache \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ cic-eth-aux-erc20-demurrage-token~=0.0.2a7 COPY *requirements.txt ./ -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ --pre \ - --force-reinstall \ - --no-cache \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt \ -r services_requirements.txt \ diff --git a/apps/cic-meta/docker/Dockerfile b/apps/cic-meta/docker/Dockerfile index a332fa5a..1ff6bb45 100644 --- a/apps/cic-meta/docker/Dockerfile +++ b/apps/cic-meta/docker/Dockerfile @@ -1,5 +1,4 @@ FROM node:15.3.0-alpine3.10 -#FROM node:lts-alpine3.14 WORKDIR /root @@ -14,6 +13,7 @@ RUN npm config set registry=${NPM_REPOSITORY} COPY package.json package-lock.json ./ RUN --mount=type=cache,mode=0755,target=/root/.npm \ npm set cache /root/.npm && \ + npm cache verify && \ npm ci --verbose COPY webpack.config.js ./ diff --git a/apps/cic-notify/cic_notify/version.py b/apps/cic-notify/cic_notify/version.py index 3a99ed07..02dcb38f 100644 --- a/apps/cic-notify/cic_notify/version.py +++ b/apps/cic-notify/cic_notify/version.py @@ -9,7 +9,7 @@ import semver logg = logging.getLogger() -version = (0, 4, 0, 'alpha.10') +version = (0, 4, 0, 'alpha.11') version_object = semver.VersionInfo( major=version[0], diff --git a/apps/cic-notify/docker/Dockerfile b/apps/cic-notify/docker/Dockerfile index d5de10dc..b217d798 100644 --- a/apps/cic-notify/docker/Dockerfile +++ b/apps/cic-notify/docker/Dockerfile @@ -1,5 +1,6 @@ -# syntax = docker/dockerfile:1.2 -FROM registry.gitlab.com/grassrootseconomics/cic-base-images:python-3.8.6-dev-55da5f4e as dev +ARG DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" + +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 #RUN pip install $pip_extra_index_url_flag cic-base[full_graph]==0.1.2a62 RUN apt-get install libffi-dev -y @@ -11,8 +12,10 @@ ARG PIP_INDEX_URL=https://pypi.org/simple COPY requirements.txt . -RUN pip install --index-url $PIP_INDEX_URL \ - --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ + --pre \ + --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt COPY . . diff --git a/apps/cic-notify/requirements.txt b/apps/cic-notify/requirements.txt index 953027d2..662c6e15 100644 --- a/apps/cic-notify/requirements.txt +++ b/apps/cic-notify/requirements.txt @@ -1,7 +1,8 @@ -confini~=0.4.1a1 +confini>=0.3.6rc4,<0.5.0 africastalking==1.2.3 SQLAlchemy==1.3.20 alembic==1.4.2 psycopg2==2.8.6 celery==4.4.7 redis==3.5.3 +semver==2.13.0 diff --git a/apps/cic-signer/Dockerfile b/apps/cic-signer/Dockerfile index 3a09d0ff..bbe9d694 100644 --- a/apps/cic-signer/Dockerfile +++ b/apps/cic-signer/Dockerfile @@ -1,6 +1,6 @@ ARG DOCKER_REGISTRY=registry.gitlab.com/grassrootseconomics -FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-55da5f4e as dev +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 as dev WORKDIR /root @@ -11,10 +11,9 @@ COPY requirements.txt . ARG EXTRA_PIP_INDEX_URL="https://pip.grassrootseconomics.net:8433" ARG EXTRA_PIP_ARGS="" ARG PIP_INDEX_URL="https://pypi.org/simple" -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ --pre \ - --force-reinstall \ - --no-cache \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt diff --git a/apps/cic-ussd/docker/Dockerfile b/apps/cic-ussd/docker/Dockerfile index cb1b10ce..2359510a 100644 --- a/apps/cic-ussd/docker/Dockerfile +++ b/apps/cic-ussd/docker/Dockerfile @@ -1,8 +1,8 @@ ARG DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" -FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-55da5f4e +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 -RUN apt-get install redis-server libffi-dev -y +RUN apt-get install -y redis-server # create secrets directory RUN mkdir -vp pgp/keys @@ -14,13 +14,17 @@ ARG EXTRA_PIP_INDEX_URL=https://pip.grassrootseconomics.net:8433 ARG EXTRA_PIP_ARGS="" ARG PIP_INDEX_URL=https://pypi.org/simple -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ + --pre \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ cic-eth-aux-erc20-demurrage-token~=0.0.2a7 COPY *requirements.txt ./ -RUN pip install --index-url $PIP_INDEX_URL \ +RUN --mount=type=cache,mode=0755,target=/root/.cache/pip \ + pip install --index-url $PIP_INDEX_URL \ + --pre \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt @@ -33,7 +37,7 @@ COPY cic_ussd/db/ussd_menu.json data/ COPY docker/*.sh ./ RUN chmod +x /root/*.sh -# copy config and migration files to definitive file so they can be referenced in path definitions for running scripts +## copy config and migration files to definitive file so they can be referenced in path definitions for running scripts COPY config/ /usr/local/etc/cic-ussd/ COPY cic_ussd/db/migrations/ /usr/local/share/cic-ussd/alembic diff --git a/apps/cic-ussd/requirements.txt b/apps/cic-ussd/requirements.txt index 6714d2e6..a519ed96 100644 --- a/apps/cic-ussd/requirements.txt +++ b/apps/cic-ussd/requirements.txt @@ -4,8 +4,8 @@ billiard==3.6.4.0 bcrypt==3.2.0 celery==4.4.7 cffi==1.14.6 -cic-eth~=0.12.4a14 -cic-notify~=0.4.0a10 +cic-eth~=0.12.5a1 +cic-notify~=0.4.0a11 cic-types~=0.2.1a2 confini>=0.3.6rc4,<0.5.0 phonenumbers==8.12.12 diff --git a/apps/contract-migration/1_deploy_contract_root.sh b/apps/contract-migration/1_deploy_contract_root.sh index 91dbe27d..204c8730 100644 --- a/apps/contract-migration/1_deploy_contract_root.sh +++ b/apps/contract-migration/1_deploy_contract_root.sh @@ -8,16 +8,20 @@ set -a set -e -if [ ! -z $DEV_ETH_GAS_PRICE ]; then - gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE" - fee_price_arg="--fee-price $DEV_ETH_GAS_PRICE" +if [ ! -z $DEV_FEE_PRICE ]; then + gas_price_arg="--gas-price $DEV_FEE_PRICE" + fee_price_arg="--fee-price $DEV_FEE_PRICE" fi must_eth_rpc # Deploy address declarator registry +advance_nonce +debug_rpc >&2 echo -e "\033[;96mDeploy address declarator contract\033[;39m" -DEV_ADDRESS_DECLARATOR=`eth-address-declarator-deploy -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG $DEV_DECLARATOR_DESCRIPTION` +DEV_ADDRESS_DECLARATOR=`eth-address-declarator-deploy --nonce $nonce -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG $DEV_DECLARATOR_DESCRIPTION` + +check_wait 1 echo -e "\033[;96mWriting env_reset file\033[;39m" confini-dump --schema-dir ./config > ${DEV_DATA_DIR}/env_reset diff --git a/apps/contract-migration/2_deploy_contract_instance.sh b/apps/contract-migration/2_deploy_contract_instance.sh index 8a55d3f7..ed8a24dc 100644 --- a/apps/contract-migration/2_deploy_contract_instance.sh +++ b/apps/contract-migration/2_deploy_contract_instance.sh @@ -13,48 +13,60 @@ set -e must_address "$DEV_ADDRESS_DECLARATOR" "address declarator" must_eth_rpc -if [ ! -z $DEV_ETH_GAS_PRICE ]; then - gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE" - fee_price_arg="--fee-price $DEV_ETH_GAS_PRICE" +if [ ! -z $DEV_FEE_PRICE ]; then + gas_price_arg="--gas-price $DEV_FEE_PRICE" + fee_price_arg="--fee-price $DEV_FEE_PRICE" fi # Deploy contract registry contract +advance_nonce +debug_rpc >&2 echo -e "\033[;96mDeploy contract registry contract\033[;39m" -CIC_REGISTRY_ADDRESS=`okota-contract-registry-deploy $fee_price_arg -i $CHAIN_SPEC -y $WALLET_KEY_FILE --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization --identifier ContractRegistry --identifier DefaultToken --address-declarator $DEV_ADDRESS_DECLARATOR -p $RPC_PROVIDER $DEV_DEBUG_FLAG -s -u -w` +CIC_REGISTRY_ADDRESS=`okota-contract-registry-deploy --nonce $nonce $fee_price_arg -i $CHAIN_SPEC -y $WALLET_KEY_FILE --identifier AccountRegistry --identifier TokenRegistry --identifier AddressDeclarator --identifier Faucet --identifier TransferAuthorization --identifier ContractRegistry --identifier DefaultToken --address-declarator $DEV_ADDRESS_DECLARATOR -p $RPC_PROVIDER $DEV_DEBUG_FLAG -s -u -w` >&2 echo -e "\033[;96mAdd contract registry record to itself\033[;39m" -r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier ContractRegistry $CIC_REGISTRY_ADDRESS` +advance_nonce +debug_rpc +r=`eth-contract-registry-set $DEV_WAIT_FLAG $fee_price_arg --nonce $nonce -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier ContractRegistry $CIC_REGISTRY_ADDRESS` add_pending_tx_hash $r >&2 echo -e "\033[;96mAdd address declarator record to contract registry\033[;39m" -r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier AddressDeclarator $DEV_ADDRESS_DECLARATOR` +advance_nonce +debug_rpc +r=`eth-contract-registry-set $DEV_WAIT_FLAG $fee_price_arg --nonce $nonce -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier AddressDeclarator $DEV_ADDRESS_DECLARATOR` add_pending_tx_hash $r # Deploy transfer authorization contact +advance_nonce +debug_rpc >&2 echo -e "\033[;96mDeploy transfer authorization contract\033[;39m" -DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy $gas_price_arg -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG` +DEV_TRANSFER_AUTHORIZATION_ADDRESS=`erc20-transfer-auth-deploy --nonce $nonce -w $gas_price_arg -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG` >&2 echo -e "\033[;96mAdd transfer authorization record to contract registry\033[;39m" -r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS` +advance_nonce +debug_rpc +r=`eth-contract-registry-set $DEV_WAIT_FLAG $fee_price_arg --nonce $nonce -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier TransferAuthorization $DEV_TRANSFER_AUTHORIZATION_ADDRESS` add_pending_tx_hash $r # Deploy token index contract +advance_nonce +debug_rpc >&2 echo -e "\033[;96mDeploy token symbol index contract\033[;39m" -DEV_TOKEN_INDEX_ADDRESS=`okota-token-index-deploy -s -u $fee_price_arg -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG --address-declarator $DEV_ADDRESS_DECLARATOR` +DEV_TOKEN_INDEX_ADDRESS=`okota-token-index-deploy --nonce $nonce -s -w -u $fee_price_arg -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --address-declarator $DEV_ADDRESS_DECLARATOR` >&2 echo -e "\033[;96mAdd token symbol index record to contract registry\033[;39m" -r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier TokenRegistry $DEV_TOKEN_INDEX_ADDRESS` +advance_nonce +debug_rpc +r=`eth-contract-registry-set $DEV_WAIT_FLAG $fee_price_arg --nonce $nonce -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier TokenRegistry $DEV_TOKEN_INDEX_ADDRESS` add_pending_tx_hash $r -#>&2 echo "add reserve token to token index" -#eth-token-index-add $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG -e $DEV_TOKEN_INDEX_ADDRESS $DEV_RESERVE_ADDRESS - +check_wait 2 echo -e "\033[;96mWriting env_reset file\033[;39m" confini-dump --schema-dir ./config > ${DEV_DATA_DIR}/env_reset diff --git a/apps/contract-migration/3_deploy_token.sh b/apps/contract-migration/3_deploy_token.sh index e5ac8af8..c6278f75 100644 --- a/apps/contract-migration/3_deploy_token.sh +++ b/apps/contract-migration/3_deploy_token.sh @@ -10,9 +10,9 @@ WAIT_FOR_TIMEOUT=${WAIT_FOR_TIMEOUT:-60} set -e -if [ ! -z $DEV_ETH_GAS_PRICE ]; then - gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE" - fee_price_arg="--fee-price $DEV_ETH_GAS_PRICE" +if [ ! -z $DEV_FEE_PRICE ]; then + gas_price_arg="--gas-price $DEV_FEE_PRICE" + fee_price_arg="--fee-price $DEV_FEE_PRICE" fi have_default_token=1 @@ -25,16 +25,17 @@ must_eth_rpc function _deploy_token_defaults { if [ -z "$TOKEN_SYMBOL" ]; then - >&2 echo -e "\033[;33mtoken symbol not set, setting defaults for type $TOKEN_TYPE\033[;39m" + >&2 echo -e "\033[;33mToken symbol not set, setting defaults for type $TOKEN_TYPE\033[;39m" TOKEN_SYMBOL=$1 TOKEN_NAME=$2 elif [ -z "$TOKEN_NAME" ]; then - >&2 echo -e "\033[;33mtoken name not set, setting same as symbol for type $TOKEN_TYPE\033[;39m" + >&2 echo -e "\033[;33mToken name not set, setting same as symbol for type $TOKEN_TYPE\033[;39m" TOKEN_NAME=$TOKEN_SYMBOL fi TOKEN_DECIMALS=${TOKEN_DECIMALS:-6} - default_token_registered=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $RPC_PROVIDER -e $CIC_REGISTRY_ADDRESS $DEV_DEBUG_FLAG --raw DefaultToken` + debug_rpc + default_token_registered=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $RPC_PROVIDER -e $CIC_REGISTRY_ADDRESS $DEV_DEBUG_FLAG --raw DefaultToken --fee-limit 8000000` if [ $default_token_registered == '0000000000000000000000000000000000000000' ]; then >&2 echo -e "\033[;33mFound no existing default token in token registry" have_default_token='' @@ -50,23 +51,31 @@ function _deploy_token_defaults { function deploy_token_giftable_erc20_token() { _deploy_token_defaults "GFT" "Giftable Token" - TOKEN_ADDRESS=`giftable-token-deploy $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals $TOKEN_DECIMALS $DEV_DEBUG_FLAG` + advance_nonce + debug_rpc + TOKEN_ADDRESS=`giftable-token-deploy --nonce $nonce $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC -s -ww --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL --decimals $TOKEN_DECIMALS $DEV_DEBUG_FLAG` } function deploy_token_erc20_demurrage_token() { _deploy_token_defaults "DET" "Demurrage Token" - TOKEN_ADDRESS=`erc20-demurrage-token-deploy $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL $DEV_DEBUG_FLAG -ww -s` + advance_nonce + debug_rpc + TOKEN_ADDRESS=`erc20-demurrage-token-deploy --nonce $nonce $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC --name "$TOKEN_NAME" --symbol $TOKEN_SYMBOL $DEV_DEBUG_FLAG -ww -s` } function deploy_accounts_index() { # Deploy accounts index contact >&2 echo -e "\033[;96mDeploy accounts index contract for token $TOKEN_SYMBOL\033[;39m" - DEV_ACCOUNTS_INDEX_ADDRESS=`okota-accounts-index-deploy $gas_price_arg -u -s -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --address-declarator $DEV_ADDRESS_DECLARATOR --token-address $1` + advance_nonce + debug_rpc + DEV_ACCOUNTS_INDEX_ADDRESS=`okota-accounts-index-deploy --nonce $nonce $fee_price_arg -u -s -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --address-declarator $DEV_ADDRESS_DECLARATOR --token-address $1` if [ -z "$have_default_token" ]; then + advance_nonce + debug_rpc >&2 echo -e "\033[;96mAdd acccounts index record for default token to contract registry\033[;39m" - r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier AccountRegistry $DEV_ACCOUNTS_INDEX_ADDRESS` + r=`eth-contract-registry-set --nonce $nonce $DEV_WAIT_FLAG $fee_price_arg -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier AccountRegistry $DEV_ACCOUNTS_INDEX_ADDRESS` add_pending_tx_hash $r fi } @@ -75,22 +84,32 @@ function deploy_minter_faucet() { FAUCET_AMOUNT=${FAUCET_AMOUNT:-0} # Token faucet contract + advance_nonce + debug_rpc >&2 echo -e "\033[;96mDeploy token faucet contract for token $TOKEN_SYMBOL\033[;39m" - accounts_index_address=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $RPC_PROVIDER -e $CIC_REGISTRY_ADDRESS $DEV_DEBUG_FLAG --raw AccountRegistry` - faucet_address=`sarafu-faucet-deploy $fee_price_arg -s -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG --account-index-address $accounts_index_address $1` + accounts_index_address=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $RPC_PROVIDER -e $CIC_REGISTRY_ADDRESS $DEV_DEBUG_FLAG --raw AccountRegistry --fee-limit 8000000` + faucet_address=`sarafu-faucet-deploy --nonce $nonce $fee_price_arg -s -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --account-index-address $accounts_index_address $1` + # sarafu-faucet-deploy consumes TWO nonces + advance_nonce + advance_nonce + debug_rpc >&2 echo -e "\033[;96mSet token faucet amount to $FAUCET_AMOUNT\033[;39m" - r=`sarafu-faucet-set $fee_price_arg -s -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $faucet_address $DEV_DEBUG_FLAG -s --fee-limit 100000 $FAUCET_AMOUNT` + r=`sarafu-faucet-set --nonce $nonce $fee_price_arg $DEV_WAIT_FLAG -s -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -e $faucet_address $DEV_DEBUG_FLAG --fee-limit 100000 $FAUCET_AMOUNT` add_pending_tx_hash $r if [ -z $have_default_token ]; then + advance_nonce + debug_rpc >&2 echo -e "\033[;96mRegister faucet in registry\033[;39m" - r=`eth-contract-registry-set -s -u $fee_price_arg -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier Faucet $faucet_address` + r=`eth-contract-registry-set --nonce $nonce $DEV_WAIT_FLAG -s -u $fee_price_arg -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier Faucet $faucet_address` add_pending_tx_hash $r fi + advance_nonce + debug_rpc >&2 echo -e "\033[;96mSet faucet as token minter\033[;39m" - r=`giftable-token-minter -s -u $fee_price_arg -w -y $WALLET_KEY_FILE -e $TOKEN_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG $faucet_address` + r=`giftable-token-minter $DEV_WAIT_FLAG --nonce $nonce -s -u $fee_price_arg -y $WALLET_KEY_FILE -e $TOKEN_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG $faucet_address` add_pending_tx_hash $r } @@ -99,21 +118,26 @@ TOKEN_TYPE=${TOKEN_TYPE:-giftable_erc20_token} deploy_token_${TOKEN_TYPE} if [ -z "$have_default_token" ]; then + advance_nonce + debug_rpc >&2 echo -e "\033[;96mAdd default token to contract registry\033[;39m" - r=`eth-contract-registry-set $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier DefaultToken $TOKEN_ADDRESS` + r=`eth-contract-registry-set $DEV_WAIT_FLAG --nonce $nonce $fee_price_arg -s -u -y $WALLET_KEY_FILE -e $CIC_REGISTRY_ADDRESS -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG --identifier DefaultToken $TOKEN_ADDRESS` add_pending_tx_hash $r fi - +advance_nonce +debug_rpc >&2 echo -e "\033[;96mAdd token symbol $TOKEN_SYMBOL to token address $TOKEN_ADDRESS mapping to token index\033[;39m" token_index_address=`eth-contract-registry-list -u -i $CHAIN_SPEC -p $RPC_PROVIDER -e $CIC_REGISTRY_ADDRESS $DEV_DEBUG_FLAG --raw TokenRegistry` -r=`eth-token-index-add $fee_price_arg -s -u -w -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG -e $token_index_address $TOKEN_ADDRESS` +r=`eth-token-index-add --nonce $nonce $fee_price_arg -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER $DEV_DEBUG_FLAG -e $token_index_address $TOKEN_ADDRESS` add_pending_tx_hash $r TOKEN_MINT_AMOUNT=${TOKEN_MINT_AMOUNT:-${DEV_TOKEN_MINT_AMOUNT}} +advance_nonce +debug_rpc >&2 echo -e "\033[;96mMinting $TOKEN_MINT_AMOUNT tokens\033[;39m" -r=`giftable-token-gift $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC -u $DEV_DEBUG_FLAG -s -w -e $TOKEN_ADDRESS "$DEV_TOKEN_MINT_AMOUNT"` +r=`giftable-token-gift $DEV_WAIT_FLAG --nonce $nonce $fee_price_arg -p $RPC_PROVIDER -y $WALLET_KEY_FILE -i $CHAIN_SPEC -u $DEV_DEBUG_FLAG -s -e $TOKEN_ADDRESS "$DEV_TOKEN_MINT_AMOUNT"` add_pending_tx_hash $r @@ -128,6 +152,7 @@ else deploy_minter_${TOKEN_MINTER_MODE} $TOKEN_ADDRESS fi +check_wait 3 >&2 echo -e "\033[;96mWriting env_reset file\033[;39m" confini-dump --schema-dir ./config > ${DEV_DATA_DIR}/env_reset diff --git a/apps/contract-migration/4_init_custodial.sh b/apps/contract-migration/4_init_custodial.sh index ad003f17..5dc17d72 100644 --- a/apps/contract-migration/4_init_custodial.sh +++ b/apps/contract-migration/4_init_custodial.sh @@ -10,9 +10,9 @@ WAIT_FOR_TIMEOUT=${WAIT_FOR_TIMEOUT:-60} set -e -if [ ! -z $DEV_ETH_GAS_PRICE ]; then - gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE" - fee_price_arg="--fee-price $DEV_ETH_GAS_PRICE" +if [ ! -z $DEV_FEE_PRICE ]; then + gas_price_arg="--gas-price $DEV_FEE_PRICE" + fee_price_arg="--fee-price $DEV_FEE_PRICE" fi must_address "$CIC_REGISTRY_ADDRESS" "registry" @@ -42,12 +42,13 @@ add_pending_tx_hash $r # Transfer gas to custodial gas provider adddress +advance_nonce >&2 echo -e "\033[;96mGift gas to gas gifter $gas_gifter\033[;39m" -echo "eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG -a $gas_gifter $DEV_GAS_AMOUNT" r=`eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG -a $gas_gifter $DEV_GAS_AMOUNT` add_pending_tx_hash $r >&2 echo -e "\033[;96mgift gas to accounts index owner $accounts_index_writer\033[;39m" +advance_nonce # for now we are using the same key for both DEV_ETH_ACCOUNT_ACCOUNT_REGISTRY_WRITER=$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER r=`eth-gas -s -u -y $WALLET_KEY_FILE -i $CHAIN_SPEC -p $RPC_PROVIDER -w $DEV_DEBUG_FLAG -a $accounts_index_writer $DEV_GAS_AMOUNT` @@ -59,6 +60,7 @@ cic-eth-ctl -vv -i $CHAIN_SPEC unlock INIT cic-eth-ctl -vv -i $CHAIN_SPEC unlock SEND cic-eth-ctl -vv -i $CHAIN_SPEC unlock QUEUE +check_wait 4 >&2 echo -e "\033[;96mWriting env_reset file\033[;39m" confini-dump --schema-dir ./config > ${DEV_DATA_DIR}/env_reset diff --git a/apps/contract-migration/5_data_seeding.sh b/apps/contract-migration/5_data_seeding.sh index e465743e..f76e7da5 100644 --- a/apps/contract-migration/5_data_seeding.sh +++ b/apps/contract-migration/5_data_seeding.sh @@ -10,9 +10,9 @@ WAIT_FOR_TIMEOUT=${WAIT_FOR_TIMEOUT:-60} set -e -if [ ! -z $DEV_ETH_GAS_PRICE ]; then - gas_price_arg="--gas-price $DEV_ETH_GAS_PRICE" - fee_price_arg="--fee-price $DEV_ETH_GAS_PRICE" +if [ ! -z $DEV_FEE_PRICE ]; then + gas_price_arg="--gas-price $DEV_FEE_PRICE" + fee_price_arg="--fee-price $DEV_FEE_PRICE" fi must_address "$CIC_REGISTRY_ADDRESS" "registry" diff --git a/apps/contract-migration/config.sh b/apps/contract-migration/config.sh index 60c50eb0..ea69a52b 100644 --- a/apps/contract-migration/config.sh +++ b/apps/contract-migration/config.sh @@ -8,6 +8,16 @@ else mkdir -p $DEV_DATA_DIR fi +# Handle wallet +export WALLET_KEY_FILE=${WALLET_KEY_FILE:-`realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c`} +if [ ! -f $WALLET_KEY_FILE ]; then + >&2 echo "wallet path '$WALLET_KEY_FILE' does not point to a file" + exit 1 +fi + +export DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=`eth-keyfile -z -d $WALLET_KEY_FILE` +noncefile=${DEV_DATA_DIR}/nonce_${DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} + # By default configuration values generated from previous runs will be used in subsequent invocations # Setting the config reset if [ -z $DEV_CONFIG_RESET ]; then @@ -17,18 +27,15 @@ if [ -z $DEV_CONFIG_RESET ]; then fi else >&2 echo -e "\033[;33mGenerating scratch configuration\033[;39m" + bash_debug_flag="" + if [ "$DEV_DEBUG_LEVEL" -gt 1 ]; then + bash_debug_flag="-v" + fi + rm $bash_debug_flag -f ${DEV_DATA_DIR}/env_reset + rm $bash_debug_flag -f $noncefile confini-dump --schema-dir ./config --prefix export > ${DEV_DATA_DIR}/env_reset fi -# Handle wallet -export WALLET_KEY_FILE=${WALLET_KEY_FILE:-`realpath ./keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c`} -if [ ! -f $WALLET_KEY_FILE ]; then - >&2 echo "wallet path '$WALLET_KEY_FILE' does not point to a file" - exit 1 -fi -#export DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=`eth-checksum $(cat $WALLET_KEY_FILE | jq -r .address)` -export DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER=`eth-keyfile -z -d $WALLET_KEY_FILE` - # Wallet dependent variable defaults export DEV_ETH_ACCOUNT_RESERVE_MINTER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} export DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER=${DEV_ETH_ACCOUNT_RESERVE_MINTER:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} @@ -36,6 +43,14 @@ export CIC_TRUST_ADDRESS=${CIC_TRUST_ADDRESS:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER export CIC_DEFAULT_TOKEN_SYMBOL=$TOKEN_SYMBOL export TOKEN_SINK_ADDRESS=${TOKEN_SINK_ADDRESS:-$DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER} +if [ ! -f $noncefile ]; then + nonce=`eth-count -p $RPC_PROVIDER $DEV_DEBUG_FLAG $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER` + >&2 echo -e "\033[;96mUsing contract deployer address $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER with nonce $nonce\033[;39m" + echo -n $nonce > $noncefile +else + nonce=`cat $noncefile` + >&2 echo -e "\033[;96mResuming usage with contract deployer address $DEV_ETH_ACCOUNT_CONTRACT_DEPLOYER with nonce $nonce\033[;39m" +fi # Migration variable processing confini-dump --schema-dir ./config > ${DEV_DATA_DIR}/env_reset diff --git a/apps/contract-migration/config/config.ini b/apps/contract-migration/config/config.ini index 7683790f..78edef76 100644 --- a/apps/contract-migration/config/config.ini +++ b/apps/contract-migration/config/config.ini @@ -2,7 +2,8 @@ eth_account_contract_deployer = token_mint_amount = 10000000000000000000000000000000000 gas_amount = 100000000000000000000000 -eth_gas_price = +fee_limit_call = +fee_price = data_dir = address_declarator = declarator_description = 0x546869732069732074686520434943206e6574776f726b000000000000000000 diff --git a/apps/contract-migration/docker/Dockerfile b/apps/contract-migration/docker/Dockerfile index 94b45f06..032b884d 100644 --- a/apps/contract-migration/docker/Dockerfile +++ b/apps/contract-migration/docker/Dockerfile @@ -1,6 +1,6 @@ -ARG DEV_DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" +ARG DOCKER_REGISTRY="registry.gitlab.com/grassrootseconomics" -FROM $DEV_DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-55da5f4e +FROM $DOCKER_REGISTRY/cic-base-images:python-3.8.6-dev-e8eb2ee2 WORKDIR /root @@ -12,25 +12,31 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2A518C819BE37D2C20 RUN mkdir -vp /usr/local/etc/cic -ENV CONFINI_DIR /usr/local/etc/cic/ - - COPY config_template/ /usr/local/etc/cic/ COPY requirements.txt . -RUN apt-get install libffi-dev +#RUN apt-get install libffi-dev ARG pip_index_url=https://pypi.org/simple ARG EXTRA_PIP_INDEX_URL="https://pip.grassrootseconomics.net:8433" ARG EXTRA_PIP_ARGS="" ARG PIP_INDEX_URL="https://pypi.org/simple" ARG pip_trusted_host=pypi.org -RUN pip install --index-url $PIP_INDEX_URL \ +RUN pip install --index-url $PIP_INDEX_URL \ --pre \ - --force-reinstall \ - --no-cache \ --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ -r requirements.txt +COPY override_requirements.txt . + +RUN pip install --index-url $PIP_INDEX_URL \ + --pre \ + --extra-index-url $EXTRA_PIP_INDEX_URL $EXTRA_PIP_ARGS \ + --force-reinstall \ + --no-cache \ + -r override_requirements.txt + +RUN pip freeze + COPY . . RUN chmod +x *.sh diff --git a/apps/contract-migration/override_requirements.txt b/apps/contract-migration/override_requirements.txt new file mode 100644 index 00000000..1b1e760c --- /dev/null +++ b/apps/contract-migration/override_requirements.txt @@ -0,0 +1 @@ +chainlib-eth==0.0.10a15 diff --git a/apps/contract-migration/requirements.txt b/apps/contract-migration/requirements.txt index f948850b..61ec770d 100644 --- a/apps/contract-migration/requirements.txt +++ b/apps/contract-migration/requirements.txt @@ -1,6 +1,5 @@ cic-eth[tools]==0.12.4a13 -chainlib-eth>=0.0.10a5,<0.1.0 -chainlib==0.0.10a3,<0.1.0 +chainlib-eth>=0.0.10a15,<0.1.0 eth-erc20>=0.1.2a3,<0.2.0 erc20-demurrage-token>=0.0.5a2,<0.1.0 eth-address-index>=0.2.4a1,<0.3.0 @@ -9,6 +8,5 @@ erc20-transfer-authorization>=0.3.5a2,<0.4.0 erc20-faucet>=0.3.2a2,<0.4.0 sarafu-faucet>=0.0.7a2,<0.1.0 confini>=0.4.2rc3,<1.0.0 -crypto-dev-signer>=0.4.15rc2,<=0.4.15 eth-token-index>=0.2.4a1,<=0.3.0 okota>=0.2.4a15,<0.3.0 diff --git a/apps/contract-migration/run_job.sh b/apps/contract-migration/run_job.sh index adeca52a..2efb1705 100644 --- a/apps/contract-migration/run_job.sh +++ b/apps/contract-migration/run_job.sh @@ -4,13 +4,18 @@ set -a DEV_DEBUG_FLAG="" -DEV_DEBUG_LEVEL=${DEV_DEBUG_LEVEL=0} -if [ $DEV_DEBUG_LEVEL -eq 1 ]; then +DEV_DEBUG_LEVEL=${DEV_DEBUG_LEVEL:-0} +if [ "$DEV_DEBUG_LEVEL" -eq 1 ]; then DEV_DEBUG_FLAG="-v" -elif [ $DEV_DEBUG_LEVEL -gt 1 ]; then +elif [ "$DEV_DEBUG_LEVEL" -gt 1 ]; then DEV_DEBUG_FLAG="-vv" fi +DEV_WAIT_FLAG="" +if [ ! -z "$DEV_TX_WAIT" ]; then + DEV_WAIT_FLAG="-w" +fi + # disable override of config schema directory unset CONFINI_DIR @@ -34,6 +39,14 @@ confini-dump --schema-dir ./config clear_pending_tx_hashes +RUN_MASK_HIGHEST=0 +for ((i=$LAST_BIT_POS; i>0; i--)); do + b=$((2**$((i-1)))) + if [ $((b & $RUN_MASK)) -gt 0 ]; then + RUN_MASK_HIGHEST=$i + break + fi +done bit=1 for ((i=0; i<$LAST_BIT_POS; i++)); do diff --git a/apps/contract-migration/util.sh b/apps/contract-migration/util.sh index 4723aae7..eee134ae 100644 --- a/apps/contract-migration/util.sh +++ b/apps/contract-migration/util.sh @@ -32,11 +32,39 @@ function must_eth_rpc() { function clear_pending_tx_hashes() { - truncate -s 0 $DEV_DATA_DIR/hashes + >&2 echo -e "\033[;96mClearing pending hashes\033[;39m" + truncate -s 0 ${DEV_DATA_DIR}/hashes } function add_pending_tx_hash() { must_hash_256 $1 - echo $1 >> $DEV_DATA_DIR/hashes + echo $1 >> ${DEV_DATA_DIR}/hashes +} + +function advance_nonce() { + nonce=`cat $noncefile` + next_nonce=$((nonce+1)) + echo -n $next_nonce > $noncefile + if [ "$DEV_DEBUG_LEVEL" -gt 1 ]; then + >&2 echo retrieved nonce $nonce + fi +} + +function debug_rpc() { + if [ "$DEV_DEBUG_LEVEL" -gt 2 ]; then + >&2 echo -e "\033[;35mRPC Node state\033[;39m" + >&2 eth-info --local -p $RPC_PROVIDER + fi +} + +function check_wait() { + #if [ "$1" -eq "$RUN_MASK_HIGHEST" ]; then + >&2 echo -e "\033[;96mCatch up with paralell transactions\033[;39m" + if [ "$DEV_DEBUG_LEVEL" -gt "0" ]; then + >&2 cat ${DEV_DATA_DIR}/hashes + fi + eth-wait $DEV_DEBUG_FLAG -p $RPC_PROVIDER ${DEV_DATA_DIR}/hashes + clear_pending_tx_hashes + #fi } diff --git a/apps/data-seeding/cic_ussd/import_balance.py b/apps/data-seeding/cic_ussd/import_balance.py index 6f7f25e0..6d8b9a2d 100644 --- a/apps/data-seeding/cic_ussd/import_balance.py +++ b/apps/data-seeding/cic_ussd/import_balance.py @@ -65,7 +65,7 @@ args_override = { 'REDIS_DB': getattr(args, 'redis_db'), 'META_HOST': getattr(args, 'meta_host'), 'META_PORT': getattr(args, 'meta_port'), - 'KEYSTORE_FILE_PATH': getattr(args, 'y') + 'WALLET_KEY_FILE': getattr(args, 'y') } config.dict_override(args_override, 'cli flag') config.censor('PASSWORD', 'DATABASE') diff --git a/apps/data-seeding/cic_ussd/import_users.py b/apps/data-seeding/cic_ussd/import_users.py index a5ccc286..c4e6c757 100644 --- a/apps/data-seeding/cic_ussd/import_users.py +++ b/apps/data-seeding/cic_ussd/import_users.py @@ -72,7 +72,7 @@ config.censor('PASSWORD', 'DATABASE') config.censor('PASSWORD', 'SSL') logg.debug(f'config loaded from {args.c}:\n{config}') -dirs = initialize_dirs(args.import_dir, force_reset=args.f) +dirs = initialize_dirs(args.import_dir) valid_service_codes = config.get('USSD_SERVICE_CODE').split(",") diff --git a/apps/data-seeding/common/dirs.py b/apps/data-seeding/common/dirs.py index 8f726c92..b84d1be0 100644 --- a/apps/data-seeding/common/dirs.py +++ b/apps/data-seeding/common/dirs.py @@ -12,11 +12,13 @@ def initialize_dirs(user_dir, force_reset=False): dirs['new'] = os.path.join(user_dir, 'new') dirs['meta'] = os.path.join(user_dir, 'meta') dirs['custom'] = os.path.join(user_dir, 'custom') + dirs['phone'] = os.path.join(user_dir, 'phone') dirs['preferences'] = os.path.join(user_dir, 'preferences') dirs['txs'] = os.path.join(user_dir, 'txs') dirs['keyfile'] = os.path.join(user_dir, 'keystore') dirs['custom_new'] = os.path.join(dirs['custom'], 'new') dirs['custom_meta'] = os.path.join(dirs['custom'], 'meta') + dirs['phone_meta'] = os.path.join(dirs['phone'], 'meta') dirs['preferences_meta'] = os.path.join(dirs['preferences'], 'meta') dirs['preferences_new'] = os.path.join(dirs['preferences'], 'new') @@ -37,6 +39,6 @@ def initialize_dirs(user_dir, force_reset=False): for d in dirs.keys(): if d == 'old': continue - os.makedirs(dirs[d]) + os.makedirs(dirs[d], exist_ok=True) return dirs diff --git a/apps/data-seeding/config/rpc.ini b/apps/data-seeding/config/rpc.ini index 80073f18..3db40b22 100644 --- a/apps/data-seeding/config/rpc.ini +++ b/apps/data-seeding/config/rpc.ini @@ -1,2 +1,2 @@ [rpc] -provider = +provider = http://localhost:63545 diff --git a/apps/data-seeding/import_ussd.sh b/apps/data-seeding/import_ussd.sh index 67f1292e..4b9e9550 100755 --- a/apps/data-seeding/import_ussd.sh +++ b/apps/data-seeding/import_ussd.sh @@ -37,11 +37,11 @@ if [ "$INCLUDE_BALANCES" != "y" ] then echo -e "\033[;96mRunning worker without opening balance transactions\033[;96m" TARGET_TX_COUNT=$NUMBER_OF_USERS - nohup python cic_ussd/import_balance.py -vv -c "$CONFIG" -p "$ETH_PROVIDER" -r "$CIC_REGISTRY_ADDRESS" --token-symbol "$TOKEN_SYMBOL" -y "$KEYSTORE_PATH" "$OUT_DIR" > nohup.out 2> nohup.err < /dev/null & + nohup python cic_ussd/import_balance.py -vv -c "$CONFIG" -p "$ETH_PROVIDER" -r "$CIC_REGISTRY_ADDRESS" --token-symbol "$TOKEN_SYMBOL" -y "$WALLET_KEY_FILE" "$OUT_DIR" > nohup.out 2> nohup.err < /dev/null & else echo -e "\033[;96mRunning worker with opening balance transactions\033[;96m" TARGET_TX_COUNT=$((NUMBER_OF_USERS*2)) - nohup python cic_ussd/import_balance.py -vv -c "$CONFIG" -p "$ETH_PROVIDER" -r "$CIC_REGISTRY_ADDRESS" --include-balances --token-symbol "$TOKEN_SYMBOL" -y "$KEYSTORE_PATH" "$OUT_DIR" & + nohup python cic_ussd/import_balance.py -vv -c "$CONFIG" -p "$ETH_PROVIDER" -r "$CIC_REGISTRY_ADDRESS" --include-balances --token-symbol "$TOKEN_SYMBOL" -y "$WALLET_KEY_FILE" "$OUT_DIR" & fi echo -e "\033[;96mTarget count set to ${TARGET_TX_COUNT}" diff --git a/docker-compose.yml b/docker-compose.yml index bcfeae5d..8fb48f04 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ volumes: services: evm: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/bloxberg-node:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/bloxberg-node:${TAG:-latest} build: context: apps/bloxbergValidatorSetup restart: unless-stopped @@ -41,18 +41,23 @@ services: bootstrap: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/contract-migration:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/contract-migration:${TAG:-latest} build: context: apps/contract-migration dockerfile: docker/Dockerfile args: - DOCKER_REGISTRY: $DEV_DOCKER_REGISTRY + DOCKER_REGISTRY: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics} PIP_INDEX_URL: ${PIP_INDEX_URL:-https://pypi.org/simple} EXTRA_PIP_INDEX_URL: ${EXTRA_PIP_INDEX_URL:-https://pip.grassrootseconomics.net:8433} EXTRA_PIP_ARGS: $EXTRA_PIP_ARGS environment: DEV_DATA_DIR: ${DEV_DATA_DIR:-/tmp/cic/config} DEV_CONFIG_RESET: $DEV_CONFIG_RESET + DEV_FEE_PRICE: $DEV_FEE_PRICE + DEV_FEE_LIMIT_CALL: ${DEV_FEE_LIMIT_CALL:-8000000} + DEV_DEBUG_LEVEL: ${DEV_DEBUG_LEVEL:-0} + DEV_TX_WAIT: $DEV_TX_WAIT + DEV_GAS_AMOUNT: $DEV_GAS_AMOUNT RPC_PROVIDER: ${RPC_PROVIDER:-http://evm:8545} CHAIN_SPEC: ${CHAIN_SPEC:-evm:byzantium:8996:bloxberg} REDIS_HOST: ${REDIS_HOST:-redis} @@ -72,6 +77,7 @@ services: REDIS_HOST_CALLBACK: ${REDIS_HOST_CALLBACK:-redis} REDIS_PORT_CALLBACK: ${REDIS_PORT_CALLBACK:-6379} FAUCET_AMOUNT: ${FAUCET_AMOUNT:-0} + WALLET_KEY_FILE: ${WALLET_KEY_FILE:-/root/keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c} command: ["./run_job.sh"] depends_on: - evm @@ -84,7 +90,7 @@ services: cic-signer: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/funga-eth:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/funga-eth:${TAG:-latest} build: context: apps/cic-signer dockerfile: Dockerfile @@ -114,7 +120,7 @@ services: # queue handling for outgoing transactions and incoming transactions cic-eth-tasker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-eth:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-eth:${TAG:-latest} build: context: apps/cic-eth dockerfile: docker/Dockerfile @@ -164,7 +170,7 @@ services: cic-eth-tracker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-eth:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-eth:${TAG:-latest} build: context: apps/cic-eth dockerfile: docker/Dockerfile @@ -212,7 +218,7 @@ services: cic-eth-dispatcher: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-eth:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-eth:${TAG:-latest} build: context: apps/cic-eth dockerfile: docker/Dockerfile @@ -256,7 +262,7 @@ services: cic-eth-retrier: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-eth:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-eth:${TAG:-latest} build: context: apps/cic-eth dockerfile: docker/Dockerfile @@ -303,7 +309,7 @@ services: cic-cache-tracker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-cache:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-cache:${TAG:-latest} build: context: apps/cic-cache dockerfile: docker/Dockerfile @@ -351,7 +357,7 @@ services: cic-cache-tasker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-cache:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-cache:${TAG:-latest} build: context: apps/cic-cache dockerfile: docker/Dockerfile @@ -399,7 +405,7 @@ services: cic-cache-server: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-cache:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-cache:${TAG:-latest} build: context: apps/cic-cache dockerfile: docker/Dockerfile @@ -443,7 +449,7 @@ services: # metadata replacement server for swarm cic-meta-server: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-meta:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-meta:${TAG:-latest} hostname: meta build: context: apps/cic-meta @@ -481,7 +487,7 @@ services: cic-user-tasker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-user:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-user:${TAG:-latest} build: context: apps/cic-ussd dockerfile: docker/Dockerfile @@ -517,7 +523,7 @@ services: cic-user-server: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-user:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-user:${TAG:-latest} build: context: apps/cic-ussd dockerfile: docker/Dockerfile @@ -546,7 +552,7 @@ services: cic-user-ussd-server: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-user:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-user:${TAG:-latest} build: context: apps/cic-ussd dockerfile: docker/Dockerfile @@ -584,7 +590,7 @@ services: cic-notify-tasker: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/cic-notify:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/cic-notify:${TAG:-latest} build: context: apps/cic-notify dockerfile: docker/Dockerfile @@ -615,7 +621,7 @@ services: command: "/root/start_tasker.sh -q cic-notify -vv" data-seeding: - image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics/cic-internal-integration}/data-seeding:${TAG:-latest} + image: ${DEV_DOCKER_REGISTRY:-registry.gitlab.com/grassrootseconomics}/data-seeding:${TAG:-latest} build: context: apps/data-seeding dockerfile: docker/Dockerfile @@ -643,7 +649,8 @@ services: CONFIG: config CHAIN_SPEC: ${CHAIN_SPEC:-evm:byzantium:8996:bloxberg} TOKEN_SYMBOL: GFT - KEYSTORE_PATH: keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c + #KEYSTORE_PATH: keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c + WALLET_KEY_FILE: ${WALLET_KEY_FILE:-/root/keystore/UTC--2021-01-08T17-18-44.521011372Z--eb3907ecad74a0013c259d5874ae7f22dcbcc95c} USSD_HOST: cic-user-ussd-server USSD_PORT: 9000 INCLUDE_BALANCES: y diff --git a/scripts/build.sh b/scripts/build.sh index b3da3a6a..744e0eb4 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -6,4 +6,7 @@ set -e TAG=${TAG?Variable not set} \ docker-compose \ -f docker-compose.yml \ -build +build \ +--no-cache \ +--parallel \ +--progress plain