Skip to content

eth/sequencer: cap coalesced published records at the store message limit #2381

eth/sequencer: cap coalesced published records at the store message limit

eth/sequencer: cap coalesced published records at the store message limit #2381

name: Kurtosis Stateless E2E Tests
on:
push:
branches:
- 'master'
- 'develop'
pull_request:
types: [opened, synchronize, reopened]
concurrency:
group: kurtosis-stateless-e2e-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
ENCLAVE_NAME: kurtosis-stateless-e2e
POLYCLI_VERSION: v0.1.103
jobs:
build-bor:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout bor
uses: actions/checkout@v7
with:
persist-credentials: false
- name: Build bor docker image
run: docker build -t bor:local --file Dockerfile .
- name: Save bor docker image
run: docker save bor:local | gzip > bor-image.tar.gz
- name: Upload bor docker image
uses: actions/upload-artifact@v7
with:
name: bor-image
path: bor-image.tar.gz
retention-days: 1
build-heimdall-v2:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout heimdall-v2
uses: actions/checkout@v7
with:
repository: 0xPolygon/heimdall-v2
ref: develop
persist-credentials: false
- name: Build heimdall-v2 docker image
run: docker build -t heimdall-v2:local --file Dockerfile .
- name: Save heimdall-v2 docker image
run: docker save heimdall-v2:local | gzip > heimdall-v2-image.tar.gz
- name: Upload heimdall-v2 docker image
uses: actions/upload-artifact@v7
with:
name: heimdall-v2-image
path: heimdall-v2-image.tar.gz
retention-days: 1
e2e-tests:
needs:
- build-bor
- build-heimdall-v2
runs-on: ubuntu-latest
timeout-minutes: 45
# GitHub withholds OIDC and repository secrets from fork pull_request runs.
# Trusted runs use OIDC only while preparing public dependency images.
permissions:
contents: read
id-token: write
steps:
# Set up kurtosis
- name: Checkout kurtosis-pos
uses: actions/checkout@v7
with:
repository: 0xPolygon/kurtosis-pos
ref: v1.4.2
persist-credentials: false
# This step will free disk space and thus remove any docker images previously built
- name: Pre kurtosis run (trusted)
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
uses: ./.github/actions/kurtosis/setup
with:
main_branch: develop
docker_username: ${{ secrets.DOCKERHUB }}
docker_token: ${{ secrets.DOCKERHUB_KEY }}
# Fork PRs deliberately avoid the authenticated registry setup above.
# Kurtosis pulls the package's public image references directly instead.
- name: Free disk space (fork)
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: true
- name: Install Kurtosis and yq (fork)
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository
run: |
KURTOSIS_DEB=/tmp/kurtosis-cli_1.18.2_linux_amd64.deb
curl --proto '=https' --tlsv1.2 -fsSL \
https://github.com/kurtosis-tech/kurtosis-cli-release-artifacts/releases/download/1.18.2/kurtosis-cli_1.18.2_linux_amd64.deb \
-o "$KURTOSIS_DEB"
echo "6522717e33ede4e08b5fd3f2a47689c016c045075777c938f43d4b94e17c760d $KURTOSIS_DEB" | sha256sum --check -
sudo apt-get install -y "$KURTOSIS_DEB"
kurtosis analytics disable
python3 -m pip install --disable-pip-version-check yq==4.1.2
- name: Install Foundry (fork)
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository
uses: foundry-rs/foundry-toolchain@908c540300062bd5a7e473851cdb4282204cee09 # v1.9.1
with:
version: v1.5.1
cache: false
- name: Checkout pos-workflows
uses: actions/checkout@v7
with:
repository: 0xPolygon/pos-workflows
ref: main
path: pos-workflows
persist-credentials: false
- name: Copy kurtosis config
run: cp ./pos-workflows/configs/kurtosis-stateless-e2e.yml ./kurtosis-stateless-e2e.yml
# Load images
- name: Download bor docker image
uses: actions/download-artifact@v8
with:
name: bor-image
- name: Download heimdall-v2 docker image
uses: actions/download-artifact@v8
with:
name: heimdall-v2-image
- name: Load bor docker image
run: |
gunzip -c bor-image.tar.gz | docker load
echo "Loaded bor docker image:"
docker images bor:local --format "{{.ID}} {{.CreatedAt}}"
- name: Load heimdall-v2 docker image
run: |
gunzip -c heimdall-v2-image.tar.gz | docker load
echo "Loaded heimdall-v2 docker image:"
docker images heimdall-v2:local --format "{{.ID}} {{.CreatedAt}}"
# Deploy kurtosis enclave
- name: Kurtosis run
run: kurtosis run --args-file=kurtosis-stateless-e2e.yml --enclave ${{ env.ENCLAVE_NAME }} .
- name: Inspect enclave
run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }}
# Run e2e tests
- name: Install polycli
run: |
tmp_dir=$(mktemp -d)
curl -L https://github.com/0xPolygon/polygon-cli/releases/download/${{ env.POLYCLI_VERSION }}/polycli_${{ env.POLYCLI_VERSION }}_linux_amd64.tar.gz | tar -xz -C "$tmp_dir"
mv "$tmp_dir"/* /usr/local/bin/polycli
rm -rf "$tmp_dir"
sudo chmod +x /usr/local/bin/polycli
polycli version
- name: Run stateless e2e tests
id: stateless-tests
working-directory: pos-workflows/tests/stateless_tests
run: bash kurtosis_stateless_test.sh
# Collect diagnostics on failure
- name: Collect network diagnostics and state dump
if: always() && steps.stateless-tests.outcome == 'failure'
uses: ./pos-workflows/.github/actions/network-diagnostics-and-state-dump
with:
enclave_name: ${{ env.ENCLAVE_NAME }}
# Clean up
- name: Post kurtosis run
if: always()
uses: ./.github/actions/kurtosis/cleanup
with:
main_branch: develop
enclave_name: ${{ env.ENCLAVE_NAME }}