Skip to content

Add configuration and scripts for rosetta-kava mainnet CI #56

Add configuration and scripts for rosetta-kava mainnet CI

Add configuration and scripts for rosetta-kava mainnet CI #56

Workflow file for this run

name: Run Tests Against Local Kava Network
# There are 2 triggers for this workflow:
# - workflow was triggered by repository_dispatch event which was sent by kava repo, in that case tests will be run against
# specified version of kava (github.event.client_payload.ref) and default branch of rosetta
# - workflow was triggered by commit in rosetta-kava repo, in that case tests will be run against
# default branch of kava and specified version of rosetta (github.ref)
on:
# repository_dispatch event will be sent by kava on every kava commit to master
repository_dispatch:
types: [ run-rosetta-tests ]
# run CI on any push to the master branch
push:
branches: [ master ]
# run CI on pull requests to master
pull_request:
branches:
- master
jobs:
setup-and-run-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout rosetta-kava
uses: actions/checkout@v4
with:
path: rosetta-kava
# TODO(yevhenii): consider reusing already built kava docker image instead of rebuilding it
- name: Checkout kava
uses: actions/checkout@v4
with:
repository: Kava-Labs/kava
# There are 2 cases here:
# - workflow was triggered by repository_dispatch event which was sent by kava repo, in that case we're using
# kava version provided in event: github.event.client_payload.ref
# - workflow was triggered by commit in rosetta-kava repo, in that case github.event.client_payload.ref will be empty
# and default branch will be used instead
ref: ${{ github.event.client_payload.ref }}
path: kava
submodules: 'true'
- name: Print rosetta version
run: |
git branch
git rev-parse HEAD
working-directory: ./rosetta-kava
- name: Print kava version
run: |
git branch
git rev-parse HEAD
working-directory: ./kava
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: rosetta-kava/go.mod
- name: Cache Go Modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('./rosetta-kava/**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Build kava docker image
run: make docker-build
working-directory: ./kava
- name: Install kvtool
run: make install
working-directory: ./kava/tests/e2e/kvtool
- name: Run kava docker container
run: KAVA_TAG=local kvtool t bootstrap
- name: Wait until kava node is ready to serve traffic
run: bash ${GITHUB_WORKSPACE}/rosetta-kava/.github/scripts/wait-for-node-init.sh
- name: Run integration tests
run: KAVA_RPC_URL=http://localhost:26657 NETWORK=kava-local PORT=4000 SKIP_LIVE_NODE_TESTS=true make test-integration
working-directory: ./rosetta-kava
# Run kava e2e tests to simulate load before running "rosetta-cli check:data"
# Tests are run against already running kava node, details: https://github.com/Kava-Labs/kava/blob/master/tests/e2e/.env.live-network-example
- name: Run kava e2e tests
run: make test-e2e
working-directory: ./kava
env:
# E2E_RUN_KVTOOL_NETWORKS must be false to trigger run on live network
E2E_RUN_KVTOOL_NETWORKS: false
# Configure the endpoints for connecting to the running network here.
E2E_KAVA_RPC_URL: "http://localhost:26657"
E2E_KAVA_GRPC_URL: "http://localhost:9090"
E2E_KAVA_EVM_RPC_URL: "http://localhost:8545"
# E2E_INCLUDE_IBC_TESTS is not currently supported for running tests against a live network.
E2E_INCLUDE_IBC_TESTS: false
- name: Download coinbase rosetta-cli
run: "curl -sSfL https://raw.githubusercontent.com/coinbase/rosetta-cli/master/scripts/install.sh | sh -s"
working-directory: ./rosetta-kava
- name: Start rosetta server
run: .github/scripts/kava-localnet-ci/setup.sh
shell: bash
working-directory: ./rosetta-kava
- name: Run check:construction test
run: .github/scripts/kava-localnet-ci/construction.sh
shell: bash
working-directory: ./rosetta-kava
- name: Run check:data test
run: .github/scripts/kava-localnet-ci/cli.sh
shell: bash
working-directory: ./rosetta-kava
- name: Send slack notification if job failed
uses: slackapi/slack-github-action@v1.26.0
# send slack notification only if workflow was triggered by repository_dispatch event
# if it was triggered by commit to rosetta-kava repo - there is no point to alert, it's visible in rosetta-kava CI
if: ${{ failure() && github.event_name == 'repository_dispatch' }}
with:
channel-id: ${{ vars.SLACK_CHANNEL_ID }}
slack-message: "Rosetta-kava CI failed, details: https://github.com/Kava-Labs/rosetta-kava/actions/runs/${{github.run_id}}"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_ALERTS_BOT_TOKEN }}