datahaven/.github/workflows/task-e2e.yml
undercover-cactus 908a2a7ed5
ci: remove unused volumes after e2e tests and remove logs collection (#246)
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.
2025-10-23 14:02:36 +00:00

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