Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
e1d4550
refactor(test-suite): rebase fhevm-cli onto main
Eikix Apr 1, 2026
6d3aaa5
test(test-suite): isolate stateful CLI tests
Eikix Apr 1, 2026
529f238
refactor(test-suite): resolve relayer from repo-owned mainline tags
Eikix Apr 1, 2026
b613037
test(test-suite): fix CI template path in compose test
Eikix Apr 1, 2026
3858ed5
fix(test-suite): tolerate legacy db-migration script layout
Eikix Apr 1, 2026
ae7954d
docs(test-suite): clarify compat guide
Eikix Apr 1, 2026
70eb691
fix(test-suite): freeze orchestrated e2e baseline
Eikix Apr 1, 2026
193048a
fix(test-suite): build relayer in direct pr e2e
Eikix Apr 1, 2026
696a104
fix(test-suite): refresh one-shot tasks and restore revert ordering
Eikix Apr 1, 2026
9c98648
refactor(test-suite): add a dedicated resolve lock command
Eikix Apr 1, 2026
af00679
fix(ci): freeze orchestrate baseline from pr base
Eikix Apr 1, 2026
b58851e
fix(test-suite): tighten resume and compose correctness
Eikix Apr 1, 2026
506f3ff
fix test-suite upgrade and orchestrate regressions
Eikix Apr 1, 2026
817d392
fix release orchestrate baseline gating
Eikix Apr 1, 2026
24d4fcd
fix compat and orchestrate coverage gaps
Eikix Apr 1, 2026
e0f1acb
fix orchestrate base-profile checkout depth
Eikix Apr 1, 2026
988c1dd
fix remaining multichain and drift gaps
Eikix Apr 1, 2026
21c88e7
Fix compat prerelease parsing and gh retries
Eikix Apr 1, 2026
a63b9bd
Tighten orchestrate baseline and runtime guards
Eikix Apr 1, 2026
e4822c7
fix(test-suite): tighten release lock and kms rc compat
Eikix Apr 1, 2026
4d521d8
fix(test-suite): allow ci sha overrides on frozen bundles
Eikix Apr 1, 2026
0a35445
fix(ci): narrow tfhe-worker build triggers
Eikix Apr 2, 2026
a51ff34
Revert "fix(ci): narrow tfhe-worker build triggers"
Eikix Apr 2, 2026
c53669d
fix(ci): isolate multichain from poller check
Eikix Apr 2, 2026
83838d2
fix(ci): restore release orchestrate baseline semantics
Eikix Apr 2, 2026
76af2f4
fix(resolve): validate sha-like env overrides
Eikix Apr 2, 2026
898adab
fix(ci): run operators on single-copro stack
Eikix Apr 2, 2026
a1ba3cf
fix(ci): degrade release orchestrate scenario
Eikix Apr 2, 2026
ad48bd2
refactor(ci): simplify orchestrate workflow
Eikix Apr 2, 2026
a4f8c8a
fix(test): isolate db-state-revert replay window
Eikix Apr 2, 2026
764556f
fix(relayer): require explicit local builds
Eikix Apr 2, 2026
8a9b0bf
fix(resolve): retry transient GitHub 5xx errors
Eikix Apr 2, 2026
d55f544
refactor(compose): require explicit local builds
Eikix Apr 2, 2026
2f60e89
fix(test): scope db-state-revert delete checks
Eikix Apr 2, 2026
453f3e4
refactor(test): align db-state-revert expectations
Eikix Apr 2, 2026
d1d6291
fix(resolve): harden GitHub outage retries
Eikix Apr 2, 2026
8338d11
fix(fhevm-cli): harden version and runtime resolution
Eikix Apr 2, 2026
8ecbd14
refactor(ci): let multichain test self-gate
Eikix Apr 2, 2026
67425d4
fix(ci): reuse resolved base image tags in orchestrated e2e
Eikix Apr 2, 2026
b337176
fix(fhevm-cli): increase relayer readiness budget
Eikix Apr 2, 2026
d8d0bf9
Fix e2e multichain suite gating
Eikix Apr 2, 2026
ef7fd98
Optimize GHCR tag resolution
Eikix Apr 2, 2026
435e9de
Wire explicit workflow base commits
Eikix Apr 2, 2026
be082bc
Fix test runtime artifact coverage
Eikix Apr 2, 2026
a1bd424
Simplify e2e image override handling
Eikix Apr 2, 2026
366fba7
Remove dead docker workflow outputs
Eikix Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ charts/
# -----------------------------------------------------------------------------
# Git-related (keep .git/ for build metadata, exclude others)
# -----------------------------------------------------------------------------
.git/lfs/
.gitignore
.gitattributes
**/.gitkeep
Expand Down
189 changes: 109 additions & 80 deletions .github/workflows/test-suite-e2e-operators-tests.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,31 @@
name: test-suite-e2e-operators-tests

