Skip to content

Nightly Build

Nightly Build #263

Workflow file for this run

---
name: Nightly Build
on: # yamllint disable-line rule:truthy
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '0 0,10 * * *'
workflow_dispatch:
jobs:
ci:
name: CI
uses: ./.github/workflows/ci.yml
with:
build_blade: true
lint: true
unit_test: true
e2e_polybft_test: true
e2e_legacy_test: true
property_polybft_test: true
fuzz_test: true
benchmark_test: true
deploy_network:
name: Deploy Network
uses: ./.github/workflows/deploy-network.yml
with:
environment: nightly
block_gas_limit: "200000000"
block_time: "2"
max_slots: "20000000"
max_enqueued: "20000000"
is_london_fork_active: true
is_bridge_active: false
gossip_msg_size: "8388608"
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
VAULT_PASSWORD: ${{ secrets.VAULT_PASSWORD }}
sanity_check_tests:
name: Sanity Check Tests
uses: ./.github/workflows/sanity-check-test.yml
needs: deploy_network
with:
environment: nightly
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
AWS_LOADTESTRUNNER_MNEMONIC: ${{ secrets.AWS_LOADTESTRUNNER_MNEMONIC }}
load_test_eoa:
name: Load Test EOA
uses: ./.github/workflows/load-test.yml
needs: [deploy_network, sanity_check_tests]
with:
environment: nightly
type: EOA
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "15m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
AWS_LOADTESTRUNNER_AMI_ID: ${{ secrets.AWS_LOADTESTRUNNER_AMI_ID }}
AWS_LOADTESTRUNNER_SUBNET_ID: ${{ secrets.AWS_LOADTESTRUNNER_SUBNET_ID }}
AWS_LOADTESTRUNNER_SG_ID: ${{ secrets.AWS_LOADTESTRUNNER_SG_ID }}
AWS_LOADTESTRUNNER_MNEMONIC: ${{ secrets.AWS_LOADTESTRUNNER_MNEMONIC }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
load_test_erc20:
name: Load Test ERC20
uses: ./.github/workflows/load-test.yml
needs: [deploy_network, sanity_check_tests, load_test_eoa]
with:
environment: nightly
type: ERC20
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "20m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
AWS_LOADTESTRUNNER_AMI_ID: ${{ secrets.AWS_LOADTESTRUNNER_AMI_ID }}
AWS_LOADTESTRUNNER_SUBNET_ID: ${{ secrets.AWS_LOADTESTRUNNER_SUBNET_ID }}
AWS_LOADTESTRUNNER_SG_ID: ${{ secrets.AWS_LOADTESTRUNNER_SG_ID }}
AWS_LOADTESTRUNNER_MNEMONIC: ${{ secrets.AWS_LOADTESTRUNNER_MNEMONIC }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
load_test_erc721:
name: Load Test ERC721
uses: ./.github/workflows/load-test.yml
needs: [deploy_network, sanity_check_tests, load_test_eoa, load_test_erc20]
with:
environment: nightly
type: ERC721
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "55m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
AWS_LOADTESTRUNNER_AMI_ID: ${{ secrets.AWS_LOADTESTRUNNER_AMI_ID }}
AWS_LOADTESTRUNNER_SUBNET_ID: ${{ secrets.AWS_LOADTESTRUNNER_SUBNET_ID }}
AWS_LOADTESTRUNNER_SG_ID: ${{ secrets.AWS_LOADTESTRUNNER_SG_ID }}
AWS_LOADTESTRUNNER_MNEMONIC: ${{ secrets.AWS_LOADTESTRUNNER_MNEMONIC }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
load_test_mixed:
name: Load Test MIXED
uses: ./.github/workflows/load-test.yml
needs: [deploy_network, sanity_check_tests, load_test_eoa, load_test_erc20, load_test_erc721]
with:
environment: nightly
type: MIXED
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "30m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
AWS_LOADTESTRUNNER_AMI_ID: ${{ secrets.AWS_LOADTESTRUNNER_AMI_ID }}
AWS_LOADTESTRUNNER_SUBNET_ID: ${{ secrets.AWS_LOADTESTRUNNER_SUBNET_ID }}
AWS_LOADTESTRUNNER_SG_ID: ${{ secrets.AWS_LOADTESTRUNNER_SG_ID }}
AWS_LOADTESTRUNNER_MNEMONIC: ${{ secrets.AWS_LOADTESTRUNNER_MNEMONIC }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
destroy_network:
name: Destroy Network
uses: ./.github/workflows/destroy-network.yml
needs: [deploy_network, sanity_check_tests, load_test_eoa, load_test_erc20, load_test_erc721, load_test_mixed]
if: always()
with:
environment: nightly
logs: true
notification: false
secrets:
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
VAULT_PASSWORD: ${{ secrets.VAULT_PASSWORD }}
notification_nightly:
name: Nightly Notification
uses: ./.github/workflows/notification-nightly.yml
needs: [ci, deploy_network, sanity_check_tests, load_test_eoa, load_test_erc20, load_test_erc721, load_test_mixed, destroy_network]
if: success() || failure()
with:
environment: nightly
block_gas_limit: "200000000"
block_time: "2"
max_slots: "20000000"
max_enqueued: "20000000"
is_london_fork_active: true
is_bridge_active: false
gossip_msg_size: "8388608"
logs: true
build_blade_output: ${{ needs.ci.outputs.build_blade }}
lint_output: ${{ needs.ci.outputs.lint }}
unit_test_output: ${{ needs.ci.outputs.unit_test }}
e2e_polybft_test_output: ${{ needs.ci.outputs.e2e_polybft_test }}
e2e_legacy_test_output: ${{ needs.ci.outputs.e2e_legacy_test }}
property_polybft_test_output: ${{ needs.ci.outputs.property_polybft_test }}
fuzz_test_output: ${{ needs.ci.outputs.fuzz_test }}
benchmark_test_output: ${{ needs.ci.outputs.benchmark_test }}
sanity_check_tests_output: ${{ needs.sanity_check_tests.outputs.sanity_check_tests_output }}
stake_test_output: ${{ needs.sanity_check_tests.outputs.stake_test_output }}
unstake_test_output: ${{ needs.sanity_check_tests.outputs.unstake_test_output }}
register_validator_test_output: ${{ needs.sanity_check_tests.outputs.register_validator_test_output }}
withdraw_rewards_test_output: ${{ needs.sanity_check_tests.outputs.withdraw_rewards_test_output }}
unstake_all_test_output: ${{ needs.sanity_check_tests.outputs.unstake_all_test_output }}
deploy_network_terraform_output: ${{ needs.deploy_network.outputs.terraform_output }}
deploy_network_ansible_output: ${{ needs.deploy_network.outputs.ansible_output }}
load_test_eoa_output: ${{ needs.load_test_eoa.outputs.load_test_output }}
load_test_eoa_txpool_pending_output: ${{ needs.load_test_eoa.outputs.txpool_pending }}
load_test_eoa_txpool_queued_output: ${{ needs.load_test_eoa.outputs.txpool_queued }}
load_test_erc20_output: ${{ needs.load_test_erc20.outputs.load_test_output }}
load_test_erc20_txpool_pending_output: ${{ needs.load_test_erc20.outputs.txpool_pending }}
load_test_erc20_txpool_queued_output: ${{ needs.load_test_erc20.outputs.txpool_queued }}
load_test_erc721_output: ${{ needs.load_test_erc721.outputs.load_test_output }}
load_test_erc721_txpool_pending_output: ${{ needs.load_test_erc721.outputs.txpool_pending }}
load_test_erc721_txpool_queued_output: ${{ needs.load_test_erc721.outputs.txpool_queued }}
load_test_mixed_output: ${{ needs.load_test_mixed.outputs.load_test_output }}
load_test_mixed_txpool_pending_output: ${{ needs.load_test_mixed.outputs.txpool_pending }}
load_test_mixed_txpool_queued_output: ${{ needs.load_test_mixed.outputs.txpool_queued }}
destroy_network_logs_output: ${{ needs.destroy_network.outputs.logs_output }}
destroy_network_terraform_output: ${{ needs.destroy_network.outputs.terraform_output }}
secrets:
AWS_S3_BLADE_BUCKET: ${{ secrets.AWS_S3_BLADE_BUCKET }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
notification_load_test_eoa:
name: Load Test EOA Notification
uses: ./.github/workflows/notification-load-test.yml
needs: [load_test_eoa, notification_nightly]
if: (always() && needs.load_test_eoa.outputs.load_test_output == 'true')
with:
environment: nightly
type: EOA
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "15m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
total_time: ${{ needs.load_test_eoa.outputs.total_time }}
total_txs: ${{ needs.load_test_eoa.outputs.total_txs }}
total_blocks: ${{ needs.load_test_eoa.outputs.total_blocks }}
avg_txs_per_second: ${{ needs.load_test_eoa.outputs.avg_txs_per_second }}
max_txs_per_second: ${{ needs.load_test_eoa.outputs.max_txs_per_second }}
total_gas_used: ${{ needs.load_test_eoa.outputs.total_gas_used }}
avg_gas_per_tx: ${{ needs.load_test_eoa.outputs.avg_gas_per_tx }}
avg_gas_utilization: ${{ needs.load_test_eoa.outputs.avg_gas_utilization }}
max_gas_utilization: ${{ needs.load_test_eoa.outputs.max_gas_utilization }}
txpool_pending: ${{ needs.load_test_eoa.outputs.txpool_pending }}
txpool_queued: ${{ needs.load_test_eoa.outputs.txpool_queued }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
notification_load_test_erc20:
name: Load Test ERC20 Notification
uses: ./.github/workflows/notification-load-test.yml
needs: [load_test_erc20, notification_nightly, notification_load_test_eoa]
if: (always() && needs.load_test_erc20.outputs.load_test_output == 'true')
with:
environment: nightly
type: ERC20
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "20m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
total_time: ${{ needs.load_test_erc20.outputs.total_time }}
total_txs: ${{ needs.load_test_erc20.outputs.total_txs }}
total_blocks: ${{ needs.load_test_erc20.outputs.total_blocks }}
avg_txs_per_second: ${{ needs.load_test_erc20.outputs.avg_txs_per_second }}
max_txs_per_second: ${{ needs.load_test_erc20.outputs.max_txs_per_second }}
total_gas_used: ${{ needs.load_test_erc20.outputs.total_gas_used }}
avg_gas_per_tx: ${{ needs.load_test_erc20.outputs.avg_gas_per_tx }}
avg_gas_utilization: ${{ needs.load_test_erc20.outputs.avg_gas_utilization }}
max_gas_utilization: ${{ needs.load_test_erc20.outputs.max_gas_utilization }}
txpool_pending: ${{ needs.load_test_erc20.outputs.txpool_pending }}
txpool_queued: ${{ needs.load_test_erc20.outputs.txpool_queued }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
notification_load_test_erc721:
name: Load Test ERC721 Notification
uses: ./.github/workflows/notification-load-test.yml
needs: [load_test_erc721, notification_nightly, notification_load_test_eoa, notification_load_test_erc20]
if: (always() && needs.load_test_erc721.outputs.load_test_output == 'true')
with:
environment: nightly
type: ERC721
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "55m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
total_time: ${{ needs.load_test_erc721.outputs.total_time }}
total_txs: ${{ needs.load_test_erc721.outputs.total_txs }}
total_blocks: ${{ needs.load_test_erc721.outputs.total_blocks }}
avg_txs_per_second: ${{ needs.load_test_erc721.outputs.avg_txs_per_second }}
max_txs_per_second: ${{ needs.load_test_erc721.outputs.max_txs_per_second }}
total_gas_used: ${{ needs.load_test_erc721.outputs.total_gas_used }}
avg_gas_per_tx: ${{ needs.load_test_erc721.outputs.avg_gas_per_tx }}
avg_gas_utilization: ${{ needs.load_test_erc721.outputs.avg_gas_utilization }}
max_gas_utilization: ${{ needs.load_test_erc721.outputs.max_gas_utilization }}
txpool_pending: ${{ needs.load_test_erc721.outputs.txpool_pending }}
txpool_queued: ${{ needs.load_test_erc721.outputs.txpool_queued }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
notification_load_test_mixed:
name: Load Test MIXED Notification
uses: ./.github/workflows/notification-load-test.yml
needs: [load_test_mixed, notification_nightly, notification_load_test_eoa, notification_load_test_erc20, notification_load_test_erc721]
if: (always() && needs.load_test_mixed.outputs.load_test_output == 'true')
with:
environment: nightly
type: MIXED
dynamic: true
vus: "100"
txs_per_user: "10000"
txpool_timeout: "30m0s"
wait_txpool: false
receipts_timeout: "2m0s"
batch_size: "10000"
total_time: ${{ needs.load_test_mixed.outputs.total_time }}
total_txs: ${{ needs.load_test_mixed.outputs.total_txs }}
total_blocks: ${{ needs.load_test_mixed.outputs.total_blocks }}
avg_txs_per_second: ${{ needs.load_test_mixed.outputs.avg_txs_per_second }}
max_txs_per_second: ${{ needs.load_test_mixed.outputs.max_txs_per_second }}
total_gas_used: ${{ needs.load_test_mixed.outputs.total_gas_used }}
avg_gas_per_tx: ${{ needs.load_test_mixed.outputs.avg_gas_per_tx }}
avg_gas_utilization: ${{ needs.load_test_mixed.outputs.avg_gas_utilization }}
max_gas_utilization: ${{ needs.load_test_mixed.outputs.max_gas_utilization }}
txpool_pending: ${{ needs.load_test_mixed.outputs.txpool_pending }}
txpool_queued: ${{ needs.load_test_mixed.outputs.txpool_queued }}
secrets:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}