Skip to content

[Consensus Observer] Add block payload verification. #61409

[Consensus Observer] Add block payload verification.

[Consensus Observer] Add block payload verification. #61409

Workflow file for this run

name: "Lint+Test"
on:
pull_request:
types: [labeled, opened, synchronize, reopened, auto_merge_enabled]
push:
branches:
- main
- devnet
- testnet
- mainnet
- aptos-node-v*
- aptos-release-v*
workflow_dispatch:
env:
HAS_BUILDPULSE_SECRETS: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID != '' && secrets.BUILDPULSE_SECRET_ACCESS_KEY != '' }}
HAS_DATADOG_SECRETS: ${{ secrets.DD_API_KEY != '' }}
CARGO_INCREMENTAL: "0"
CARGO_TERM_COLOR: always
# cancel redundant builds
concurrency:
# cancel redundant builds on PRs (only on PR, not on branches)
group: ${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.ref) || github.sha }}
cancel-in-progress: true
jobs:
# This job determines which files were changed
file_change_determinator:
runs-on: ubuntu-latest
outputs:
only_docs_changed: ${{ steps.determine_file_changes.outputs.only_docs_changed }}
steps:
- uses: actions/checkout@v4
- name: Run the file change determinator
id: determine_file_changes
uses: ./.github/actions/file-change-determinator
# Run all general lints (i.e., non-rust and docs lints). This is a PR required job.
general-lints:
needs: file_change_determinator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
with:
fetch-depth: 0 # get all the history because python-lint-tests requires it.
- name: Run general lints
uses: ./.github/actions/general-lints
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- run: echo "Skipping general lints! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
# Run the crypto hasher domain separation checks
rust-cryptohasher-domain-separation-check:
needs: file_change_determinator
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:non-required-tests')
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- run: python3 scripts/check-cryptohasher-symbols.py
# Run all rust lints. This is a PR required job.
rust-lints:
needs: file_change_determinator
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
with:
fetch-depth: 0 # get all the history because cargo xtest --change-since origin/main requires it.
- name: Run rust lints
uses: ./.github/actions/rust-lints
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- run: echo "Skipping rust lints! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
# Run cargo deny. This is a PR required job.
rust-cargo-deny:
needs: file_change_determinator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
- uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check licenses
- run: echo "Skipping cargo deny! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
# Run all rust smoke tests. This is a PR required job.
rust-smoke-tests:
needs: file_change_determinator
if: | # Only run on each PR once an appropriate event occurs
(
github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
contains(github.event.pull_request.labels.*.name, 'CICD:run-e2e-tests') ||
github.event.pull_request.auto_merge != null) ||
contains(github.event.pull_request.body, '#e2e'
)
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
- name: Run rust smoke tests
uses: ./.github/actions/rust-smoke-tests
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- run: echo "Skipping rust smoke tests! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
# Run only the targeted rust unit tests. This is a PR required job.
rust-targeted-unit-tests:
if: | # Don't run on release branches. Instead, all unit tests will be triggered.
(
!contains(github.event.pull_request.base.ref, '-release-')
)
needs: file_change_determinator
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0 # Fetch all git history for accurate target determination
- name: Run targeted rust unit tests
uses: ./.github/actions/rust-targeted-unit-tests
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
# Run all rust unit tests. This is not a PR required job.
rust-unit-tests:
if: | # Only run when an appropriate event occurs
(
github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
contains(github.event.pull_request.labels.*.name, 'CICD:run-all-unit-tests') ||
contains(github.event.pull_request.base.ref, '-release-')
)
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
- name: Run rust unit tests
uses: ./.github/actions/rust-unit-tests
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
BUILDKITE_ANALYTICS_TOKEN: ${{ secrets.BUILDKITE_ANALYTICS_TOKEN }}
# Run the cached packages build. This is a PR required job.
rust-build-cached-packages:
needs: file_change_determinator
if: | # Only run on each PR once an appropriate event occurs
(
github.event_name == 'workflow_dispatch' ||
github.event_name == 'push' ||
contains(github.event.pull_request.labels.*.name, 'CICD:run-e2e-tests') ||
github.event.pull_request.auto_merge != null
)
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
steps:
- uses: actions/checkout@v4
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- name: Run aptos cached packages build test
if: needs.file_change_determinator.outputs.only_docs_changed != 'true'
run: scripts/cargo_build_aptos_cached_packages.sh --check
- run: echo "Skipping cached packages test! Unrelated changes detected."
if: needs.file_change_determinator.outputs.only_docs_changed == 'true'
# Run the consensus only unit tests
rust-consensus-only-unit-test:
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:build-consensus-only-image')
steps:
- uses: actions/checkout@v4
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- uses: taiki-e/install-action@v1.5.6
with:
tool: nextest
- run: cargo nextest run --locked --workspace --exclude smoke-test --exclude aptos-testcases --exclude aptos-api --exclude aptos-executor-benchmark --exclude aptos-backup-cli --retries 3 --no-fail-fast -F consensus-only-perf-test
env:
RUST_MIN_STACK: 4297152
# Run the consensus only smoke test
rust-consensus-only-smoke-test:
runs-on: runs-on,cpu=64,family=c7,hdd=500,image=aptos-ubuntu-x64,run-id=${{ github.run_id }}
if: contains(github.event.pull_request.labels.*.name, 'CICD:build-consensus-only-image')
steps:
- uses: actions/checkout@v4
- uses: aptos-labs/aptos-core/.github/actions/rust-setup@main
with:
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }}
- uses: taiki-e/install-action@v1.5.6
with:
tool: nextest
# prebuild aptos-node binary, so that tests don't start before node is built.
# also prebuild aptos-node binary as a separate step to avoid feature unification issues
- run: cargo build --locked --package=aptos-node -F consensus-only-perf-test --release && LOCAL_SWARM_NODE_RELEASE=1 CONSENSUS_ONLY_PERF_TEST=1 cargo nextest run --release --package smoke-test -E "test(test_consensus_only_with_txn_emitter)" --run-ignored all
# We always try to create the artifact, but it only creates on flaky or failed smoke tests -- when the directories are empty.
- name: Upload smoke test logs for failed and flaky tests
uses: actions/upload-artifact@v3
if: ${{ failure() || success() }}
with:
name: failed-consensus-only-smoke-test-logs
# Retain all smoke test data except for the db (which may be large).
path: |
/tmp/.tmp*
!/tmp/.tmp*/**/db/
retention-days: 14