diff --git a/.github/scripts/seed-internal-testnet.sh b/.github/scripts/seed-internal-testnet.sh index ff31e618..34a0da66 100755 --- a/.github/scripts/seed-internal-testnet.sh +++ b/.github/scripts/seed-internal-testnet.sh @@ -69,22 +69,20 @@ npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$USD_CONTRACT npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$wETH_CONTRACT_ADDRESS" "$DEV_TEST_WALLET_ADDRESS" 1000000000000000000000 npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$AXLUSD_CONTRACT_ADDRESS" "$DEV_TEST_WALLET_ADDRESS" 100000000000 -# seed webapp E2E whale account +# seed webapp E2E whale account npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$wBTC_CONTRACT_ADDRESS" "$WEBAPP_E2E_WHALE_ADDRESS" 100000000000000 npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$USD_CONTRACT_ADDRESS" "$WEBAPP_E2E_WHALE_ADDRESS" 1000000000000 npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$wETH_CONTRACT_ADDRESS" "$WEBAPP_E2E_WHALE_ADDRESS" 10000000000000000000000 npx hardhat --network "${ERC20_DEPLOYER_NETWORK_NAME}" mint-erc20 "$AXLUSD_CONTRACT_ADDRESS" "$WEBAPP_E2E_WHALE_ADDRESS" 10000000000000 # give dev-wallet enough delegation power to pass proposals by itself -# enumerate all genesis validators -GENTX_VALIDATORS=("kavavaloper1xcgtffvv2yeqmgs3yz4gv29kgjrj8usxrnrlwp" "kavavaloper1w66m9hdzwgd6uc8g93zqkcumgwzrpcw958sh3s") # issue 300KAVA to delegate to each validator kava tx issuance issue 600000000ukava kava1vlpsrmdyuywvaqrv7rx6xga224sqfwz3fyfhwq \ --from dev-wallet --gas-prices 0.5ukava -y # delegate 300KAVA to each validator -for validator in "${GENTX_VALIDATORS[@]}" +for validator in "${GENESIS_VALIDATOR_ADDRESSES[@]}" do kava tx staking delegate "${validator}" 300000000ukava --from dev-wallet --gas-prices 0.5ukava -y done diff --git a/.github/workflows/cd-internal-testnet.yml b/.github/workflows/cd-internal-testnet.yml index 973b84ec..1399f500 100644 --- a/.github/workflows/cd-internal-testnet.yml +++ b/.github/workflows/cd-internal-testnet.yml @@ -45,6 +45,7 @@ jobs: chain-id: kava_2221-17000 seed-script-filename: seed-internal-testnet.sh erc20-deployer-network-name: internal_testnet + genesis_validator_addresses: "kavavaloper1xcgtffvv2yeqmgs3yz4gv29kgjrj8usxrnrlwp kavavaloper1w66m9hdzwgd6uc8g93zqkcumgwzrpcw958sh3s" secrets: inherit needs: [start-chain-api] post-pipeline-metrics: diff --git a/.github/workflows/cd-protonet.yml b/.github/workflows/cd-protonet.yml new file mode 100644 index 00000000..07045f65 --- /dev/null +++ b/.github/workflows/cd-protonet.yml @@ -0,0 +1,59 @@ +name: Continuous Deployment (Protonet) +# run after every successful CI job of new commits to the master branch +on: + workflow_run: + workflows: [Continuous Integration (Kava Master)] + types: + - completed + +jobs: + # in order: + # enter standby (prevents autoscaling group from killing node during deploy) + # stop kava + # take ebs + zfs snapshots + # download updated binary and genesis + # reset application database state (only done on internal testnet) + reset-chain-to-zero-state: + # only start cd pipeline if last ci run was successful + if: ${{ github.event.workflow_run.conclusion == 'success' }} + uses: ./.github/workflows/cd-reset-internal-testnet.yml + with: + aws-region: us-east-1 + chain-id: proto_2221-17000 + ssm-document-name: kava-testnet-internal-node-update + playbook-name: reset-internal-testnet-playbook.yml + playbook-infrastructure-branch: master + secrets: inherit + + # start kava with new binary and genesis state on api, peer and seed nodes, place nodes in service once they start and are synched to live + start-chain-api: + uses: ./.github/workflows/cd-start-chain.yml + with: + aws-region: us-east-1 + chain-id: proto_2221-17000 + ssm-document-name: kava-testnet-internal-node-update + playbook-name: start-chain-api-playbook.yml + playbook-infrastructure-branch: master + secrets: inherit + needs: [reset-chain-to-zero-state] + + # setup test and development accounts and balances, deploy contracts by calling the chain's api + seed-chain-state: + uses: ./.github/workflows/cd-seed-chain.yml + with: + chain-api-url: https://rpc.app.protonet.us-east.production.kava.io:443 + chain-id: proto_2221-17000 + seed-script-filename: seed-internal-testnet.sh + erc20-deployer-network-name: protonet + genesis_validator_addresses: "kavavaloper14w4avgdvqrlpww6l5dhgj4egfn6ln7gmtp7r2m" + secrets: inherit + needs: [start-chain-api] + post-pipeline-metrics: + uses: ./.github/workflows/metric-pipeline.yml + if: always() # always run so we metric failures and successes + with: + aws-region: us-east-1 + metric-name: kava.deploys.testnet.proto + namespace: Kava/ContinuousDeployment + secrets: inherit + needs: [seed-chain-state] diff --git a/.github/workflows/cd-seed-chain.yml b/.github/workflows/cd-seed-chain.yml index a5befa9e..24f03d5a 100644 --- a/.github/workflows/cd-seed-chain.yml +++ b/.github/workflows/cd-seed-chain.yml @@ -15,6 +15,9 @@ on: erc20-deployer-network-name: required: true type: string + genesis_validator_addresses: + required: true + type: string secrets: DEV_WALLET_MNEMONIC: required: true @@ -71,3 +74,4 @@ jobs: DEV_WALLET_MNEMONIC: ${{ secrets.DEV_WALLET_MNEMONIC }} SEED_SCRIPT_FILENAME: ${{ inputs.seed-script-filename }} ERC20_DEPLOYER_NETWORK_NAME: ${{ inputs.erc20-deployer-network-name }} + GENESIS_VALIDATOR_ADDRESSES: ${{ inputs.genesis_validator_addresses }} diff --git a/.github/workflows/ci-default.yml b/.github/workflows/ci-default.yml index 1968193f..494bc418 100644 --- a/.github/workflows/ci-default.yml +++ b/.github/workflows/ci-default.yml @@ -48,3 +48,5 @@ jobs: run: make install - name: validate testnet genesis run: kava validate-genesis ci/env/kava-internal-testnet/genesis.json + - name: validate protonet genesis + run: kava validate-genesis ci/env/kava-protonet/genesis.json