# Core, relayer and test-suite will use the default versions defined in the `fhevm-cli` script
# Github does not support more than 10 inputs for workflow_dispatch:
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#providing-inputs
# Core, relayer and test-suite follow the latest-main defaults unless explicitly pinned
on:
workflow_dispatch:
inputs:
build:
description: "Build repo-owned images from the checked out branch on the runner"
default: false
type: boolean
grep:
description: "Optional narrow grep pattern for targeted operator tests"
default: ""
type: string
scenario:
description: "Optional fhevm scenario passed to deploy"
default: ""
type: string
connector_version:
description: "Connector Version"
default: ""
type: string
coprocessor_version:
description: "Shared Coprocessor Runtime Image Version"
default: ""
type: string
db_migration_version:
description: "Coprocessor DB Migration Image Version"
default: ""
Expand All @@ -21,38 +39,6 @@ on:
required: false
default: ""
type: string
host_listener_version:
description: "Host Listener Image Version"
default: ""
type: string
gateway_listener_version:
description: "Gateway Listener Image Version"
default: ""
type: string
tx_sender_version:
description: "Transaction Sender Image Version"
default: ""
type: string
tfhe_worker_version:
description: "TFHE Worker Image Version"
default: ""
type: string
sns_worker_version:
description: "SNS Worker Image Version"
default: ""
type: string
zkproof_worker_version:
description: "ZKProof Worker Image Version"
default: ""
type: string
deploy-build:
description: "Build local Docker images from the checked out repository before deploy"
default: false
type: boolean
grep:
description: "Optional grep pattern to narrow operators tests"
default: ""
type: string

permissions: {}

Expand Down Expand Up @@ -88,6 +74,24 @@ jobs:
contents: 'read' # Required to checkout repository code
id-token: 'write' # Required for OIDC authentication
packages: 'read' # Required to read GitHub packages/container registry
env:
GH_TOKEN: ${{ secrets.GHCR_READ_TOKEN || github.token }}
BUILD: ${{ inputs.build && 'true' || 'false' }}
GREP: ${{ inputs.grep }}
SCENARIO: ${{ inputs.scenario }}
CONNECTOR_DB_MIGRATION_VERSION: ${{ inputs.connector_version }}
CONNECTOR_GW_LISTENER_VERSION: ${{ inputs.connector_version }}
CONNECTOR_KMS_WORKER_VERSION: ${{ inputs.connector_version }}
CONNECTOR_TX_SENDER_VERSION: ${{ inputs.connector_version }}
COPROCESSOR_DB_MIGRATION_VERSION: ${{ inputs.db_migration_version }}
HOST_VERSION: ${{ inputs.host_version }}
GATEWAY_VERSION: ${{ inputs.gateway_version }}
COPROCESSOR_HOST_LISTENER_VERSION: ${{ inputs.coprocessor_version }}
COPROCESSOR_GW_LISTENER_VERSION: ${{ inputs.coprocessor_version }}
COPROCESSOR_TX_SENDER_VERSION: ${{ inputs.coprocessor_version }}
COPROCESSOR_TFHE_WORKER_VERSION: ${{ inputs.coprocessor_version }}
COPROCESSOR_SNS_WORKER_VERSION: ${{ inputs.coprocessor_version }}
COPROCESSOR_ZKPROOF_WORKER_VERSION: ${{ inputs.coprocessor_version }}
runs-on: ${{ needs.setup-instance.outputs.runner-name }}
needs: setup-instance
timeout-minutes: 1440
Expand All @@ -96,11 +100,25 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: 'false'
fetch-depth: 0

- name: Setup Docker
uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0

- name: Install Foundry
- name: Install unzip
run: |
sudo apt-get update
sudo apt-get install -y unzip

- name: Install GitHub CLI
run: |
sudo apt-get update
sudo apt-get install -y gh

- name: Setup Bun
uses: oven-sh/setup-bun@ecf28ddc73e819eb6fa29df6b34ef8921c743461 # v2.1.3

- name: Install foundry
uses: foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1.4.0

- name: Login to GitHub Container Registry
Expand All @@ -117,69 +135,80 @@ jobs:
username: ${{ secrets.CGR_USERNAME }}
password: ${{ secrets.CGR_PASSWORD }}

- name: Install CLI deps
working-directory: test-suite/fhevm
run: |
bun install --frozen-lockfile

