Ad-hoc Forge Run #1953
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: "Ad-hoc Forge Run" | |
on: | |
pull_request: | |
paths: | |
- ".github/workflows/adhoc-forge.yaml" | |
workflow_dispatch: | |
inputs: | |
GIT_SHA: | |
required: true | |
type: string | |
description: The git SHA1 to checkout and test. This can also be a branch or tag | |
IMAGE_TAG: | |
required: false | |
type: string | |
description: The docker image tag to test. If not specified, it is derived from the current check-out | |
FORGE_IMAGE_TAG: | |
required: false | |
type: string | |
description: The docker image tag to use for forge runner. If not specified, it is derived from the current check-out | |
FORGE_RUNNER_DURATION_SECS: | |
required: false | |
type: string | |
default: "480" | |
description: Duration of the forge test run. For multi-phasic tests this is the length of a single phase | |
FORGE_TEST_SUITE: | |
required: false | |
type: string | |
default: land_blocking | |
description: Test suite to run. See https://github.com/aptos-labs/aptos-core/blob/main/testsuite/forge-cli/src/main.rs | |
FORGE_CLUSTER_NAME: | |
required: false | |
type: string | |
description: The Forge k8s cluster to be used for test | |
FORGE_INDEXER_DEPLOYER_PROFILE: | |
required: false | |
type: string | |
description: If set enables an indexer stack with your test, spinning up with the provided profile from https://github.com/aptos-labs/internal-ops/blob/main/infra/cli/commands/forge/profiles.ts | |
FORGE_NUM_VALIDATORS: | |
required: false | |
type: string | |
description: Number of validators to use for the forge test | |
FORGE_NUM_VALIDATOR_FULLNODES: | |
required: false | |
type: string | |
description: Number of validator fullnodes to use for the forge test | |
FORGE_RETAIN_DEBUG_LOGS: | |
required: false | |
type: boolean | |
description: Retain debug logs for all nodes | |
permissions: | |
contents: read | |
id-token: write #required for GCP Workload Identity federation which we use to login into Google Artifact Registry | |
issues: write | |
pull-requests: write | |
jobs: | |
determine-forge-run-metadata: | |
runs-on: ubuntu-latest | |
steps: | |
- name: collect metadata | |
run: | | |
echo "GIT_SHA: ${{ inputs.GIT_SHA }}" | |
echo "IMAGE_TAG: ${{ inputs.IMAGE_TAG }}" | |
echo "FORGE_IMAGE_TAG: ${{ inputs.FORGE_IMAGE_TAG }}" | |
echo "FORGE_RUNNER_DURATION_SECS: ${{ inputs.FORGE_RUNNER_DURATION_SECS }}" | |
echo "FORGE_TEST_SUITE: ${{ inputs.FORGE_TEST_SUITE }}" | |
echo "FORGE_CLUSTER_NAME: ${{ inputs.FORGE_CLUSTER_NAME }}" | |
echo "FORGE_NUM_VALIDATORS: ${{ inputs.FORGE_NUM_VALIDATORS }}" | |
echo "FORGE_NUM_VALIDATOR_FULLNODES: ${{ inputs.FORGE_NUM_VALIDATOR_FULLNODES }}" | |
echo "FORGE_RETAIN_DEBUG_LOGS: ${{ inputs.FORGE_RETAIN_DEBUG_LOGS }}" | |
echo "FORGE_INDEXER_DEPLOYER_PROFILE: ${{ inputs.FORGE_INDEXER_DEPLOYER_PROFILE }}" | |
outputs: | |
gitSha: ${{ inputs.GIT_SHA }} | |
imageTag: ${{ inputs.IMAGE_TAG }} | |
forgeImageTag: ${{ inputs.FORGE_IMAGE_TAG }} | |
forgeRunnerDurationSecs: ${{ inputs.FORGE_RUNNER_DURATION_SECS || 600 }} | |
forgeTestSuite: ${{ inputs.FORGE_TEST_SUITE }} | |
forgeClusterName: ${{ inputs.FORGE_CLUSTER_NAME }} | |
forgeNumValidators: ${{ inputs.FORGE_NUM_VALIDATORS }} | |
forgeNumValidatorFullnodes: ${{ inputs.FORGE_NUM_VALIDATOR_FULLNODES }} | |
forgeRetainDebugLogs: ${{ inputs.FORGE_RETAIN_DEBUG_LOGS }} | |
forgeIndexerDeployerProfile: ${{ inputs.FORGE_INDEXER_DEPLOYER_PROFILE }} | |
adhoc-forge-test: | |
uses: aptos-labs/aptos-core/.github/workflows/workflow-run-forge.yaml@main | |
needs: [determine-forge-run-metadata] | |
secrets: inherit | |
with: | |
GIT_SHA: ${{ needs.determine-forge-run-metadata.outputs.gitSha }} | |
IMAGE_TAG: ${{ needs.determine-forge-run-metadata.outputs.imageTag }} | |
FORGE_IMAGE_TAG: ${{ needs.determine-forge-run-metadata.outputs.forgeImageTag }} | |
FORGE_TEST_SUITE: ${{ needs.determine-forge-run-metadata.outputs.forgeTestSuite }} | |
FORGE_RUNNER_DURATION_SECS: ${{ fromJSON(needs.determine-forge-run-metadata.outputs.forgeRunnerDurationSecs) }} # fromJSON converts to integer | |
FORGE_CLUSTER_NAME: ${{ needs.determine-forge-run-metadata.outputs.forgeClusterName }} | |
FORGE_NUM_VALIDATORS: ${{ needs.determine-forge-run-metadata.outputs.forgeNumValidators }} | |
FORGE_NUM_VALIDATOR_FULLNODES: ${{ needs.determine-forge-run-metadata.outputs.forgeNumValidatorFullnodes }} | |
FORGE_RETAIN_DEBUG_LOGS: ${{ needs.determine-forge-run-metadata.outputs.forgeRetainDebugLogs == 'true' }} | |
# Indexer outputs are derived from a single one, to avoid using too many inputs for this workflow_dispatch trigger | |
FORGE_ENABLE_INDEXER: ${{ needs.determine-forge-run-metadata.outputs.forgeIndexerDeployerProfile != '' }} | |
FORGE_DEPLOYER_PROFILE: ${{ needs.determine-forge-run-metadata.outputs.forgeIndexerDeployerProfile }} |