Continuous Deployment (Internal Testnet) #377
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Deployment (Internal Testnet) | |
# run after every successful CI job of new commits to the master branch | |
# if deploy version or config has changed | |
on: | |
workflow_run: | |
workflows: [Continuous Integration (Kava Master)] | |
types: | |
- completed | |
jobs: | |
changed_files: | |
runs-on: ubuntu-latest | |
# define output for first job forwarding output of changedInternalTestnetConfig job | |
outputs: | |
changedInternalTestnetConfig: ${{ steps.changed-internal-testnet-config.outputs.any_changed }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit. | |
- name: Get all changed internal testnet files | |
id: changed-internal-testnet-config | |
uses: tj-actions/changed-files@v42 | |
with: | |
# Avoid using single or double quotes for multiline patterns | |
files: | | |
ci/env/kava-internal-testnet/** | |
# 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: | |
needs: [changed_files] | |
# only start cd pipeline if last ci run was successful | |
if: ${{ github.event.workflow_run.conclusion == 'success' && needs.changed_files.outputs.changedInternalTestnetConfig == 'true' }} | |
uses: ./.github/workflows/cd-reset-internal-testnet.yml | |
with: | |
aws-region: us-east-1 | |
chain-id: kava_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: kava_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.internal.testnet.us-east.production.kava.io:443 | |
chain-id: kava_2221-17000 | |
seed-script-filename: seed-internal-testnet.sh | |
erc20-deployer-network-name: internal_testnet | |
genesis_validator_addresses: "kavavaloper1xcgtffvv2yeqmgs3yz4gv29kgjrj8usxrnrlwp kavavaloper1w66m9hdzwgd6uc8g93zqkcumgwzrpcw958sh3s" | |
kava_version_filepath: ./ci/env/kava-internal-testnet/KAVA.VERSION | |
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.internal | |
namespace: Kava/ContinuousDeployment | |
secrets: inherit | |
needs: [seed-chain-state] |