param change path #21
Workflow file for this run
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: Gaia v15 Upgrade - Fresh State | |
on: | |
repository_dispatch: | |
types: [new_main_build] | |
schedule: | |
- cron: '0 6,14 * * 1-6' | |
workflow_dispatch: | |
push: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# Versions | |
VERSION_CUTOFF: v14.1.0 | |
TARGET_VERSION: v15 | |
# All chain variables | |
COMMIT_TIMEOUT: 3 | |
DOWNTIME_BLOCKS: 10000 | |
# Provider chain variables | |
CHAIN_BINARY: gaiad | |
CHAIN_ID: testnet | |
DENOM: uatom | |
BASE_FEES: 2000 | |
HIGH_FEES: 10000 | |
GAS: auto | |
GAS_ADJUSTMENT: 2 | |
GAS_PRICE: 0.005 | |
VOTING_PERIOD: 10s | |
COSMOS_SDK: v45 | |
COSMOVISOR: false | |
# Provider nodes variables | |
HOME_1: /home/runner/.val1 | |
HOME_2: /home/runner/.val2 | |
HOME_3: /home/runner/.val3 | |
PROVIDER_SERVICE_1: gaia1.service | |
PROVIDER_SERVICE_2: gaia2.service | |
PROVIDER_SERVICE_3: gaia3.service | |
MNEMONIC_1: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art | |
MNEMONIC_2: abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon cabbage abandon garage | |
MNEMONIC_3: abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon cash abandon earth | |
MNEMONIC_RELAYER: abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon success | |
MNEMONIC_4: abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon property abandon success | |
MNEMONIC_5: abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon fame abandon claim | |
MONIKER_1: val1 | |
MONIKER_2: val2 | |
MONIKER_3: val3 | |
MONIKER_RELAYER: relayer | |
MONIKER_4: relayer | |
MONIKER_5: wallet5 | |
VALOPER_1: cosmosvaloper1r5v5srda7xfth3hn2s26txvrcrntldju7lnwmv | |
VALOPER_2: cosmosvaloper1ay4dpm0kjmvtpug28vgw5w32yyjxa5spq248vn | |
VALOPER_3: cosmosvaloper1v8zgdpzqfazvk6fgwhqqhzx0hfannrajukgdkc | |
WALLET_1: cosmos1r5v5srda7xfth3hn2s26txvrcrntldjumt8mhl | |
WALLET_2: cosmos1ay4dpm0kjmvtpug28vgw5w32yyjxa5sp97pjqq | |
WALLET_3: cosmos1v8zgdpzqfazvk6fgwhqqhzx0hfannrajezuc6t | |
WALLET_4: cosmos1ty2qlurqsxj6sgs378hxmzyxh0ds8ukc70w844 | |
WALLET_RELAYER: cosmos1ty2qlurqsxj6sgs378hxmzyxh0ds8ukc70w844 | |
VAL1_STAKE: 800000000 | |
VAL2_STAKE: 200000000 | |
VAL3_STAKE: 10000000 | |
VAL_FUNDS: 11000000000 | |
VAL_STAKE: 1000000000 | |
VAL_STAKE_STEP: 1000000 | |
VAL1_API_PORT: 25001 | |
VAL2_API_PORT: 25002 | |
VAL3_API_PORT: 25003 | |
VAL1_GRPC_PORT: 26001 | |
VAL2_GRPC_PORT: 26002 | |
VAL3_GRPC_PORT: 26003 | |
VAL1_RPC_PORT: 27001 | |
VAL2_RPC_PORT: 27002 | |
VAL3_RPC_PORT: 27003 | |
VAL1_P2P_PORT: 28001 | |
VAL2_P2P_PORT: 28002 | |
VAL3_P2P_PORT: 28003 | |
VAL1_PPROF_PORT: 29001 | |
VAL2_PPROF_PORT: 29002 | |
VAL3_PPROF_PORT: 29003 | |
# Consumer chain variables | |
ICS_120: false | |
ICS_200: false | |
ICS_310: false | |
ICS_330: false | |
ICS_400: false | |
RECIPIENT: cosmos1r5v5srda7xfth3hn2s26txvrcrntldjumt8mhl | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V12_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v1.2.0-multiden/interchain-security-cd-linux | |
CONSUMER_CHAIN_V12_BINARY: consumerd_v1.2.0 | |
CONSUMER_CHAIN_V2_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v2.0.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V2_BINARY: consumerd_v2.0.0 | |
CONSUMER_CHAIN_V310_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.1.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V310_BINARY: consumerd_v3.1.0 | |
CONSUMER_CHAIN_V320_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-consumer-v3.2.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V320_BINARY: consumerd_v3.2.0 | |
CONSUMER_CHAIN_V330_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-consumer-v3.3.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V330_BINARY: consumerd_v3.3.0 | |
STRIDE_V18_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/stride-consumer-v18.0.0/strided-consumer-linux | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
# Stride chain variables | |
STRIDE_SOV_CHAIN_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/stride-v11.0.0/stride-v11.0.0-linux-amd64 | |
STRIDE_CON_CHAIN_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/stride-v12.1.0/stride-v12.1.0-linux-amd64 | |
STRIDE_CHAIN_BINARY: strided | |
STRIDE_CHAIN_ID: five | |
STRIDE_DENOM: ustrd | |
STRIDE_HOME_1: /home/runner/.stride1 | |
STRIDE_HOME_2: /home/runner/.stride2 | |
STRIDE_SERVICE_1: stride1.service | |
STRIDE_SERVICE_2: stride2.service | |
STRIDE_WALLET_1: stride1r5v5srda7xfth3hn2s26txvrcrntldjucq88rn | |
STRIDE_WALLET_LIQUID: stride17n3vkvg6lwf98p3kanlhlyjk6zkrfla9zrhma6 | |
STRIDE_API_1: 35001 | |
STRIDE_API_2: 35002 | |
STRIDE_GRPC_1: 36001 | |
STRIDE_GRPC_2: 36002 | |
STRIDE_RPC_1: 37001 | |
STRIDE_RPC_2: 37002 | |
STRIDE_P2P_1: 38001 | |
STRIDE_P2P_2: 38002 | |
STRIDE_PPROF_1: 39001 | |
STRIDE_PPROF_2: 39002 | |
CHANGEOVER_HEIGHT_OFFSET: false | |
# Relayer variables | |
RELAYER: hermes | |
HERMES_VERSION: v1.8.0 | |
RLY_VERSION: "2.5.0" | |
jobs: | |
set-version-matrix: | |
runs-on: ubuntu-22.04 | |
steps: | |
# Get system info | |
- run: ifconfig | |
- run: arp -a | |
- run: sudo dmidecode | |
- run: df -h | |
- run: free -m | |
- run: uname -a | |
- run: lsb_release -a | |
- run: echo "GitHub branch is ${{ github.ref }}" | |
- run: whoami | |
- run: pwd | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install requests | |
- name: Generate starting versions | |
id: generate-start | |
run: | | |
start=$(scripts/generate_version_matrix.py $VERSION_CUTOFF) | |
echo $start | |
echo "start_versions=$start" >> $GITHUB_OUTPUT | |
- name: Generate upgrade versions | |
id: generate-upgrade | |
run: | | |
upgrade=$(scripts/generate_upgrade_matrix_fresh.py $VERSION_CUTOFF) | |
echo $upgrade | |
echo "upgrade_versions=$upgrade" >> $GITHUB_OUTPUT | |
outputs: | |
upgrade_versions: ${{ steps.generate-upgrade.outputs.upgrade_versions }} | |
set-version-matrix-relayer: | |
runs-on: ubuntu-22.04 | |
steps: | |
# Get system info | |
- run: ifconfig | |
- run: arp -a | |
- run: sudo dmidecode | |
- run: df -h | |
- run: free -m | |
- run: uname -a | |
- run: lsb_release -a | |
- run: echo "GitHub branch is ${{ github.ref }}" | |
- run: whoami | |
- run: pwd | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install requests | |
- name: Generate starting versions | |
id: generate-start | |
run: | | |
start=$(scripts/generate_version_matrix.py $VERSION_CUTOFF) | |
echo $start | |
echo "start_versions=$start" >> $GITHUB_OUTPUT | |
- name: Generate upgrade versions | |
id: generate-upgrade | |
run: | | |
upgrade=$(scripts/generate_upgrade_matrix_fresh.py $VERSION_CUTOFF -r) | |
echo $upgrade | |
echo "upgrade_versions=$upgrade" >> $GITHUB_OUTPUT | |
outputs: | |
upgrade_versions: ${{ steps.generate-upgrade.outputs.upgrade_versions }} | |
Baseline-1-upgrade: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT $TARGET_VERSION | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT $TARGET_VERSION | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Transactions verified> bank send, delegate, and withdraw rewards | |
run: tests/test_tx_fresh.sh | |
- name: _API endpoints check | |
run: tests/test_endpoints_api.sh localhost $VAL1_API_PORT | |
- name: _RPC endpoints check | |
run: tests/test_endpoints_rpc.sh localhost $VAL1_RPC_PORT | |
Baseline-2-globalfee: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Test globalfee module | |
run: | | |
tests/test_globalfee.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Transactions verified> bank send, delegate, and withdraw rewards | |
run: tests/test_tx_fresh.sh | |
- name: _API endpoints check | |
run: tests/test_endpoints_api.sh localhost $VAL1_API_PORT | |
- name: _RPC endpoints check | |
run: tests/test_endpoints_rpc.sh localhost $VAL1_RPC_PORT | |
- name: Test globalfee module | |
env: | |
COSMOS_SDK: v47 | |
run: | | |
tests/test_globalfee.sh | |
Baseline-3a-icsv310: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
ICS_310: true | |
CONSUMER_ICS: v3.1.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V310_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.1.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V310_BINARY: consumerd_v3.1.0 | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $CONSUMER_CHAIN_V310_BINARY_URL -O $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY -q | |
chmod +x $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$CONSUMER_CHAIN_V310_BINARY runs off $CONSUMER_CHAIN_V310_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
CON1_API_PORT: 25301 | |
CON2_API_PORT: 25302 | |
CON3_API_PORT: 25303 | |
CON1_GRPC_PORT: 26301 | |
CON2_GRPC_PORT: 26302 | |
CON3_GRPC_PORT: 26303 | |
CON1_RPC_PORT: 27301 | |
CON2_RPC_PORT: 27302 | |
CON3_RPC_PORT: 27303 | |
CON1_P2P_PORT: 28301 | |
CON2_P2P_PORT: 28302 | |
CON3_P2P_PORT: 28303 | |
CON1_PPROF_PORT: 29301 | |
CON2_PPROF_PORT: 29302 | |
CON3_PPROF_PORT: 29303 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> ICS v3.1.0 chain 1 | |
env: | |
CON1_RPC_PORT: 27301 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > three-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' three-1.json > three-2.json | |
rly paths add testnet three-v310 three --file three-2.json | |
rly transact connection three | |
rly transact channel three --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v47 | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
CON1_API_PORT: 25601 | |
CON2_API_PORT: 25602 | |
CON3_API_PORT: 25603 | |
CON1_GRPC_PORT: 26601 | |
CON2_GRPC_PORT: 26602 | |
CON3_GRPC_PORT: 26603 | |
CON1_RPC_PORT: 27601 | |
CON2_RPC_PORT: 27602 | |
CON3_RPC_PORT: 27603 | |
CON1_P2P_PORT: 28601 | |
CON2_P2P_PORT: 28602 | |
CON3_P2P_PORT: 28603 | |
CON1_PPROF_PORT: 29601 | |
CON2_PPROF_PORT: 29602 | |
CON3_PPROF_PORT: 29603 | |
DOWNTIME_BLOCKS: 20 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
ICS_310: true | |
COSMOS_SDK: v47 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sudo systemctl enable $CONSUMER_SERVICE_3 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Consumer chain produces blocks> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > six-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' six-1.json > six-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID six --file six-2.json | |
rly transact connection six | |
rly transact channel six --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _CCV channel verified> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 2 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Stop validator services | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
sudo systemctl disable $CONSUMER_SERVICE_3 --now | |
sleep $(($COMMIT_TIMEOUT*30)) | |
- name: _Soft opt-out test> Validator must be jailed - 1 | |
run: tests/test_validator_jailed.sh $VALOPER_2 true | |
- name: _Soft opt-out test> Validator must not be jailed | |
run: tests/test_validator_jailed.sh $VALOPER_3 false | |
- name: Unjail validator | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sleep $(($COMMIT_TIMEOUT*10)) | |
$CHAIN_BINARY tx slashing unjail --from $WALLET_2 --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 | |
sleep $(($COMMIT_TIMEOUT*2)) | |
- name: _Soft opt-out test> Validator must be unjailed | |
run: tests/test_validator_jailed.sh $VALOPER_2 false | |
# - name: Stop validator services | |
# env: | |
# CONSUMER_SERVICE_2: six_2.service | |
# run: | | |
# sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
# sleep $(($COMMIT_TIMEOUT*30)) | |
# - name: _Soft opt-out test> Validator must be jailed - 2 | |
# run: tests/test_validator_jailed.sh $VALOPER_2 true | |
Baseline-3b-icsv310-some-keys-assigned: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
ICS_310: true | |
CONSUMER_ICS: v3.1.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V310_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.1.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V310_BINARY: consumerd_v3.1.0 | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $CONSUMER_CHAIN_V310_BINARY_URL -O $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY -q | |
chmod +x $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$CONSUMER_CHAIN_V310_BINARY runs off $CONSUMER_CHAIN_V310_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
CON1_API_PORT: 25301 | |
CON2_API_PORT: 25302 | |
CON3_API_PORT: 25303 | |
CON1_GRPC_PORT: 26301 | |
CON2_GRPC_PORT: 26302 | |
CON3_GRPC_PORT: 26303 | |
CON1_RPC_PORT: 27301 | |
CON2_RPC_PORT: 27302 | |
CON3_RPC_PORT: 27303 | |
CON1_P2P_PORT: 28301 | |
CON2_P2P_PORT: 28302 | |
CON3_P2P_PORT: 28303 | |
CON1_PPROF_PORT: 29301 | |
CON2_PPROF_PORT: 29302 | |
CON3_PPROF_PORT: 29303 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_some_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> ICS v3.1.0 chain 1 | |
env: | |
CON1_RPC_PORT: 27301 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > three-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' three-1.json > three-2.json | |
rly paths add testnet three-v310 three --file three-2.json | |
rly transact connection three | |
rly transact channel three --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v47 | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
CON1_API_PORT: 25601 | |
CON2_API_PORT: 25602 | |
CON3_API_PORT: 25603 | |
CON1_GRPC_PORT: 26601 | |
CON2_GRPC_PORT: 26602 | |
CON3_GRPC_PORT: 26603 | |
CON1_RPC_PORT: 27601 | |
CON2_RPC_PORT: 27602 | |
CON3_RPC_PORT: 27603 | |
CON1_P2P_PORT: 28601 | |
CON2_P2P_PORT: 28602 | |
CON3_P2P_PORT: 28603 | |
CON1_PPROF_PORT: 29601 | |
CON2_PPROF_PORT: 29602 | |
CON3_PPROF_PORT: 29603 | |
DOWNTIME_BLOCKS: 20 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_some_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
ICS_310: true | |
COSMOS_SDK: v47 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sudo systemctl enable $CONSUMER_SERVICE_3 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Consumer chain produces blocks> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > six-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' six-1.json > six-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID six --file six-2.json | |
rly transact connection six | |
rly transact channel six --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _CCV channel verified> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 2 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Stop validator services | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
sudo systemctl disable $CONSUMER_SERVICE_3 --now | |
sleep $(($COMMIT_TIMEOUT*30)) | |
- name: _Soft opt-out test> Validator must be jailed - 1 | |
run: tests/test_validator_jailed.sh $VALOPER_2 true | |
- name: _Soft opt-out test> Validator must not be jailed | |
run: tests/test_validator_jailed.sh $VALOPER_3 false | |
- name: Unjail validator | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sleep $(($COMMIT_TIMEOUT*10)) | |
$CHAIN_BINARY tx slashing unjail --from $WALLET_2 --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 | |
sleep $(($COMMIT_TIMEOUT*2)) | |
- name: _Soft opt-out test> Validator must be unjailed | |
run: tests/test_validator_jailed.sh $VALOPER_2 false | |
Baseline-3c-icsv310-no-keys-assigned: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
ICS_310: true | |
CONSUMER_ICS: v3.1.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V310_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.1.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V310_BINARY: consumerd_v3.1.0 | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $CONSUMER_CHAIN_V310_BINARY_URL -O $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY -q | |
chmod +x $HOME/go/bin/$CONSUMER_CHAIN_V310_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$CONSUMER_CHAIN_V310_BINARY runs off $CONSUMER_CHAIN_V310_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
CON1_API_PORT: 25301 | |
CON2_API_PORT: 25302 | |
CON3_API_PORT: 25303 | |
CON1_GRPC_PORT: 26301 | |
CON2_GRPC_PORT: 26302 | |
CON3_GRPC_PORT: 26303 | |
CON1_RPC_PORT: 27301 | |
CON2_RPC_PORT: 27302 | |
CON3_RPC_PORT: 27303 | |
CON1_P2P_PORT: 28301 | |
CON2_P2P_PORT: 28302 | |
CON3_P2P_PORT: 28303 | |
CON1_PPROF_PORT: 29301 | |
CON2_PPROF_PORT: 29302 | |
CON3_PPROF_PORT: 29303 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_no_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CONSUMER_HOME_2: /home/runner/.three_2 | |
CONSUMER_HOME_3: /home/runner/.three_3 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_SERVICE_1: three_1.service | |
CONSUMER_SERVICE_2: three_2.service | |
CONSUMER_SERVICE_3: three_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> ICS v3.1.0 chain 1 | |
env: | |
CON1_RPC_PORT: 27301 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for three-v310 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > three-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' three-1.json > three-2.json | |
rly paths add testnet three-v310 three --file three-2.json | |
rly transact connection three | |
rly transact channel three --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
CON1_RPC_PORT: 27301 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: three-v310 | |
CONSUMER_HOME_1: /home/runner/.three_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Add consumer chain with ICS v3.1.0 | |
env: | |
COSMOS_SDK: v47 | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.1.0 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
CON1_API_PORT: 25601 | |
CON2_API_PORT: 25602 | |
CON3_API_PORT: 25603 | |
CON1_GRPC_PORT: 26601 | |
CON2_GRPC_PORT: 26602 | |
CON3_GRPC_PORT: 26603 | |
CON1_RPC_PORT: 27601 | |
CON2_RPC_PORT: 27602 | |
CON3_RPC_PORT: 27603 | |
CON1_P2P_PORT: 28601 | |
CON2_P2P_PORT: 28602 | |
CON3_P2P_PORT: 28603 | |
CON1_PPROF_PORT: 29601 | |
CON2_PPROF_PORT: 29602 | |
CON3_PPROF_PORT: 29603 | |
DOWNTIME_BLOCKS: 20 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
scripts/init_consumer_assign_no_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
CONSUMER_HOME_2: /home/runner/.six_2 | |
CONSUMER_HOME_3: /home/runner/.six_3 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
ICS_310: true | |
COSMOS_SDK: v47 | |
run: | | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_SERVICE_1: six_1.service | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sudo systemctl enable $CONSUMER_SERVICE_3 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Consumer chain produces blocks> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for six-v310 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > six-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' six-1.json > six-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID six --file six-2.json | |
rly transact connection six | |
rly transact channel six --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _CCV channel verified> ICS v3.1.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27601 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.1.0 chain 2 | |
env: | |
CONSUMER_CHAIN_ID: six-v310 | |
CONSUMER_HOME_1: /home/runner/.six_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V310_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Stop validator services | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
CONSUMER_SERVICE_3: six_3.service | |
run: | | |
sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
sudo systemctl disable $CONSUMER_SERVICE_3 --now | |
sleep $(($COMMIT_TIMEOUT*30)) | |
- name: _Soft opt-out test> Validator must be jailed - 1 | |
run: tests/test_validator_jailed.sh $VALOPER_2 true | |
- name: _Soft opt-out test> Validator must not be jailed | |
run: tests/test_validator_jailed.sh $VALOPER_3 false | |
- name: Unjail validator | |
env: | |
CONSUMER_SERVICE_2: six_2.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sleep $(($COMMIT_TIMEOUT*10)) | |
$CHAIN_BINARY tx slashing unjail --from $WALLET_2 --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 | |
sleep $(($COMMIT_TIMEOUT*2)) | |
- name: _Soft opt-out test> Validator must be unjailed | |
run: tests/test_validator_jailed.sh $VALOPER_2 false | |
Baseline-4-icsv330: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
RECIPIENT: cosmos1r5v5srda7xfth3hn2s26txvrcrntldjumt8mhl | |
ICS_330: false | |
CONSUMER_ICS: v3.3.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V330_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-consumer-v3.3.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V330_BINARY: consumerd_v3.3.0 | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $CONSUMER_CHAIN_V330_BINARY_URL -O $HOME/go/bin/$CONSUMER_CHAIN_V330_BINARY -q | |
chmod +x $HOME/go/bin/$CONSUMER_CHAIN_V330_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$CONSUMER_CHAIN_V330_BINARY runs off $CONSUMER_CHAIN_V330_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add consumer chain with ICS v3.3.0 | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: four-v330 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.3.0 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
CONSUMER_HOME_2: /home/runner/.four_2 | |
CONSUMER_HOME_3: /home/runner/.four_3 | |
CONSUMER_SERVICE_1: four_1.service | |
CONSUMER_SERVICE_2: four_2.service | |
CONSUMER_SERVICE_3: four_3.service | |
CON1_API_PORT: 25401 | |
CON2_API_PORT: 25402 | |
CON3_API_PORT: 25403 | |
CON1_GRPC_PORT: 26401 | |
CON2_GRPC_PORT: 26402 | |
CON3_GRPC_PORT: 26403 | |
CON1_RPC_PORT: 27401 | |
CON2_RPC_PORT: 27402 | |
CON3_RPC_PORT: 27403 | |
CON1_P2P_PORT: 28401 | |
CON2_P2P_PORT: 28402 | |
CON3_P2P_PORT: 28403 | |
CON1_PPROF_PORT: 29401 | |
CON2_PPROF_PORT: 29402 | |
CON3_PPROF_PORT: 29403 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain four-v330 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
CONSUMER_HOME_2: /home/runner/.four_2 | |
CONSUMER_HOME_3: /home/runner/.four_3 | |
ICS_330: true | |
CONSUMER_ICS: v3.3.0 | |
PROVIDER_ICS: v2.4.0 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain four-v330 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
CONSUMER_SERVICE_1: four_1.service | |
CONSUMER_SERVICE_2: four_2.service | |
CONSUMER_SERVICE_3: four_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> ICS v3.3.0 chain 1 | |
env: | |
CON1_RPC_PORT: 27401 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for four-v330 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > four-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' four-1.json > four-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID four --file four-2.json | |
rly transact connection four | |
rly transact channel four --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> ICS v3.3.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
CON1_RPC_PORT: 27401 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> ICS v3.3.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> ICS v3.3.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
CON1_RPC_PORT: 27401 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.3.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: four-v330 | |
CONSUMER_HOME_1: /home/runner/.four_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Add consumer chain with ICS v3.3.0 | |
env: | |
COSMOS_SDK: v47 | |
CONSUMER_CHAIN_ID: eight-v330 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v3.3.0 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
CONSUMER_HOME_1: /home/runner/.eight_1 | |
CONSUMER_HOME_2: /home/runner/.eight_2 | |
CONSUMER_HOME_3: /home/runner/.eight_3 | |
CONSUMER_SERVICE_1: eight_1.service | |
CONSUMER_SERVICE_2: eight_2.service | |
CONSUMER_SERVICE_3: eight_3.service | |
CON1_API_PORT: 25801 | |
CON2_API_PORT: 25802 | |
CON3_API_PORT: 25803 | |
CON1_GRPC_PORT: 26801 | |
CON2_GRPC_PORT: 26802 | |
CON3_GRPC_PORT: 26803 | |
CON1_RPC_PORT: 27801 | |
CON2_RPC_PORT: 27802 | |
CON3_RPC_PORT: 27803 | |
CON1_P2P_PORT: 28801 | |
CON2_P2P_PORT: 28802 | |
CON3_P2P_PORT: 28803 | |
CON1_PPROF_PORT: 29801 | |
CON2_PPROF_PORT: 29802 | |
CON3_PPROF_PORT: 29803 | |
DOWNTIME_BLOCKS: 20 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain eight-v330 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
CONSUMER_HOME_1: /home/runner/.eight_1 | |
CONSUMER_HOME_2: /home/runner/.eight_2 | |
CONSUMER_HOME_3: /home/runner/.eight_3 | |
ICS_330: true | |
CONSUMER_ICS: v3.3.0 | |
PROVIDER_ICS: v3.3.0 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain eight-v330 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
CONSUMER_SERVICE_1: eight_1.service | |
CONSUMER_SERVICE_2: eight_2.service | |
CONSUMER_SERVICE_3: eight_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Consumer chain produces blocks> ICS v3.3.0 chain 2 | |
env: | |
CON1_RPC_PORT: 27801 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for eight-v330 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > eight-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' eight-1.json > eight-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID eight --file eight-2.json | |
rly transact connection eight | |
rly transact channel eight --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _CCV channel verified> ICS v3.3.0 chain 2 | |
env: | |
CONSUMER_HOME_1: /home/runner/.eight_1 | |
CON1_RPC_PORT: 27801 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v3.3.0 chain 2 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
CONSUMER_HOME_1: /home/runner/.eight_1 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V330_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Stop validator services | |
env: | |
CONSUMER_SERVICE_2: eight_2.service | |
CONSUMER_SERVICE_3: eight_3.service | |
run: | | |
sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
sudo systemctl disable $CONSUMER_SERVICE_3 --now | |
sleep $(($COMMIT_TIMEOUT*30)) | |
- name: _Soft opt-out test> Validator must be jailed - 1 | |
run: tests/test_validator_jailed.sh $VALOPER_2 true | |
- name: _Soft opt-out test> Validator must not be jailed | |
run: tests/test_validator_jailed.sh $VALOPER_3 false | |
- name: Unjail validator | |
env: | |
CONSUMER_SERVICE_2: eight_2.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sleep $(($COMMIT_TIMEOUT*10)) | |
$CHAIN_BINARY tx slashing unjail --from $WALLET_2 --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 | |
sleep $(($COMMIT_TIMEOUT*2)) | |
- name: _Soft opt-out test> Validator must be unjailed | |
run: tests/test_validator_jailed.sh $VALOPER_2 false | |
Baseline-5-icsv400: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
RECIPIENT: cosmos1r5v5srda7xfth3hn2s26txvrcrntldjumt8mhl | |
ICS_400: true | |
CONSUMER_ICS: v4.0.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
CONSUMER_DENOM: ucon | |
CONSUMER_FEES: 500 | |
CONSUMER_CHAIN_V400_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-consumer-v4.0.0/interchain-security-cd-linux | |
CONSUMER_CHAIN_V400_BINARY: consumerd_v4.0.0 | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $CONSUMER_CHAIN_V400_BINARY_URL -O $HOME/go/bin/$CONSUMER_CHAIN_V400_BINARY -q | |
chmod +x $HOME/go/bin/$CONSUMER_CHAIN_V400_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$CONSUMER_CHAIN_V400_BINARY runs off $CONSUMER_CHAIN_V400_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add consumer chain with ICS v4.0.0 | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: nine-v400 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v4.0.0 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
CONSUMER_HOME_2: /home/runner/.nine_2 | |
CONSUMER_HOME_3: /home/runner/.nine_3 | |
CONSUMER_SERVICE_1: nine_1.service | |
CONSUMER_SERVICE_2: nine_2.service | |
CONSUMER_SERVICE_3: nine_3.service | |
CON1_API_PORT: 25901 | |
CON2_API_PORT: 25902 | |
CON3_API_PORT: 25903 | |
CON1_GRPC_PORT: 26901 | |
CON2_GRPC_PORT: 26902 | |
CON3_GRPC_PORT: 26903 | |
CON1_RPC_PORT: 27901 | |
CON2_RPC_PORT: 27902 | |
CON3_RPC_PORT: 27903 | |
CON1_P2P_PORT: 28901 | |
CON2_P2P_PORT: 28902 | |
CON3_P2P_PORT: 28903 | |
CON1_PPROF_PORT: 29901 | |
CON2_PPROF_PORT: 29902 | |
CON3_PPROF_PORT: 29903 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain nine-v400 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
CONSUMER_HOME_2: /home/runner/.nine_2 | |
CONSUMER_HOME_3: /home/runner/.nine_3 | |
ICS_400: true | |
CONSUMER_ICS: v4.0.0 | |
PROVIDER_ICS: v2.4.0 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain nine-v400 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
CONSUMER_SERVICE_1: nine_1.service | |
CONSUMER_SERVICE_2: nine_2.service | |
CONSUMER_SERVICE_3: nine_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> ICS v4.0.0 chain 1 | |
env: | |
CON1_RPC_PORT: 27901 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for nine-v400 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > nine-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' nine-1.json > nine-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID nine --file nine-2.json | |
rly transact connection nine | |
rly transact channel nine --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> ICS v4.0.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
CON1_RPC_PORT: 27901 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> ICS v4.0.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
RECIPIENT: consumer1r5v5srda7xfth3hn2s26txvrcrntldju7725yc | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> ICS v4.0.0 chain 1 | |
env: | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
CON1_RPC_PORT: 27901 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v4.0.0 chain 1 | |
env: | |
CONSUMER_CHAIN_ID: nine-v400 | |
CONSUMER_HOME_1: /home/runner/.nine_1 | |
RECIPIENT: consumer1r5v5srda7xfth3hn2s26txvrcrntldju7725yc | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Add consumer chain with ICS v4.0.0 | |
env: | |
COSMOS_SDK: v47 | |
CONSUMER_CHAIN_ID: ten-v400 | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize consumer chain with ICS v4.0.0 | |
env: | |
CONSUMER_CHAIN_ID: ten-v400 | |
CONSUMER_HOME_1: /home/runner/.ten_1 | |
CONSUMER_HOME_2: /home/runner/.ten_2 | |
CONSUMER_HOME_3: /home/runner/.ten_3 | |
CONSUMER_SERVICE_1: ten_1.service | |
CONSUMER_SERVICE_2: ten_2.service | |
CONSUMER_SERVICE_3: ten_3.service | |
CON1_API_PORT: 45901 | |
CON2_API_PORT: 45902 | |
CON3_API_PORT: 45903 | |
CON1_GRPC_PORT: 46901 | |
CON2_GRPC_PORT: 46902 | |
CON3_GRPC_PORT: 46903 | |
CON1_RPC_PORT: 47901 | |
CON2_RPC_PORT: 47902 | |
CON3_RPC_PORT: 47903 | |
CON1_P2P_PORT: 48901 | |
CON2_P2P_PORT: 48902 | |
CON3_P2P_PORT: 48903 | |
CON1_PPROF_PORT: 49901 | |
CON2_PPROF_PORT: 49902 | |
CON3_PPROF_PORT: 49903 | |
DOWNTIME_BLOCKS: 20 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain ten-v400 | |
env: | |
CONSUMER_CHAIN_ID: ten-v400 | |
CONSUMER_HOME_1: /home/runner/.ten_1 | |
CONSUMER_HOME_2: /home/runner/.ten_2 | |
CONSUMER_HOME_3: /home/runner/.ten_3 | |
ICS_400: true | |
CONSUMER_ICS: v4.0.0 | |
PROVIDER_ICS: v3.3.0 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain ten-v400 | |
env: | |
CONSUMER_CHAIN_ID: eight-v330 | |
CONSUMER_SERVICE_1: ten_1.service | |
CONSUMER_SERVICE_2: ten_2.service | |
CONSUMER_SERVICE_3: ten_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Consumer chain produces blocks> ICS v4.0.0 chain 2 | |
env: | |
CON1_RPC_PORT: 47901 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for ten-v400 | |
env: | |
CONSUMER_CHAIN_ID: ten-v400 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > ten-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' ten-1.json > ten-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID ten --file ten-2.json | |
rly transact connection ten | |
rly transact channel ten --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _CCV channel verified> ICS v4.0.0 chain 2 | |
env: | |
CONSUMER_HOME_1: /home/runner/.ten_1 | |
CON1_RPC_PORT: 47901 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> ICS v4.0.0 chain 2 | |
env: | |
CONSUMER_CHAIN_ID: ten-v400 | |
CONSUMER_HOME_1: /home/runner/.ten_1 | |
RECIPIENT: consumer1r5v5srda7xfth3hn2s26txvrcrntldju7725yc | |
run: | | |
export CONSUMER_CHAIN_BINARY=$CONSUMER_CHAIN_V400_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Stop validator services | |
env: | |
CONSUMER_SERVICE_2: ten_2.service | |
CONSUMER_SERVICE_3: ten_3.service | |
run: | | |
sudo systemctl disable $CONSUMER_SERVICE_2 --now | |
sudo systemctl disable $CONSUMER_SERVICE_3 --now | |
sleep $(($COMMIT_TIMEOUT*30)) | |
- name: _Soft opt-out test> Validator must be jailed - 1 | |
run: tests/test_validator_jailed.sh $VALOPER_2 true | |
- name: _Soft opt-out test> Validator must not be jailed | |
run: tests/test_validator_jailed.sh $VALOPER_3 false | |
- name: Unjail validator | |
env: | |
CONSUMER_SERVICE_2: ten_2.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_2 --now | |
sleep $(($COMMIT_TIMEOUT*10)) | |
$CHAIN_BINARY tx slashing unjail --from $WALLET_2 --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 | |
sleep $(($COMMIT_TIMEOUT*2)) | |
- name: _Soft opt-out test> Validator must be unjailed | |
run: tests/test_validator_jailed.sh $VALOPER_2 false | |
Baseline-6-pfm: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Start PFM chain 1 | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
PFM_SERVICE: pfm_1.service | |
PFM_HOME: /home/runner/.pfm1 | |
PFM_CHAIN_ID: pfm1 | |
PFM_API_PORT: 25011 | |
PFM_GRPC_PORT: 26011 | |
PFM_RPC_PORT: 27011 | |
PFM_P2P_PORT: 28011 | |
PFM_PPROF_PORT: 29011 | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_pfm_chain.sh | |
sleep 5 | |
- name: Block production check | |
env: | |
PFM_RPC_PORT: 27011 | |
run: | | |
journalctl -u pfm_1.service | tail -n 100 | |
tests/test_block_production.sh 127.0.0.1 $PFM_RPC_PORT 5 # 5 blocks | |
- name: Start PFM chain 2 | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
PFM_SERVICE: pfm_2.service | |
PFM_HOME: /home/runner/.pfm2 | |
PFM_CHAIN_ID: pfm2 | |
PFM_API_PORT: 25012 | |
PFM_GRPC_PORT: 26012 | |
PFM_RPC_PORT: 27012 | |
PFM_P2P_PORT: 28012 | |
PFM_PPROF_PORT: 29012 | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_pfm_chain.sh | |
sleep 5 | |
- name: Block production check | |
env: | |
PFM_RPC_PORT: 27012 | |
run: tests/test_block_production.sh 127.0.0.1 $PFM_RPC_PORT 5 # 5 blocks | |
- name: Start PFM chain 3 | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
PFM_SERVICE: pfm_3.service | |
PFM_HOME: /home/runner/.pfm3 | |
PFM_CHAIN_ID: pfm3 | |
PFM_API_PORT: 25013 | |
PFM_GRPC_PORT: 26013 | |
PFM_RPC_PORT: 27013 | |
PFM_P2P_PORT: 28013 | |
PFM_PPROF_PORT: 29013 | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_pfm_chain.sh | |
sleep 5 | |
- name: Block production check | |
env: | |
PFM_RPC_PORT: 27013 | |
run: tests/test_block_production.sh 127.0.0.1 $PFM_RPC_PORT 5 # 5 blocks | |
- name: Create transfer channels for PFM test | |
run: | | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm1 -o json | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm2 -o json | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm3 -o json | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channels with Hermes..." | |
hermes create channel --new-client-connection --a-chain $CHAIN_ID --b-chain pfm1 --a-port transfer --b-port transfer --yes | |
hermes create channel --new-client-connection --a-chain pfm1 --b-chain pfm2 --a-port transfer --b-port transfer --yes | |
hermes create channel --new-client-connection --a-chain pfm2 --b-chain pfm3 --a-port transfer --b-port transfer --yes | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
echo "Paths" | |
rly paths new testnet pfm1 pfm-path-1 | |
rly paths new pfm1 pfm2 pfm-path-2 | |
rly paths new pfm2 pfm3 pfm-path-3 | |
echo "Clients" | |
rly transact client testnet pfm1 pfm-path-1 | |
rly transact client pfm1 pfm2 pfm-path-2 | |
rly transact client pfm2 pfm3 pfm-path-3 | |
sleep 5 | |
echo "Connections" | |
rly transact connection pfm-path-1 | |
rly transact connection pfm-path-2 | |
rly transact connection pfm-path-3 | |
sleep 5 | |
echo "Channels" | |
rly transact channel pfm-path-1 | |
rly transact channel pfm-path-2 | |
rly transact channel pfm-path-3 | |
fi | |
sudo systemctl restart $RELAYER | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm1 -o json | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm2 -o json | |
# $CHAIN_BINARY q ibc connection connections --home /home/runner/.pfm3 -o json | |
- name: _Test PFM transfers | |
env: | |
PFM_HOME: /home/runner/.pfm3 | |
run: | | |
tests/test_pfm_transfers.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Transactions verified> bank send, delegate, and withdraw rewards | |
run: tests/test_tx_fresh.sh | |
- name: _API endpoints check | |
run: tests/test_endpoints_api.sh localhost $VAL1_API_PORT | |
- name: _RPC endpoints check | |
run: tests/test_endpoints_rpc.sh localhost $VAL1_RPC_PORT | |
- name: _Test PFM transfers | |
env: | |
PFM_HOME: /home/runner/.pfm3 | |
run: | | |
tests/test_pfm_transfers.sh | |
Baseline-7-lsm: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix-relayer | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix-relayer.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
# Consumer chain variables | |
RECIPIENT: cosmos1r5v5srda7xfth3hn2s26txvrcrntldjumt8mhl | |
CONSUMER_ICS: v3.2.0 | |
PROVIDER_ICS: v2.4.0 | |
# Reference ICS chain variables | |
STRIDE_V18_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/stride-consumer-v18.0.0/strided-consumer-linux | |
ICS_TRANSFORM_BINARY_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/ics-v3.3.0-transform/interchain-security-cd | |
ICS_TRANSFORM_BINARY: cd-transform | |
STRIDE_CHAIN_BINARY: strided | |
STRIDE_WALLET_1: stride1r5v5srda7xfth3hn2s26txvrcrntldjucq88rn | |
STRIDE_WALLET_LIQUID: stride17n3vkvg6lwf98p3kanlhlyjk6zkrfla9zrhma6 | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Select Hermes | |
if: ${{ matrix.relayer == 'hermes' }} | |
run: echo "RELAYER=hermes" >> $GITHUB_ENV | |
- name: Select Go Relayer | |
if: ${{ matrix.relayer == 'rly' }} | |
run: echo "RELAYER=rly" >> $GITHUB_ENV | |
- name: Set up relayer | |
run: scripts/setup_relayer.sh | |
- name: Download consumer chain binaries | |
run: | | |
wget $STRIDE_V18_BINARY_URL -O $HOME/go/bin/$STRIDE_CHAIN_BINARY -q | |
chmod +x $HOME/go/bin/$STRIDE_CHAIN_BINARY | |
wget $ICS_TRANSFORM_BINARY_URL -O $HOME/go/bin/$ICS_TRANSFORM_BINARY -q | |
chmod +x $HOME/go/bin/$ICS_TRANSFORM_BINARY | |
- name: Consumer chain binary URLs | |
run: | | |
echo "$STRIDE_BINARY runs off $STRIDE_V18_BINARY_URL" | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Add Stride consumer chain | |
env: | |
COSMOS_SDK: v45 | |
CONSUMER_CHAIN_ID: five | |
run: | | |
scripts/add_consumer.sh | |
- name: Initialize Stride consumer chain | |
env: | |
CONSUMER_CHAIN_ID: five | |
CONSUMER_DENOM: ustrd | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CONSUMER_HOME_2: /home/runner/.five_2 | |
CONSUMER_HOME_3: /home/runner/.five_3 | |
CONSUMER_SERVICE_1: five_1.service | |
CONSUMER_SERVICE_2: five_2.service | |
CONSUMER_SERVICE_3: five_3.service | |
CON1_API_PORT: 25501 | |
CON2_API_PORT: 25502 | |
CON3_API_PORT: 25503 | |
CON1_GRPC_PORT: 26501 | |
CON2_GRPC_PORT: 26502 | |
CON3_GRPC_PORT: 26503 | |
CON1_RPC_PORT: 27501 | |
CON2_RPC_PORT: 27502 | |
CON3_RPC_PORT: 27503 | |
CON1_P2P_PORT: 28501 | |
CON2_P2P_PORT: 28502 | |
CON3_P2P_PORT: 28503 | |
CON1_PPROF_PORT: 29501 | |
CON2_PPROF_PORT: 29502 | |
CON3_PPROF_PORT: 29503 | |
DOWNTIME_BLOCKS: 100000 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$STRIDE_CHAIN_BINARY | |
scripts/init_consumer_assign_keys.sh | |
sleep 20 | |
- name: Prepare consumer chain five | |
env: | |
CONSUMER_CHAIN_ID: five | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CONSUMER_HOME_2: /home/runner/.five_2 | |
CONSUMER_HOME_3: /home/runner/.five_3 | |
CONSUMER_ICS: v3.2.0 | |
PROVIDER_ICS: v2.4.0 | |
run: | | |
export CONSUMER_CHAIN_BINARY=$STRIDE_CHAIN_BINARY | |
scripts/prepare_consumer.sh | |
- name: Start consumer chain five | |
env: | |
CONSUMER_CHAIN_ID: five | |
CONSUMER_SERVICE_1: five_1.service | |
CONSUMER_SERVICE_2: five_2.service | |
CONSUMER_SERVICE_3: five_3.service | |
run: | | |
sudo systemctl enable $CONSUMER_SERVICE_1 --now | |
sleep 5 | |
journalctl -u $CONSUMER_SERVICE_1 | |
- name: _Pre-upgrade consumer chain produces blocks> Stride chain | |
env: | |
CON1_RPC_PORT: 27501 | |
run: tests/test_block_production.sh 127.0.0.1 $CON1_RPC_PORT 5 | |
- name: Establish CCV channel for Stride chain | |
env: | |
CONSUMER_CHAIN_ID: five | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
if [ $RELAYER == "hermes" ]; then | |
echo "Creating channel with Hermes..." | |
hermes create connection --a-chain $CONSUMER_CHAIN_ID --a-client 07-tendermint-0 --b-client $client_id | |
hermes create channel --a-chain $CONSUMER_CHAIN_ID --a-port consumer --b-port provider --order ordered --a-connection connection-0 --channel-version 1 | |
elif [ $RELAYER == "rly" ]; then | |
echo "Creating channel with Go relayer..." | |
jq --arg CHAIN "$CONSUMER_CHAIN_ID" '.src."chain-id" = $CHAIN' templates/rly-path-template.json > five-1.json | |
jq --arg CLIENT "$client_id" '.dst."client-id" = $CLIENT' five-1.json > five-2.json | |
rly paths add $CHAIN_ID $CONSUMER_CHAIN_ID five --file five-2.json | |
rly transact connection five | |
rly transact channel five --src-port consumer --dst-port provider --order ordered --version 1 | |
fi | |
sudo systemctl restart $RELAYER | |
sleep 10 | |
- name: _Pre-upgrade CCV channel verified> Stride chain | |
env: | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CON1_RPC_PORT: 27501 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _Pre-upgrade IBC transfer successful> Stride chain | |
env: | |
CONSUMER_CHAIN_ID: five | |
CONSUMER_CHAIN_BINARY: strided | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CONSUMER_DENOM: ustrd | |
RECIPIENT: stride1r5v5srda7xfth3hn2s26txvrcrntldjucq88rn | |
run: | | |
export CONSUMER_CHAIN_BINARY=$STRIDE_CHAIN_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: Register and fund ICA | |
env: | |
ICA_CHAIN_HOME: /home/runner/.five_1 | |
run: scripts/setup_ica.sh | |
- name: Set up happy path LSM accounts | |
run: | | |
scripts/lsm_account_setup.sh | |
- name: Set test LSM params | |
run: | | |
scripts/param_change.sh templates/proposal-global-liquid-cap.json | |
scripts/param_change.sh templates/proposal-validator-liquid-cap.json | |
scripts/param_change.sh templates/proposal-validator-bond-factor.json | |
- name: Create LSM log file | |
run: | | |
touch lsm_log.csv | |
echo "user flow,action,account,amount,balance,del_shares,del_balance,val1_tokens,val1_shares,val1_bond_shares,val1_liquid_shares,val2_tokens,val2_shares,val2_bond_shares,val2_liquid_shares" >> lsm_log.csv | |
- name: _Pre-upgrade LSM happy path | |
env: | |
BASE_FEES: 3000 | |
CONSUMER_FEES: 1000 | |
CONSUMER_CHAIN_ID: five | |
STRIDE_HOME_1: /home/runner/.five_1 | |
VALOPER_TOKENIZATION: 1 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
export IBC_CHANNEL=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_lsm_happy_path.sh | |
- name: _Pre-upgrade LSM Liquid Staking Provider happy path | |
env: | |
STRIDE_HOME_1: /home/runner/.five_1 | |
LSP_COUNT: 1 | |
COSMOS_SDK: v45 | |
run: tests/test_ica_delegate_happy.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Restart relayer | |
run: sudo systemctl restart $RELAYER | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _CCV channel verified> Stride chain | |
env: | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CON1_RPC_PORT: 27501 | |
run: tests/test_ccv_key_assignment.sh | |
- name: _IBC transfer successful> Stride chain | |
env: | |
CONSUMER_CHAIN_ID: five | |
CONSUMER_CHAIN_BINARY: strided | |
CONSUMER_HOME_1: /home/runner/.five_1 | |
CONSUMER_DENOM: ustrd | |
RECIPIENT: stride1r5v5srda7xfth3hn2s26txvrcrntldjucq88rn | |
run: | | |
export CONSUMER_CHAIN_BINARY=$STRIDE_CHAIN_BINARY | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
channel_id=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_consumer_ibc_transfer.sh $channel_id | |
- name: _LSM happy path | |
env: | |
BASE_FEES: 3000 | |
CONSUMER_FEES: 1000 | |
CONSUMER_CHAIN_ID: five | |
STRIDE_HOME_1: /home/runner/.five_1 | |
VALOPER_TOKENIZATION: 2 | |
run: | | |
client_id=$($CHAIN_BINARY q provider list-consumer-chains -o json --home $HOME_1 | jq -r --arg chain "$CONSUMER_CHAIN_ID" '.chains[] | select(.chain_id==$chain).client_id') | |
connection_id=$($CHAIN_BINARY q ibc connection connections -o json --home $HOME_1 | jq -r --arg client "$client_id" '.connections[] | select(.client_id==$client).id') | |
export IBC_CHANNEL=$($CHAIN_BINARY q ibc channel connections $connection_id -o json --home $HOME_1 | jq -r '.channels[] | select(.port_id=="transfer").channel_id') | |
tests/test_lsm_happy_path.sh | |
- name: _LSM Liquid Staking Provider happy path | |
env: | |
STRIDE_HOME_1: /home/runner/.five_1 | |
LSP_COUNT: 2 | |
COSMOS_SDK: v47 | |
run: tests/test_ica_delegate_happy.sh | |
v15-1-min-commission: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: _Pre-upgrade minimum commission test | |
env: | |
UPGRADED_V15: false | |
run: | | |
tests/gaia-v15/test_min_commission.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Minimum commission test | |
env: | |
UPGRADED_V15: true | |
run: | | |
tests/gaia-v15/test_min_commission.sh | |
v15-2-min-deposit: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: _Pre-upgrade minimum deposit test | |
env: | |
UPGRADED_V15: false | |
run: | | |
tests/gaia-v15/test_min_deposit.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Minimum deposit test | |
env: | |
UPGRADED_V15: true | |
run: | | |
tests/gaia-v15/test_min_deposit.sh | |
v15-3-voter-requirements: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: _Pre-upgrade voting test | |
env: | |
UPGRADED_V15: false | |
run: | | |
tests/gaia-v15/test_voting.sh | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Voting test | |
env: | |
UPGRADED_V15: true | |
run: | | |
tests/gaia-v15/test_voting.sh | |
v15-4-vesting-clawback: | |
runs-on: ubuntu-22.04 | |
needs: set-version-matrix | |
strategy: | |
matrix: | |
${{ fromJSON(needs.set-version-matrix.outputs.upgrade_versions) }} | |
fail-fast: false | |
env: | |
COSMOVISOR_VERSION: ${{ matrix.cv_version }} | |
UPGRADE_MECHANISM: ${{ matrix.upgrade_mechanism }} | |
CB_ACCT: cosmos145hytrc49m0hn6fphp8d5h4xspwkawcuzmx498 | |
V_ACCT: cosmos1n7qdtcnagfvs8p4t537c5yn2dylw2e7l7a2htm | |
VESTING_TARGET: "1720000000" | |
steps: | |
- name: start-version | |
run: echo ${{matrix.gaia_version}} | |
- name: target-version | |
run: echo ${{matrix.upgrade_version}} | |
- name: target-commit | |
if: ${{ matrix.upgrade_version == 'main' }} | |
run: | | |
BUILD_TAG=gaiad-linux-${{matrix.upgrade_version}} | |
TARGET_COMMIT=$(curl -s -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/hyphacoop/cosmos-builds/releases/tags/$BUILD_TAG | jq -r '.name') | |
echo TARGET_COMMIT: $TARGET_COMMIT | |
- name: Update PATH | |
run: | | |
mkdir -p $HOME/go/bin | |
echo "$HOME/go/bin" >> $GITHUB_PATH | |
echo "$HOME/.hermes" >> $GITHUB_PATH | |
echo "$HOME/.relayer" >> $GITHUB_PATH | |
- name: Bypass the grub-efi-amd64-signed package | |
run: sudo apt-mark hold grub-efi-amd64-signed | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install toml-cli | |
- name: Install Cosmovisor > v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version != 'v1.3.0' }} | |
run: | | |
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Install Cosmovisor v1.3.0 | |
if: ${{ (matrix.upgrade_mechanism == 'cv_manual' || matrix.upgrade_mechanism == 'cv_auto') && matrix.cv_version == 'v1.3.0' }} | |
run: | | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@$COSMOVISOR_VERSION | |
echo "COSMOVISOR=true" >> $GITHUB_ENV | |
echo "$HOME_1/cosmovisor/current/bin" >> $GITHUB_PATH | |
- name: Start chain | |
env: | |
START_VERSION: ${{matrix.gaia_version}} | |
run: | | |
export CHAIN_BINARY_URL=https://github.com/cosmos/gaia/releases/download/$START_VERSION/gaiad-$START_VERSION-linux-amd64 | |
scripts/start_chain.sh | |
- name: Check Gaia log | |
run: sudo journalctl -u $PROVIDER_SERVICE_1 | |
- name: Print Gaia version | |
run: $CHAIN_BINARY version --long | |
- name: Block production check | |
run: tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 5 # 5 blocks | |
- name: Create clawback vesting accounts | |
run: | | |
tx_vesting_acc_tx_json=$($CHAIN_BINARY tx vesting create-vesting-account $CB_ACCT 100000000uatom $VESTING_TARGET --from $WALLET_1 --chain-id $CHAIN_ID --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 -o json) | |
echo "$tx_vesting_acc_tx_json" | jq '.' | |
echo "TX_VESTING_ACC_TX_JSON=$tx_vesting_acc_tx_json" >> $GITHUB_ENV | |
sleep $(($COMMIT_TIMEOUT+2)) | |
tx_vesting_acc2_tx_json=$($CHAIN_BINARY tx vesting create-vesting-account $V_ACCT 100000000uatom $VESTING_TARGET --from $WALLET_1 --chain-id $CHAIN_ID --gas $GAS --gas-adjustment $GAS_ADJUSTMENT --gas-prices $GAS_PRICE$DENOM -y --home $HOME_1 -o json) | |
echo "$tx_vesting_acc2_tx_json" | jq '.' | |
echo "TX_VESTING_ACC2_TX_JSON=$tx_vesting_acc2_tx_json" >> $GITHUB_ENV | |
sleep $(($COMMIT_TIMEOUT+2)) | |
- name: Pre-upgrade vesting account check | |
# env: | |
# UPGRADED_V15: false | |
run: | | |
acc_type=$($CHAIN_BINARY --home $HOME_1 q account $CB_ACCT -o json | jq -r '."@type"') | |
echo "Account type is: $acc_type" | |
if [ "$acc_type" != "/cosmos.vesting.v1beta1.ContinuousVestingAccount" ]; then | |
echo "Account is not a vesting account" | |
exit 1 | |
fi | |
- name: Test software upgrade for published releases | |
if: ${{ matrix.upgrade_version != 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/cosmos/gaia/releases/download/${{ matrix.upgrade_version }}/gaiad-${{ matrix.upgrade_version }}-linux-amd64 | |
run: | | |
echo $DOWNLOAD_URL | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: Test software upgrade for main branch | |
if: ${{ matrix.upgrade_version == 'main' }} | |
env: | |
DOWNLOAD_URL: https://github.com/hyphacoop/cosmos-builds/releases/download/gaiad-linux-main/gaiad-linux | |
run: | | |
scripts/software_upgrade.sh 127.0.0.1 $VAL1_RPC_PORT v15 | |
- name: _Blocks produced after upgrade | |
run: | | |
tests/test_block_production.sh 127.0.0.1 $VAL1_RPC_PORT 10 | |
- name: Flush "migration successful" lines | |
run: | | |
$CHAIN_BINARY keys list --home $HOME_1 | |
- name: _Clawback test | |
run: | | |
tests/gaia-v15/test_clawback.sh |