mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-24 09:50:01 +00:00
In this PR, we fix the ci error indicating we reached the number of volumes allow by deleting automatically after tests the volumes. We also remove the step that collect logs because the container that are interesting to us to debug are being removed entirely. Therefore the logs from the nodes are not being collected in this step.
144 lines
No EOL
4.9 KiB
YAML
144 lines
No EOL
4.9 KiB
YAML
# End-To-End Tests: CI for starting a full ETH private network, deploying AVS and running tests.
|
|
#
|
|
# Overview:
|
|
# 1. Start kurtosis network
|
|
# 2. Deploy AVS contracts
|
|
# 3. Start DataHaven node
|
|
# 4. Run E2E tests
|
|
|
|
name: E2E - Kurtosis Deploy and Verify
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
image-tag:
|
|
description: "The tag of the docker image"
|
|
required: true
|
|
type: string
|
|
workflow_call:
|
|
inputs:
|
|
image-tag:
|
|
description: "The tag of the docker image"
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
packages: read
|
|
|
|
env:
|
|
FOUNDRY_PROFILE: ci
|
|
LOG_LEVEL: debug
|
|
DOCKER_HOST: unix:///run/user/1020/podman/podman.sock
|
|
KURTOSIS_CORE_IMAGE: ghcr.io/stiiifff/kurtosis/kurtosis-core
|
|
KURTOSIS_ENGINE_IMAGE: ghcr.io/stiiifff/kurtosis/kurtosis-engine
|
|
KURTOSIS_VERSION: 1.11.1
|
|
|
|
jobs:
|
|
kurtosis:
|
|
runs-on:
|
|
group: DH-Testing
|
|
name: E2E Tests with Kurtosis Ethereum Network
|
|
defaults:
|
|
run:
|
|
working-directory: test
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
- uses: oven-sh/setup-bun@v2
|
|
- name: Install Foundry
|
|
uses: foundry-rs/foundry-toolchain@v1
|
|
- name: Pull Kurtosis images
|
|
run: |
|
|
docker pull ${{ env.KURTOSIS_CORE_IMAGE }}:${{ env.KURTOSIS_VERSION }}
|
|
docker pull ${{ env.KURTOSIS_ENGINE_IMAGE }}:${{ env.KURTOSIS_VERSION }}
|
|
- name: Install Kurtosis
|
|
run: |
|
|
# Install Kurtosis locally without sudo
|
|
if ! command -v kurtosis &> /dev/null; then
|
|
echo "Installing Kurtosis $KURTOSIS_VERSION locally"
|
|
mkdir -p ~/.local/bin
|
|
# wget -q -O kurtosis-cli.tar.gz "https://github.com/kurtosis-tech/kurtosis-cli-release-artifacts/releases/download/${KURTOSIS_VERSION}/kurtosis-cli_${KURTOSIS_VERSION}_linux_amd64.tar.gz"
|
|
# tar -xzf kurtosis-cli.tar.gz -C ~/.local/bin
|
|
# rm kurtosis-cli.tar.gz
|
|
# For now, we use a patched version of Kurtosis CLI & Engine that supports Podman properly
|
|
wget -q -O ~/.local/bin/kurtosis https://github.com/stiiifff/kurtosis/releases/download/1.11.99/kurtosis
|
|
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
else
|
|
echo "Kurtosis is already installed: $(kurtosis version)"
|
|
fi
|
|
kurtosis analytics disable
|
|
kurtosis version
|
|
- name: Configure Kurtosis cluster = podman
|
|
run: |
|
|
# Get the config path from Kurtosis itself (portable)
|
|
CFG_PATH="$(kurtosis config path)"
|
|
mkdir -p "$(dirname "$CFG_PATH")"
|
|
# Create/update config with a podman cluster entry
|
|
cat > "$CFG_PATH" <<'YML'
|
|
config-version: 6
|
|
should-send-metrics: true
|
|
kurtosis-clusters:
|
|
podman:
|
|
type: "podman"
|
|
YML
|
|
kurtosis cluster set podman
|
|
kurtosis cluster get
|
|
- name: Start Kurtosis engine with Podman
|
|
run: |
|
|
kurtosis engine stop
|
|
kurtosis clean
|
|
kurtosis engine start
|
|
kurtosis engine status
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: ~/.bun/install/cache
|
|
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- name: Cache Foundry libraries
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ../contracts/lib
|
|
key: ${{ runner.os }}-foundry-libs-${{ hashFiles('.gitmodules') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-foundry-libs-
|
|
|
|
- name: Cache Foundry build artifacts
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: |
|
|
../contracts/out
|
|
../contracts/cache
|
|
key: ${{ runner.os }}-foundry-build-${{ hashFiles('contracts/foundry.toml', 'contracts/**/*.sol') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-foundry-build-
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Download Snowbridge relay binary
|
|
run: |
|
|
docker create --name temp datahavenxyz/snowbridge-relay:latest
|
|
mkdir -p tmp/bin
|
|
docker cp temp:/usr/local/bin/snowbridge-relay tmp/bin/
|
|
chmod +x tmp/bin/snowbridge-relay
|
|
docker rm -fv temp
|
|
tmp/bin/snowbridge-relay --help
|
|
|
|
- name: Pull DataHaven node image
|
|
run: |
|
|
docker pull ghcr.io/datahaven-xyz/datahaven/datahaven:${{ inputs.image-tag }}
|
|
docker tag ghcr.io/datahaven-xyz/datahaven/datahaven:${{ inputs.image-tag }} datahavenxyz/datahaven:local
|
|
|
|
- run: bun install
|
|
- name: Run E2E tests
|
|
run: bun test:e2e
|
|
|
|
- name: Delete volumes not used
|
|
if: always()
|
|
run: podman system prune --volumes -f |