- name: Deploy fhevm Stack
working-directory: test-suite/fhevm
env:
CONNECTOR_DB_MIGRATION_VERSION: ${{ inputs.connector_version }}
CONNECTOR_GW_LISTENER_VERSION: ${{ inputs.connector_version }}
CONNECTOR_KMS_WORKER_VERSION: ${{ inputs.connector_version }}
CONNECTOR_TX_SENDER_VERSION: ${{ inputs.connector_version }}
DB_MIGRATION_VERSION: ${{ inputs.db_migration_version }}
HOST_VERSION: ${{ inputs.host_version }}
GATEWAY_VERSION: ${{ inputs.gateway_version }}
HOST_LISTENER_VERSION: ${{ inputs.host_listener_version }}
GW_LISTENER_VERSION: ${{ inputs.gateway_listener_version }}
TX_SENDER_VERSION: ${{ inputs.tx_sender_version }}
TFHE_WORKER_VERSION: ${{ inputs.tfhe_worker_version }}
SNS_WORKER_VERSION: ${{ inputs.sns_worker_version }}
ZKPROOF_WORKER_VERSION: ${{ inputs.zkproof_worker_version }}
DEPLOY_BUILD: ${{ inputs.deploy-build }}
run: |
if [[ "$DEPLOY_BUILD" == 'true' ]]; then
./fhevm-cli deploy --build --coprocessors 2 --coprocessor-threshold 2
else
./fhevm-cli deploy --coprocessors 2 --coprocessor-threshold 2
args=(--target latest-main)
if [ "$BUILD" = "true" ]; then
args+=(--build)
fi
if [ -n "$SCENARIO" ]; then
args+=(--scenario "$SCENARIO")
fi
./fhevm-cli deploy "${args[@]}"

- name: Validate targeted grep
if: ${{ inputs.grep != '' }}
run: |
case "$GREP" in
"test operator"|"FHEVM manual operations"|"test operator|FHEVM manual operations")
echo "grep is too broad for targeted operators runs; pass a narrow explicit pattern" >&2
exit 1
;;
esac

- name: All operators tests
if: ${{ !inputs.grep }}
working-directory: test-suite/fhevm
env:
GREP: ${{ inputs.grep }}
run: |
if [ -n "$GREP" ]; then
./fhevm-cli test operators -g "$GREP"
else
./fhevm-cli test operators
fi
./fhevm-cli test operators --parallel

- name: Targeted operators grep
if: ${{ inputs.grep != '' }}
working-directory: test-suite/fhevm
run: |
./fhevm-cli test operators --parallel --grep "$GREP"

- name: Random operators tests
if: ${{ inputs.grep == '' }}
if: ${{ !inputs.grep }}
working-directory: test-suite/fhevm
run: |
./fhevm-cli test random

- name: Show logs on test failure
- name: Show logs
working-directory: test-suite/fhevm
if: failure()
run: |
echo "::group::Relayer Logs"
./fhevm-cli logs relayer
echo "::endgroup::"
echo "::group::SNS Worker Logs"
./fhevm-cli logs sns-worker | grep -v "Selected 0 rows to process"
echo "::endgroup::"
echo "::group::Transaction Sender Logs (filtered)"
./fhevm-cli logs transaction-sender | grep -v "Selected 0 rows to process"
echo "::endgroup::"
echo "::group::Coprocessor 2 - SNS Worker"
./fhevm-cli logs coprocessor-2-sns-worker 2>/dev/null | grep -v "Selected 0 rows to process" || true
echo "::endgroup::"
echo "::group::Coprocessor 2 - Transaction Sender (filtered)"
./fhevm-cli logs coprocessor-2-transaction-sender 2>/dev/null | grep -v "Selected 0 rows to process" || true
echo "::endgroup::"
echo "::group::Coprocessor 2 - TFHE Worker"
./fhevm-cli logs coprocessor-2-tfhe-worker 2>/dev/null || true
echo "::endgroup::"
snapshot_logs() {
local group="$1"
local container="$2"
local filter="${3:-}"
echo "::group::${group}"
if [ -n "$filter" ]; then
docker logs --tail 120 "${container}" 2>&1 | grep -v "$filter" || true
else
docker logs --tail 120 "${container}" 2>&1 || true
fi
echo "::endgroup::"
}
snapshot_logs "Relayer Logs" fhevm-relayer
snapshot_logs "Host Listener" coprocessor-host-listener
snapshot_logs "Gateway Listener" coprocessor-gw-listener
snapshot_logs "SNS Worker Logs" coprocessor-sns-worker "Selected 0 rows to process"
snapshot_logs "Transaction Sender Logs (filtered)" coprocessor-transaction-sender "Selected 0 rows to process"
snapshot_logs "ZKProof Worker" coprocessor-zkproof-worker
snapshot_logs "TFHE Worker" coprocessor-tfhe-worker
snapshot_logs "Coprocessor 2 - Host Listener" coprocessor1-host-listener
snapshot_logs "Coprocessor 2 - Gateway Listener" coprocessor1-gw-listener
snapshot_logs "Coprocessor 2 - SNS Worker" coprocessor1-sns-worker "Selected 0 rows to process"
snapshot_logs "Coprocessor 2 - Transaction Sender (filtered)" coprocessor1-transaction-sender "Selected 0 rows to process"
snapshot_logs "Coprocessor 2 - ZKProof Worker" coprocessor1-zkproof-worker
snapshot_logs "Coprocessor 2 - TFHE Worker" coprocessor1-tfhe-worker

- name: Cleanup
working-directory: test-suite/fhevm
Expand Down
Loading
Loading