Skip to content

Better logging on node init failure due to AW or TSS creation failing… #21

Better logging on node init failure due to AW or TSS creation failing…

Better logging on node init failure due to AW or TSS creation failing… #21

# This workflow groups up the unit tests, the standard node build, and the tests that use the standard node build (integration tests, version upgrade tests)
name: rust-lit-node-group-unit-and-integration-tests
on:
workflow_dispatch: {}
workflow_call:
push:
paths:
- rust/lit-node/lit-node/**
- .github/workflows/rust-lit-node-integration-tests.yml
- .github/workflows/rust-lit-node-build.yml
- .github/workflows/rust-lit-node-unit-tests.yml
- .github/workflows/rust-lit-node-version-upgrade-tests.yml
- .github/workflows/rust-lit-node-group-unit-and-integration-tests.yml
- scripts/github/**
branches:
- master
- develop
env:
CARGO_TERM_COLOR: always
RUST_LOG_STYLE: always
RUST_LOG: warn,lit_node=trace,web_user_tests=trace,integration_tests=trace,ecdsa=trace,test=trace
RUST_BACKTRACE: full
LIT_LOGGING_SERVICE_DISABLED: 1
LIT_CELO_DEPLOYER_PRIVATE_KEY: '0x3178746f7ae6a309d14444b4c6c85a96a4be2f53fa8950dea241d232f3e6c166'
LIT_ALFAJORES_DEPLOYER_PRIVATE_KEY: '0x3178746f7ae6a309d14444b4c6c85a96a4be2f53fa8950dea241d232f3e6c166'
LIT_MUMBAI_DEPLOYER_PRIVATE_KEY: '0x3178746f7ae6a309d14444b4c6c85a96a4be2f53fa8950dea241d232f3e6c166'
LIT_POLYGON_DEPLOYER_PRIVATE_KEY: '0x3178746f7ae6a309d14444b4c6c85a96a4be2f53fa8950dea241d232f3e6c166'
# the above are empty, do not put money in them
IN_GITHUB_CI: 1
LIT_LOGGING_TIMESTAMP: 1 # force adding timestamp since the CI timestamps are wrong
CARGO_INCREMENTAL: 0
IPFS_API_KEY: ${{ secrets.IPFS_API_KEY }}
CARGO_NET_GIT_FETCH_WITH_CLI: true
defaults:
run:
shell: bash
working-directory: rust/lit-node/lit-node
jobs:
# check if we need to build. this is necessary to make this workflow file be able to be run independently of master-trigger, which builds before calling this workflow. for example, on push to a branch, we want to run this workflow without having to run the master-trigger first.
build-if-needed:
uses: ./.github/workflows/rust-lit-node-build-if-needed.yml
with:
build_features: lit-actions,testing
secrets: inherit
# run the unit tests
lit_node_unit_tests:
needs: build-if-needed
runs-on: warp-ubuntu-latest-x64-8x # change to LargeRunner to run on github. Change to self-hosted to run on our own runner. Change to buildjet-8vcpu-ubuntu-2204 to run on buildjet with 8 cpus
timeout-minutes: 40
services:
anvil:
image: litptcl/anvil-lit:latest
ports:
- 8545:8545
credentials:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- name: Clean workspace
working-directory: ${{ github.workspace }}
run: |
rm -rf ../../lit-assets
mkdir -p ${{ github.workspace }}
- name: Install deps
working-directory: ${{ github.workspace }}
run: sudo apt-get update && sudo apt-get install -y libudev-dev libsqlite3-dev cmake protobuf-compiler
- name: Checkout lit-assets
uses: actions/checkout@v6
- uses: de-vri-es/setup-git-credentials@v2
with:
credentials: https://glitch003:${{secrets.READ_ONLY_PAT}}@github.com/
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: '1.91' # keep in sync with rust/lit-node/rust-toolchain.toml
- name: Rust Cache
uses: WarpBuilds/rust-cache@v2
with:
cache-all-crates: 'false'
workspaces: |
rust/lit-node/lit-node
key: 'cachebuster123'
- name: Install nextest
run: curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "${CARGO_HOME:-$HOME/.cargo}/bin"
- name: Setup local files for testing
run: make setup-local-files
- name: Run unit tests (lib and binaries)
run: 'cargo nextest run --final-status-level pass --profile unit-tests --lib --bin lit_node --no-fail-fast --nocapture --'
# after the standard build is done, run the integration tests
lit_node_integration_tests:
needs: build-if-needed
runs-on: warp-ubuntu-latest-x64-8x # change to LargeRunner to run on github. Change to self-hosted to run on our own runner. Change to buildjet-8vcpu-ubuntu-2204 to run on buildjet with 8 cpus
timeout-minutes: 45
strategy:
matrix:
partition: [1, 2, 3]
services:
anvil:
image: litptcl/anvil-lit:latest
ports:
- 8545:8545
credentials:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- name: Install deps
working-directory: ${{ github.workspace }}
run: sudo apt-get update && sudo apt-get install -y zstd libudev-dev libsqlite3-dev cmake protobuf-compiler
- name: Checkout lit-assets
uses: actions/checkout@v6
with:
submodules: recursive
- uses: de-vri-es/setup-git-credentials@v2
with:
credentials: https://glitch003:${{secrets.READ_ONLY_PAT}}@github.com/
- name: Use Node.js
uses: WarpBuilds/setup-node@v4
with:
node-version: 18.17.0
cache: npm
cache-dependency-path: ${{ github.workspace }}/blockchain/contracts/package-lock.json
- name: Install dependencies for blockchain/contracts
working-directory: ${{ github.workspace }}/blockchain/contracts
run: npm install
- name: Run npx hardhat compile for blockchain/contracts
working-directory: ${{ github.workspace }}/blockchain/contracts
run: npx hardhat compile
- run: mkdir -p ~/.cargo/bin
- name: Install nextest
run: curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "${CARGO_HOME:-$HOME/.cargo}/bin"
- name: Download archive
uses: WarpBuilds/cache@v1
with:
path: rust/lit-node/lit-node/nextest-archive.tar.zst
key: nextest-archive-${{ github.sha }}-lit-actions|testing
- name: Unzip archive so that we can get the lit_node binary
run: zstd -d -c nextest-archive.tar.zst | tar xf -
- name: Setup local files for testing
run: make setup-local-files
- name: Copy lit-node binary to Shiva target directory
run: |
mkdir -p ${{github.workspace}}/rust/lit-node/shiva/target/debug
cp ${{github.workspace}}/rust/lit-node/lit-node/target/debug/lit_node ${{github.workspace}}/rust/lit-node/shiva/target/debug/lit_node
- name: Run Shiva Integration tests
run: |
mv ${{github.workspace}}/rust/lit-node/lit-node/rpc-config.example.yaml ./rpc-config.yaml
cargo nextest run --final-status-level pass --no-capture --
working-directory: ${{github.workspace}}/rust/lit-node/shiva
- name: Run acceptance, component and integration tests.
run: "~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst --final-status-level pass --profile integration-tests -E 'test(/^acceptance|^component|^integration|^sdk/) - test(/long/)' --partition count:${{ matrix.partition }}/3 --nocapture --"
# after the standard build is done, run the upgrade tests
lit_node_version_upgrade_tests:
needs: build-if-needed
runs-on: warp-ubuntu-latest-x64-16x # change to LargeRunner to run on github. Change to self-hosted to run on our own runner. Change to buildjet-8vcpu-ubuntu-2204 to run on buildjet with 8 cpus
# TODO: enable this when you want to turn on version upgrade tests. there's also another spot below where you have to remove a hardcoded "false" with a comment like this.
# To enable, change the condition below to: if: ${{ true }} or remove the if line entirely
if: ${{ github.event_name == 'never' }}
timeout-minutes: 60
strategy:
matrix:
partition: [1, 2, 3]
services:
anvil:
image: litptcl/anvil-lit:latest
ports:
- 8545:8545
credentials:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- name: Install deps
working-directory: ${{ github.workspace }}
run: sudo apt-get update && sudo apt-get install -y zstd libudev-dev libsqlite3-dev cmake protobuf-compiler
- name: Checkout lit-assets
uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: recursive
- name: Use Node.js
uses: WarpBuilds/setup-node@v4
with:
node-version: 18.17.0
cache: npm
cache-dependency-path: ${{ github.workspace }}/blockchain/contracts/package-lock.json
- name: Install dependencies for blockchain/contracts
working-directory: ${{ github.workspace }}/blockchain/contracts
run: npm install
- name: Run npx hardhat compile for blockchain/contracts
working-directory: ${{ github.workspace }}/blockchain/contracts
run: npx hardhat compile
- name: Install rust because the version upgrade tests do a recompile
uses: dtolnay/rust-toolchain@master
with:
toolchain: '1.91' # keep in sync with rust/lit-node/rust-toolchain.toml
components: rust-src
- name: Install nextest
run: curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "${CARGO_HOME:-$HOME/.cargo}/bin"
- name: Download archive
uses: WarpBuilds/cache@v1
with:
path: rust/lit-node/lit-node/nextest-archive.tar.zst
key: nextest-archive-${{ github.sha }}-lit-actions|testing
- name: Unzip archive so that we can get the lit_node binary
run: zstd -d -c nextest-archive.tar.zst | tar xf -
# Get the workflow run that has the latest build for target branches.
- name: Get the latest workflow run ID
id: get_latest_workflow_run_id
run: |
echo "LATEST_WORKFLOW_RUN_ID_HABANERO=$(cd scripts/ci_utils && cargo run --bin get_latest_workflow_run rust/lit-node-build-commit-hash 'origin/release-habanero-*')" >> "$GITHUB_OUTPUT"
echo "LATEST_WORKFLOW_RUN_ID_MANZANO=$(cd scripts/ci_utils && cargo run --bin get_latest_workflow_run rust/lit-node-build-commit-hash 'origin/release-manzano-*')" >> "$GITHUB_OUTPUT"
echo "LATEST_WORKFLOW_RUN_ID_CAYENNE=$(cd scripts/ci_utils && cargo run --bin get_latest_workflow_run rust/lit-node-build-commit-hash 'origin/release-cayenne-*')" >> "$GITHUB_OUTPUT"
env:
GH_PAT: ${{ secrets.GITHUB_TOKEN }}
RUST_LOG: debug
- name: Get the latest commit SHA
id: get_latest_commit_sha
run: |
echo "COMMIT_SHA_HABANERO=$(cd scripts/ci_utils && cargo run --bin get_target_branch_commit_hash 'origin/release-habanero-*')" >> "$GITHUB_OUTPUT"
echo "COMMIT_SHA_MANZANO=$(cd scripts/ci_utils && cargo run --bin get_target_branch_commit_hash 'origin/release-manzano-*')" >> "$GITHUB_OUTPUT"
echo "COMMIT_SHA_CAYENNE=$(cd scripts/ci_utils && cargo run --bin get_target_branch_commit_hash 'origin/release-cayenne-*')" >> "$GITHUB_OUTPUT"
env:
RUST_LOG: debug
- name: Download the latest build for release-habanero-* branch
uses: actions/download-artifact@v7
with:
name: lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_HABANERO }}
run-id: ${{ steps.get_latest_workflow_run_id.outputs.LATEST_WORKFLOW_RUN_ID_HABANERO }}
github-token: ${{ secrets.GITHUB_TOKEN }}
path: rust/lit-node/lit-node/
- name: Move the downloaded binary
run: mv lit_node target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_HABANERO }}
- name: Download the latest build for release-manzano-* branch
uses: actions/download-artifact@v7
with:
name: lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_MANZANO }}
run-id: ${{ steps.get_latest_workflow_run_id.outputs.LATEST_WORKFLOW_RUN_ID_MANZANO }}
github-token: ${{ secrets.GITHUB_TOKEN }}
path: rust/lit-node/lit-node/
- name: Move the downloaded binary
run: mv lit_node target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_MANZANO }}
- name: Download the latest build for release-cayenne-* branch
uses: actions/download-artifact@v7
with:
name: lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_CAYENNE }}
run-id: ${{ steps.get_latest_workflow_run_id.outputs.LATEST_WORKFLOW_RUN_ID_CAYENNE }}
github-token: ${{ secrets.GITHUB_TOKEN }}
path: rust/lit-node/lit-node/
- name: Move the downloaded binary
run: mv lit_node target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_CAYENNE }}
- name: Enable execute permissions for the binary
run: |
chmod +x target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_HABANERO }}
chmod +x target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_MANZANO }}
chmod +x target/debug/lit_node_${{ steps.get_latest_commit_sha.outputs.COMMIT_SHA_CAYENNE }}
- name: Setup local files for testing
run: make setup-local-files
- name: Run acceptance, component and integration tests.
run: "~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst --final-status-level pass --profile version-upgrade-tests -E 'test(/^upgrades/)' --partition count:${{ matrix.partition }}/3 --nocapture --"
# AND together the results
check_status:
needs:
[
lit_node_unit_tests,
lit_node_integration_tests,
lit_node_version_upgrade_tests,
]
runs-on: ubuntu-latest
steps:
- name: Check status
working-directory: ${{ github.workspace }}
run: |
if [ ${{ needs.lit_node_unit_tests.result }} != 'success' ]; then
echo "Unit tests failed"
exit 1
fi
if [ ${{ needs.lit_node_integration_tests.result }} != 'success' ]; then
echo "Integration tests failed"
exit 1
fi
# TODO: enable this when you want to turn on version upgrade tests
# To enable, uncomment the check below (and enable the job above)
# if [ ${{ needs.lit_node_version_upgrade_tests.result }} != 'success' ]; then
# echo "Version upgrade tests failed"
# exit 1
# fi
echo "All tests passed"