Merge pull request #74 from Kava-Labs/yevhenii/rosetta-mainnet-ci #58
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 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 }} |