Skip to content

chore(common): update code owners #6106

chore(common): update code owners

chore(common): update code owners #6106

name: test-suite-e2e-tests
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
- unlabeled
workflow_dispatch:
inputs: &workflow_inputs
orchestrated:
description: "Run from the orchestrated image-validation path."
default: false
type: boolean
build:
description: "Build repo-owned images from the checked out branch on the runner"
default: true
type: boolean
coprocessor-db-migration-version:
description: "Coprocessor DB Migration Image Version"
default: ""
type: string
coprocessor-host-listener-version:
description: "Coprocessor Host Listener Image Version"
default: ""
type: string
coprocessor-gw-listener-version:
description: "Coprocessor Gateway Listener Image Version"
default: ""
type: string
coprocessor-tx-sender-version:
description: "Coprocessor Transaction Sender Image Version"
default: ""
type: string
coprocessor-tfhe-worker-version:
description: "Coprocessor TFHE Worker Image Version"
default: ""
type: string
coprocessor-sns-worker-version:
description: "Coprocessor SNS Worker Image Version"
default: ""
type: string
coprocessor-zkproof-worker-version:
description: "Coprocessor ZKProof Worker Image Version"
default: ""
type: string
gateway-version:
description: "Gateway version"
default: ""
type: string
host-version:
description: "Host version"
default: ""
type: string
connector-db-migration-version:
description: "KMS Connector DB Migration Image Version"
default: ""
type: string
connector-gw-listener-version:
description: "KMS Connector Gateway Listener Image Version"
default: ""
type: string
connector-kms-worker-version:
description: "KMS Connector KMS Worker Image Version"
default: ""
type: string
connector-tx-sender-version:
description: "KMS Connector Transaction Sender Image Version"
default: ""
type: string
test-suite-version:
description: "Test suite version"
default: ""
type: string
relayer-migrate-version:
description: "Relayer migrate version"
default: ""
type: string
relayer-version:
description: "Relayer version"
default: ""
type: string
lock-artifact-name:
description: "Uploaded lock artifact name used to freeze the baseline bundle"
default: ""
type: string
kms-core-version:
description: "KMS Core version"
default: ""
type: string
scenario:
description: "Deployment scenario (e.g. two-of-two, two-of-two-multi-chain)"
default: "two-of-two"
type: string
workflow_call:
secrets:
GHCR_READ_TOKEN:
required: true
CGR_USERNAME:
required: true
CGR_PASSWORD:
required: true
inputs: *workflow_inputs
permissions: {}
# Cancel stale PR runs on new pushes while keeping manual dispatches independent.
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || github.ref }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || 'auto' }}
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.ref != 'refs/heads/main' }}
jobs:
fhevm-e2e-test:
# Run on manual/reusable invocations. For direct PRs, require the `e2e` label.
if: ${{ github.event_name != 'pull_request' || inputs.orchestrated || (github.event.pull_request.head.repo.full_name == github.repository && !startsWith(github.head_ref, 'mergify/merge-queue/') && contains(github.event.pull_request.labels.*.name, 'e2e')) }}
permissions:
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.orchestrated && 'false' || github.event_name == 'pull_request' && 'true' || inputs.build && 'true' || 'false' }}
COPROCESSOR_DB_MIGRATION_VERSION: ${{ inputs.coprocessor-db-migration-version }}
COPROCESSOR_HOST_LISTENER_VERSION: ${{ inputs.coprocessor-host-listener-version }}
COPROCESSOR_GW_LISTENER_VERSION: ${{ inputs.coprocessor-gw-listener-version }}
COPROCESSOR_TX_SENDER_VERSION: ${{ inputs.coprocessor-tx-sender-version }}
COPROCESSOR_TFHE_WORKER_VERSION: ${{ inputs.coprocessor-tfhe-worker-version }}
COPROCESSOR_SNS_WORKER_VERSION: ${{ inputs.coprocessor-sns-worker-version }}
COPROCESSOR_ZKPROOF_WORKER_VERSION: ${{ inputs.coprocessor-zkproof-worker-version }}
GATEWAY_VERSION: ${{ inputs.gateway-version }}
HOST_VERSION: ${{ inputs.host-version }}
CONNECTOR_DB_MIGRATION_VERSION: ${{ inputs.connector-db-migration-version }}
CONNECTOR_GW_LISTENER_VERSION: ${{ inputs.connector-gw-listener-version }}
CONNECTOR_KMS_WORKER_VERSION: ${{ inputs.connector-kms-worker-version }}
CONNECTOR_TX_SENDER_VERSION: ${{ inputs.connector-tx-sender-version }}
TEST_SUITE_VERSION: ${{ inputs.test-suite-version }}
RELAYER_MIGRATE_VERSION: ${{ inputs.relayer-migrate-version }}
RELAYER_VERSION: ${{ inputs.relayer-version }}
CORE_VERSION: ${{ inputs.kms-core-version }}
SCENARIO: ${{ inputs.scenario || 'two-of-two' }}
runs-on: large_ubuntu_32
steps:
- name: Checkout code
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: 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
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_READ_TOKEN }}
- name: Login to Chainguard Registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: cgr.dev
username: ${{ secrets.CGR_USERNAME }}
password: ${{ secrets.CGR_PASSWORD }}
- name: Install CLI deps
working-directory: test-suite/fhevm
run: bun install --frozen-lockfile
- name: Install GitHub CLI
run: |
sudo apt-get update
sudo apt-get install -y gh
- name: Typecheck CLI
working-directory: test-suite/fhevm
run: bun run check
- name: Unit test CLI
working-directory: test-suite/fhevm
run: bun test src
- name: Compat smoke
working-directory: test-suite/fhevm
run: bun run compat-smoke
- name: Download frozen baseline lock
if: ${{ inputs.lock-artifact-name != '' }}
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ${{ inputs.lock-artifact-name }}
path: ${{ runner.temp }}/baseline-lock
- name: Resolve frozen lock path
if: ${{ inputs.lock-artifact-name != '' }}
run: |
set -euo pipefail
lock_file="$(find "${RUNNER_TEMP}/baseline-lock" -maxdepth 1 -name '*.json' -print -quit)"
if [ -z "$lock_file" ]; then
echo "Could not locate downloaded baseline lock artifact" >&2
exit 1
fi
echo "LOCK_FILE=$lock_file" >> "$GITHUB_ENV"
- name: Resolve latest-main lock once
if: ${{ inputs.lock-artifact-name == '' && !inputs.orchestrated }}
working-directory: test-suite/fhevm
run: |
lock_file="$(./fhevm-cli resolve --target latest-main | tail -n1)"
if [ ! -f "$lock_file" ]; then
echo "Could not locate resolved lock file: $lock_file" >&2
exit 1
fi
echo "LOCK_FILE=$lock_file" >> "$GITHUB_ENV"
- name: Resolve stack plan and display effective component versions
working-directory: test-suite/fhevm
run: |
args=(--scenario "$SCENARIO")
if [ -n "${LOCK_FILE:-}" ]; then
args+=(--lock-file "$LOCK_FILE")
else
args+=(--target latest-main)
fi
if [ "$BUILD" = "true" ]; then
args+=(--build)
fi
./fhevm-cli up "${args[@]}" --dry-run
- name: Boot fhevm Stack
working-directory: test-suite/fhevm
run: |
args=(--scenario "$SCENARIO")
if [ -n "${LOCK_FILE:-}" ]; then
args+=(--lock-file "$LOCK_FILE")
else
args+=(--target latest-main)
fi
if [ "$BUILD" = "true" ]; then
args+=(--build)
fi
./fhevm-cli up "${args[@]}"
- name: Standard e2e suite
working-directory: test-suite/fhevm
run: |
./fhevm-cli test standard
- name: Host listener poller test
working-directory: test-suite/fhevm
run: |
docker stop coprocessor-host-listener
./fhevm-cli test erc20
docker start coprocessor-host-listener
- name: Show logs
working-directory: test-suite/fhevm
if: always()
run: |
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 "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 "Host Listener" coprocessor-host-listener
snapshot_logs "Gateway Listener" coprocessor-gw-listener
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
if: always()
run: |
./fhevm-cli clean