Skip to content

Flakeguard On Demand #12

Flakeguard On Demand

Flakeguard On Demand #12

name: Flakeguard On Demand
on:
schedule:
# Run every night at 3:00 AM UTC
- cron: '0 3 * * *'
workflow_dispatch:
inputs:
repoUrl:
description: 'The URL of the repository to run the flaky test detection.'
required: true
type: string
default: 'https://github.com/smartcontractkit/chainlink'
projectPath:
required: true
type: string
description: 'The path to the project to run the flaky test detection.'
default: '.'
baseRef:
required: true
type: string
description: 'The base reference or branch to compare changes for detecting flaky tests.'
default: 'origin/develop'
headRef:
required: false
type: string
description: 'The head reference or branch to compare changes for detecting flaky tests. Default is the current branch.'
runAllTests:
required: false
type: boolean
description: 'Run all tests in the project.'
default: true
maxPassRatio:
required: false
type: string
description: 'The maximum (non-inclusive) pass ratio threshold for a test to be considered a failure. Any tests below this pass rate will be considered flaky.'
default: '1.0'
findByTestFilesDiff:
required: false
type: boolean
description: 'Find new or updated test packages by comparing test files diff.'
default: true
findByAffectedPackages:
required: false
type: boolean
description: 'Find new or updated test packages by comparing affected packages.'
default: false
slack_notification_after_tests_channel_id:
description: "Slack channel ID to send the notification to for failed tests."
required: false
type: string
extraArgs:
required: false
type: string
default: '{ "skipped_tests": "TestChainComponents", "test_repeat_count": "5", "all_tests_runner": "ubuntu22.04-32cores-128GB", "all_tests_runner_count": "3", "run_with_race": "false" }'
description: 'JSON of extra arguments for the workflow.'
jobs:
trigger-flaky-test-detection:
name: Find Flaky Tests
uses: ./.github/workflows/flakeguard.yml
with:
repoUrl: ${{ inputs.repoUrl }}
baseRef: ${{ inputs.baseRef }}
projectPath: ${{ inputs.projectPath }}
headRef: ${{ inputs.headRef }}
maxPassRatio: ${{ inputs.maxPassRatio }}
runAllTests: ${{ inputs.runAllTests }}
findByTestFilesDiff: ${{ inputs.findByTestFilesDiff }}
findByAffectedPackages: ${{ inputs.findByAffectedPackages }}
slackNotificationAfterTestsChannelId: ${{ inputs.slack_notification_after_tests_channel_id }}
extraArgs: ${{ inputs.extraArgs }}
secrets:
SLACK_BOT_TOKEN: ${{ secrets.QA_SLACK_API_KEY }}