Use external fixturenet stack in CI (#3)
All checks were successful
Tests / Run Blobscan scraper tests (push) Successful in 2m16s
Tests / Run Beacon collector tests (push) Successful in 31m54s

Also runs new BlobTx tests - cerc-io/system-tests#13.

Depends on
- cerc-io/fixturenet-eth-stacks#21
- cerc-io/ipld-eth-server#266
- cerc-io/system-tests#13

Reviewed-on: #3
This commit is contained in:
Roy Crihfield 2024-08-07 04:53:17 +00:00
parent 1d1ee73ff2
commit 638c43fd3b
3 changed files with 60 additions and 44 deletions

View File

@ -9,15 +9,18 @@ on:
- ci-test - ci-test
env: env:
SO_VERSION: roysc/fix-eth-stacks SO_VERSION: v1.1.0-36d4969-202407091537
SYSTEM_TESTS_REF: roysc/test-blob-tx SYSTEM_TESTS_REF: main
FIXTURENET_ETH_STACKS_REF: main
jobs: jobs:
test-beacon-collector: test-beacon-collector:
name: Run Beacon collector tests name: Run Beacon collector tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with:
progress: false
- uses: actions/setup-go@v4 - uses: actions/setup-go@v4
with: with:
go-version-file: 'go.mod' go-version-file: 'go.mod'
@ -29,37 +32,42 @@ jobs:
with: with:
python-version: 3.11 python-version: 3.11
- name: "Install stack-orchestrator" - name: Install stack-orchestrator
uses: actions/checkout@v3 run: |
with: curl -L -O https://github.com/cerc-io/stack-orchestrator/releases/download/$SO_VERSION/laconic-so
repository: cerc-io/stack-orchestrator chmod +x laconic-so
ref: ${{ env.SO_VERSION }} echo PATH="$PATH:$(pwd)" >> $GITHUB_ENV
path: ./stack-orchestrator
- run: pip install ./stack-orchestrator
- name: "Clone system-tests" - name: "Clone system-tests"
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: cerc-io/system-tests repository: cerc-io/system-tests
ref: ${{ env.SYSTEM_TESTS_REF }} ref: ${{ env.SYSTEM_TESTS_REF }}
path: ./system-tests path: ./system-tests
token: ${{ secrets.CICD_REPO_TOKEN }} token: ${{ secrets.CICD_REPO_TOKEN }}
progress: false
- name: "Install pytest" - name: "Install pytest"
working-directory: ./system-tests working-directory: ./system-tests
run: pip3 install pytest run: pip3 install pytest
- name: "Clone fixturenet stack repo"
uses: actions/checkout@v4
with:
repository: cerc-io/fixturenet-eth-stacks
ref: ${{ env.FIXTURENET_ETH_STACKS_REF }}
path: ./fixturenet-eth-stacks
progress: false
- name: "Run fixturenet stack" - name: "Run fixturenet stack"
run: ./scripts/integration-setup.sh run: ./scripts/run-test-stack.sh ./fixturenet-eth-stacks/stack-orchestrator/stacks/fixturenet-plugeth
- name: "Run server" - name: "Run server"
run: docker compose -f test/compose.yml up --wait --quiet-pull run: docker compose -f test/compose.yml up --wait --quiet-pull
- name: "Run tests" - name: "Run tests"
working-directory: ./system-tests working-directory: ./system-tests
# Work around dependency conflicts: # Work around dependency conflict in system-tests:
# - web3 uses an older eth-account until (unreleased) v7 # web3 uses an older eth-account until (unreleased) v7
# - old pydantic is pinned by stack-orchestrator
run: | run: |
pip3 install -r requirements.txt pip3 install -r requirements.txt
pip3 install --no-deps 'eth-account>=0.12.3' pip3 install --no-deps 'eth-account>=0.12.3,<0.13'
pip3 install 'pydantic>=2.0.0' pip3 install 'pydantic>=2.0.0'
python3 -m pytest -vv -k test_blob_tx python3 -m pytest -vv -k test_blob_tx
@ -67,7 +75,9 @@ jobs:
name: Run Blobscan scraper tests name: Run Blobscan scraper tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with:
progress: false
- uses: actions/setup-go@v4 - uses: actions/setup-go@v4
with: with:
go-version-file: 'go.mod' go-version-file: 'go.mod'

View File

@ -1,27 +0,0 @@
#!/bin/bash
# Builds and deploys a stack with only what we need.
# This script assumes it is running in the project root.
set -e
laconic_so="${LACONIC_SO:-laconic-so} --stack $(readlink -f test) --verbose"
config_dir=$(readlink -f "${CONFIG_DIR:-$(mktemp -d)}")
# Prevent conflicting tty output
export BUILDKIT_PROGRESS=plain
# By default assume we are running in the project root
export CERC_REPO_BASE_DIR="${CERC_REPO_BASE_DIR:-..}"
# The debugger can swallow error messages on panic
echo CERC_REMOTE_DEBUG=false >> $config_dir/stack.env
set -x
if [[ -z $SKIP_BUILD ]]; then
$laconic_so setup-repositories
$laconic_so build-containers
fi
$laconic_so deploy \
--env-file $config_dir/stack.env \
--cluster test up

33
scripts/run-test-stack.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
set -e
stack_dir=$(readlink -f "$1")
[[ -d "$stack_dir" ]]
laconic_so="laconic-so --verbose --stack $stack_dir"
CONFIG_DIR=$(readlink -f "${CONFIG_DIR:-$(mktemp -d)}")
# By default assume we are running in the project root.
export CERC_REPO_BASE_DIR="${CERC_REPO_BASE_DIR:-$(git rev-parse --show-toplevel)/..}"
# Don't run geth/plugeth in the debugger, it will swallow error backtraces
echo CERC_REMOTE_DEBUG=false >> $CONFIG_DIR/stack.env
set -x
if [[ -z $SKIP_BUILD ]]; then
# Prevent conflicting tty output
export BUILDKIT_PROGRESS=plain
$laconic_so setup-repositories
$laconic_so build-containers
fi
if ! $laconic_so deploy \
--env-file $CONFIG_DIR/stack.env \
--cluster test up
then
$laconic_so deploy --cluster test logs
exit 1
fi