*run execution-performance reusable workflow #194
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "*run execution-performance reusable workflow" | |
on: | |
# This allows the workflow to be triggered from another workflow | |
workflow_call: | |
inputs: | |
GIT_SHA: | |
required: true | |
type: string | |
description: The git SHA1 to test. | |
RUNNER_NAME: | |
required: false | |
default: executor-benchmark-runner | |
type: string | |
FLOW: | |
required: false | |
default: CONTINUOUS | |
type: string | |
description: Which set of tests to run. | |
IGNORE_TARGET_DETERMINATION: | |
required: false | |
default: false | |
type: boolean | |
description: Ignore target determination and run the tests | |
SKIP_MOVE_E2E: | |
required: false | |
default: false | |
type: boolean | |
description: Whether to run or skip move-only e2e tests at the beginning. | |
SOURCE: | |
required: false | |
default: CI | |
type: string | |
NUMBER_OF_EXECUTION_THREADS: | |
required: false | |
default: "32" | |
type: string | |
# This allows the workflow to be triggered manually from the Github UI or CLI | |
# NOTE: because the "number" type is not supported, we default to 720 minute timeout | |
workflow_dispatch: | |
inputs: | |
GIT_SHA: | |
required: true | |
type: string | |
description: The git SHA1 to test. | |
RUNNER_NAME: | |
required: false | |
default: executor-benchmark-runner | |
type: choice | |
options: | |
- executor-benchmark-runner | |
- executor-benchmark-ext4 | |
- executor-benchmark-xfs | |
- benchmark-t2d-32 | |
- benchmark-t2d-60 | |
- benchmark-c3d-30 | |
- benchmark-c3d-60 | |
- benchmark-c3d-180 | |
- benchmark-n4-32 | |
- benchmark-c4-32 | |
- benchmark-c4-48 | |
- benchmark-c4-96 | |
description: The name of the runner to use for the test. (which decides machine specs) | |
NUMBER_OF_EXECUTION_THREADS: | |
required: false | |
default: "32" | |
type: string | |
description: Number of execution threads to use for the tests. | |
FLOW: | |
required: false | |
default: LAND_BLOCKING | |
options: | |
- LAND_BLOCKING | |
- CONTINUOUS | |
- MAINNET | |
- MAINNET_LARGE_DB | |
type: choice | |
description: Which set of tests to run. MAINNET/MAINNET_LARGE_DB are for performance validation of mainnet nodes. | |
SKIP_MOVE_E2E: | |
required: false | |
default: false | |
type: boolean | |
description: Whether to skip move-only e2e tests at the beginning. | |
IGNORE_TARGET_DETERMINATION: | |
required: false | |
default: true | |
type: boolean | |
description: Ignore target determination and run the tests | |
SOURCE: | |
required: false | |
default: ADHOC | |
options: | |
- ADHOC | |
type: choice | |
description: Test source (always adhoc from here) | |
permissions: | |
id-token: write | |
jobs: | |
# This job determines which tests to run | |
test-target-determinator: | |
runs-on: ubuntu-latest | |
outputs: | |
run_execution_performance_test: ${{ steps.determine_test_targets.outputs.run_execution_performance_test }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run the test target determinator | |
id: determine_test_targets | |
uses: ./.github/actions/test-target-determinator | |
create-runner: | |
if: ${{ inputs.IGNORE_TARGET_DETERMINATION || needs.test-target-determinator.outputs.run_execution_performance_test == 'true' }} | |
needs: test-target-determinator | |
runs-on: ubuntu-latest | |
outputs: | |
label: ${{ steps.create-runner.outputs.label }} | |
steps: | |
- uses: "actions/checkout@v4" | |
- uses: "google-github-actions/auth@v2" | |
with: | |
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }} | |
service_account: [email protected] | |
project_id: ${{ secrets.GCP_PROJECT_ID }} | |
- id: secrets | |
uses: "google-github-actions/get-secretmanager-secrets@v2" | |
with: | |
secrets: |- | |
token:aptos-ci/github-actions-repository-dispatch | |
- name: Set Runner Configuration | |
id: set-config | |
run: | | |
config=$(jq -r --arg name "${{ inputs.runner_name }}" '.[$name]' .github/runner-configs.json) | |
echo "disk_size=$(echo $config | jq -r '.disk_size')" >> $GITHUB_ENV | |
echo "machine_type=$(echo $config | jq -r '.machine_type')" >> $GITHUB_ENV | |
echo "boot_disk_type=$(echo $config | jq -r '.boot_disk_type')" >> $GITHUB_ENV | |
- id: create-runner | |
uses: related-sciences/[email protected] | |
with: | |
token: ${{ steps.secrets.outputs.token }} | |
project_id: ${{ secrets.GCP_PROJECT_ID }} | |
disk_size: ${{ env.disk_size }} | |
machine_type: ${{ env.machine_type }} | |
boot_disk_type: ${{ env.boot_disk_type }} | |
# Run single node execution performance tests | |
single-node-performance: | |
needs: create-runner | |
timeout-minutes: 120 | |
runs-on: ${{ needs.create-runner.outputs.label }} | |
env: | |
HOME: /opt/home | |
CARGO_HOME: /opt/home/.cargo | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.GIT_SHA }} | |
if: ${{ inputs.IGNORE_TARGET_DETERMINATION || needs.test-target-determinator.outputs.run_execution_performance_test == 'true' }} | |
- uses: ./.github/actions/rust-setup | |
with: | |
GIT_CREDENTIALS: ${{ secrets.GIT_CREDENTIALS }} | |
if: ${{ inputs.IGNORE_TARGET_DETERMINATION || needs.test-target-determinator.outputs.run_execution_performance_test == 'true' }} | |
- name: Run single node execution benchmark in performance build mode | |
shell: bash | |
run: TABULATE_INSTALL=lib-only pip install tabulate && FLOW="${{ inputs.FLOW }}" SOURCE="${{ inputs.SOURCE }}" RUNNER_NAME="${{ inputs.RUNNER_NAME }}" SKIP_MOVE_E2E="${{ inputs.SKIP_MOVE_E2E && '1' || '' }}" NUMBER_OF_EXECUTION_THREADS="${{ inputs.NUMBER_OF_EXECUTION_THREADS }}" testsuite/single_node_performance.py | |
if: ${{ (inputs.IGNORE_TARGET_DETERMINATION || needs.test-target-determinator.outputs.run_execution_performance_test == 'true') }} |