Skip to content

param change path

param change path #21

---
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