mongo/etc/evergreen_lint.yml
Lynne Wang 1471d6dfad SERVER-111075 Enable passing disagg suites to run with TSAN on the waterfall (#53525)
GitOrigin-RevId: 0a133e270e03ccc326c24d09ec899c9fe9e24df9
2026-05-20 16:45:06 +00:00

259 lines
11 KiB
YAML

# These paths are relative to the directory containing this configuration file
files:
- evaluated_evergreen.yml
- evaluated_evergreen_nightly.yml
help_url: https://wiki.corp.mongodb.com/pages/viewpage.action?pageId=133273894
rules:
# keyval.inc is a deprecated command. This rule is to prevent the
# proliferation of it.
- rule: "limit-keyval-inc"
# the maximum number of keyval.inc commands to allow in your YAML
limit: 5
# # With the extraction of shell scripts from the Evergreen YAML, we expect
# # users to source a script called `prelude.sh`. This script requires that
# # the user be in ${workdir}, so we forbid users from `cd`ing with
# # `working_dir` parameter.
- rule: "no-working-dir-on-shell"
# # Embedding shell.exec scripts in the Evergreen yaml has been a historical
# # source of pain:
# # * No ability to lint/shellcheck
# # * Distraction from the build matrix
# # * Tons of scrolling to get anywhere.
# # We completed a project to completely eject all shell scripts from the
# # YAML, and now require this of all shell scripts. Add your scripts to the
# # evergreen/ directory, and make use of subprocess.exec.
# TODO(SERVER-116120): Re-enable once artifact extract is moved to shell script
# - rule: "no-shell-exec"
# Historically, expansions.update has been used to inject shell scripts
# into expansions, which were then used to inject commonly used snippets
# as required. With the extraction of the shell scripts, the correct
# paradigm is to source a script in the evergreen/ directory, or to add a
# function to `evergreen/prelude.sh`.
- rule: "no-multiline-expansions-update"
# To prevent the proliferation of undocumented build-parameters, we require
# params to have a non-empty description, and a name matching [a-z][a-z0-9_]*.
- rule: "invalid-build-parameter"
# # To ensure that the expansions file loaded by prelude.sh is not stale, we
# # require the user to add sometimes superfluous expansions.write calls to
# # ere on side of correctness.
- rule: "required-expansions-write"
regex: .*\/evergreen\/.*\.sh
# Generated tests must depend on build_variant_gen (which generates the
# tasks that contain them) and archive_dist_test (which contains
# built assets).
- rule: "dependency-for-func"
dependencies:
generate resmoke tasks: ["version_gen", "archive_dist_test"]
- rule: "enforce-tasks-distro-with-special-tag"
tags:
- task_tag_name: "requires_large_host"
allowed_distro_regex: "(.*large|.*-medium|macos-.*|ubi.*)"
- rule: "enforce-tags-for-tasks"
tag_groups:
# Every task should have team assignment tag
- group_name: "team_assignment_tags"
tag_regex: assigned_to_jira_team_.+
# Before changing anything in this list, please read
# https://github.com/10gen/mongo/blob/master/docs/evergreen-testing/yaml_configuration/task_ownership_tags.md
tag_list:
# https://github.com/10gen/mothra/blob/main/mothra/teams/database.yaml
- assigned_to_jira_team_server_catalog_and_routing
- assigned_to_jira_team_server_cluster_scalability
- assigned_to_jira_team_server_query_execution
- assigned_to_jira_team_server_query_optimization
- assigned_to_jira_team_server_query_integration
- assigned_to_jira_team_server_repl
- assigned_to_jira_team_server_security
- assigned_to_jira_team_server_servicearch
- assigned_to_jira_team_server_execution
- assigned_to_jira_team_server_storage_engines
- assigned_to_jira_team_server_programmability
- assigned_to_jira_team_server_workload_scheduling
- assigned_to_jira_team_server_networking_and_observability
- assigned_to_jira_team_server_integration
- assigned_to_jira_team_server_disagg
# https://github.com/10gen/mothra/blob/main/mothra/teams/devprod.yaml
- assigned_to_jira_team_devprod_build
- assigned_to_jira_team_devprod_test_infrastructure
- assigned_to_jira_team_devprod_infrastructure
- assigned_to_jira_team_devprod_evergreen_app
- assigned_to_jira_team_devprod_evergreen_ui
- assigned_to_jira_team_devprod_performance_infrastructure
- assigned_to_jira_team_devprod_last_mile
- assigned_to_jira_team_devprod_release_infrastructure
- assigned_to_jira_team_devprod_runtime_environments
- assigned_to_jira_team_devprod_services_integrations
# https://github.com/10gen/mothra/blob/main/mothra/teams/et.yaml
- assigned_to_jira_team_streams
# https://github.com/10gen/mothra/blob/main/mothra/teams/security.yaml
- assigned_to_jira_team_platsec_server
- assigned_to_jira_team_platsec_ssdlc
min_num_of_tags: 1
max_num_of_tags: 1
# Every task should have required selection tag
- group_name: "required_selection_tags"
tag_regex: (development_critical|development_critical_single_variant|release_critical|default|non_deterministic|experimental|auxiliary|monguard|monguard_lint)
# Before changing anything in this list, please read
# https://github.com/10gen/mongo/blob/master/docs/evergreen-testing/yaml_configuration/task_selection_tags.md
tag_list:
- development_critical
- development_critical_single_variant
- release_critical
- default
- non_deterministic
- experimental
- auxiliary
- monguard
- monguard_lint
min_num_of_tags: 1
max_num_of_tags: 1
- group_name: "optional_selection_tags"
tag_regex: (incompatible_.+|requires_.+)
# Before changing anything in this list, please read
# https://github.com/10gen/mongo/blob/master/docs/evergreen-testing/yaml_configuration/task_selection_tags.md
tag_list:
- incompatible_community
- incompatible_windows
- incompatible_mac
- incompatible_debian
- incompatible_oscrypto
- incompatible_ppc
- incompatible_s390x
- incompatible_amazon_linux2
- incompatible_aubsan
- incompatible_tsan
- incompatible_debug_mode
- incompatible_system_allocator
- incompatible_inmemory
- incompatible_all_feature_flags
- incompatible_development_variant
- requires_replicated_fast_count_recovery
- incompatible_disaggregated_storage
- incompatible_disaggregated_storage_tsan
- requires_compile_variant
- requires_large_host
- requires_large_host_aubsan
- requires_large_host_tsan
- requires_large_host_debug_mode
- requires_large_host_commit_queue
- requires_all_feature_flags
- requires_execution_on_windows_patch_build
- requires_extra_system_deps
- rule: "enforce-tags-for-variants"
tags:
# Required variants should have "required" tag
- tag_name: "required"
variant_config:
display_name_regex: "^!.+$"
# Suggested variants should have "suggested" tag
- tag_name: "suggested"
variant_config:
display_name_regex: "^\\*.+$"
# Forbid tasks with specific tags from being used in buildvariants with certain tags
# Allows for specific tasks to be included even if violate the linters
- rule: "forbid-tasks-with-tag-on-variants"
tags:
- variant_tag_name: "forbid_tasks_tagged_with_experimental"
forbidden_task_tag: "experimental"
ignored_tasks: [
# TODO(SERVER-94572): remove this exception when resolved
"benchmarks_streams",
"streams_0",
"streams_1",
"streams_2",
"streams_3",
"streams_4",
"streams_5",
"streams_6",
"streams_7",
"streams_8",
"streams_9",
"streams_kafka_0",
"streams_kafka_1",
"streams_kafka_2",
"streams_kafka_3",
"streams_kafka_4",
"streams_kafka_5",
"streams_kafka_6",
"streams_kafka_7",
"streams_kafka_8",
"streams_kafka_9",
"streams_kafka_10",
"streams_kafka_11",
"streams_kafka_gwproxy",
"streams_kafka_benchmark",
"streams_https",
"streams_lambda",
"streams_s3_single",
"streams_s3_parallel",
"streams_s3_parallel_heavy",
"streams_s3_emit_benchmark",
"streams_azure_blob_single",
"streams_azure_blob_parallel",
"streams_azure_blob_parallel_heavy",
"streams_azure_blob_emit_benchmark",
"streams_azure_blob_gwproxy",
"streams_kinesis",
"streams_aspio",
"streams_aspio_iceberg_0",
"streams_aspio_iceberg_1",
"streams_aspio_iceberg_2",
"streams_aspio_iceberg_3",
"streams_aspio_iceberg_4",
"streams_aspio_iceberg_large",
"streams_aspio_iceberg_5",
"streams_aspio_utilities",
"streams_externaljs",
"streams_aspio_pubsub",
"streams_sanitizer_0",
"streams_sanitizer_1",
"streams_sanitizer_2",
"streams_sanitizer_3",
"streams_sanitizer_4",
"streams_sanitizer_5",
"streams_sanitizer_6",
"streams_sanitizer_7",
"streams_sanitizer_8",
"streams_sanitizer_9",
"streams_https_sanitizer",
"streams_lambda_sanitizer",
"streams_kinesis_sanitizer",
"streams_s3_parallel_sanitizer",
"streams_azure_blob_parallel_sanitizer",
"streams_aspio_sanitizer",
"streams_aspio_iceberg_0_sanitizer",
"streams_aspio_iceberg_1_sanitizer",
"streams_aspio_iceberg_2_sanitizer",
"streams_aspio_iceberg_3_sanitizer",
"streams_aspio_iceberg_4_sanitizer",
"streams_aspio_iceberg_5_sanitizer",
"streams_aspio_iceberg_large_sanitizer",
"streams_aspio_pubsub_sanitizer",
"streams_aspio_utilities_sanitizer",
"streams_externaljs_sanitizer",
"streams_suite_coverage_linter",
"streams_build_and_push",
"streams_sanitizer_build_and_push",
"streams_build_debug",
# TODO(SERVER-94573): remove these exceptions when resolved
"selinux_rhel9_enterprise",
"selinux_rhel8_org",
"selinux_rhel9_org",
"selinux_rhel8_enterprise",
"ssl_linear_macos",
]