soundcheck/checks.yaml (241 lines of code) (raw):

--- - id: has_less_than_ten_open_issues rule: factRef: github:default/repo_details path: $.open_issues operator: lessThan value: 10 passedMessage: | Less than 10 open issues failedMessage: | Ten or more open issue(s) - id: is_repo_private rule: factRef: github:default/repo_details path: $.private operator: equal value: true passedMessage: | Repo is private failedMessage: | Repo is not private, change repo to private - id: default_branch_is_main rule: factRef: github:default/repo_details path: $.default_branch operator: equal value: main passedMessage: | Default banch is main failedMessage: | Change default branch to main - id: has_readme_check # The name of the check rule: # How to evaluate this check factRef: scm:default/readme_and_catalog_info_files_exist_fact # The fact data to reference path: $.readme_exists # The path to the field to analyze operator: equal # Indicates the operation to apply value: true # The desired value of the field indicated in path, above. - id: has_catalog_info_file_check rule: factRef: scm:default/readme_and_catalog_info_files_exist_fact path: $.catalog_info_exists operator: equal value: true - id: python_service_runs_tests rule: factRef: scm:default/python_service_runs_tests path: $.matches operator: equal value: true - id: less_than_4_branches rule: factRef: branch:default/branch_count path: $.totalCount operator: lessThan value: 4 passedMessage: | Less than 4 branches failedMessage: | 4 or more branches - id: less_than_3_branches rule: factRef: branch:default/branch_count path: $.totalCount operator: lessThan value: 3 passedMessage: | Less than 3 branches failedMessage: | 3 or more branches - id: require-code-owner-review rule: factRef: github:default/protections path: $.required_pull_request_reviews.require_code_owner_reviews operator: equal value: true passedMessage: | require_code_owner_reviews true failedMessage: | require_code_owner_reviews false - id: approving-review-count rule: factRef: github:default/protections path: $.required_pull_request_reviews.required_approving_review_count operator: greaterThan value: 1 passedMessage: | required_approving_review_count greaterThan 1 failedMessage: | required_approving_review_count lessThan 2 - id: github_actions_tests_passing rule: factRef: custom:default/github_actions_test path: $.testPassed operator: equal value: true - id: lifecycle_defined rule: any: - factRef: catalog:default/entity_descriptor path: $.spec.lifecycle operator: equal value: experimental - factRef: catalog:default/entity_descriptor path: $.spec.lifecycle operator: equal value: production schedule: frequency: cron: '*/5 * * * 1-5' filter: kind: 'Component' - id: has_pagerduty_integration_key rule: factRef: catalog:default/entity_descriptor path: $.metadata.annotations["pagerduty.com/integration-key"] operator: matches value: .+ schedule: frequency: cron: '*/5 * * * 1-5' filter: kind: 'Component' - id: is_level_one_certified_branch_protections_and_number rule: all: - factRef: soundcheck:default/program/branch-protections path: $.highestLevel.ordinal operator: greaterThanInclusive value: 1 - factRef: soundcheck:default/program/number-of-branches path: $.highestLevel.ordinal operator: greaterThanInclusive value: 1 schedule: frequency: cron: '*/5 * * * 1-5' filter: kind: 'Component' - id: is_level_two_certified_branch_protections_and_number rule: all: - factRef: soundcheck:default/program/branch-protections path: $.highestLevel.ordinal operator: greaterThanInclusive value: 2 - factRef: soundcheck:default/program/number-of-branches path: $.highestLevel.ordinal operator: greaterThanInclusive value: 2 schedule: frequency: cron: '*/5 * * * 1-5' filter: kind: 'Component' - id: has_description rule: factRef: github:default/repo_details path: $.description operator: matches value: .+ passedMessage: | Repo has a description failedMessage: | Repo does not have a description - id: requires_resource_type_to_be_technical_service rule: factRef: pagerduty:default/standards path: $.resource_type operator: equal value: technical_service schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website' - id: requires_type_to_be_service rule: factRef: pagerduty:default/service path: $.type operator: equal value: service schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website' - id: has_project_tags rule: factRef: sonarqube:default/project-tags path: $.tags operator: contains value: <TAG_PREFIXED_WITH_PROJECT_KEY> schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website' - id: has_issues rule: factRef: sonarqube:default/issues path: $.total operator: lessThan value: 5 schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website' - id: requires-service-definition-with-type rule: factRef: datadog:default/service-definition path: $.data.attributes.schema.type operator: in value: - 'cache' - 'custom' - 'db' - 'serverless function' - 'web' schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website' - id: has-an-slo-defined rule: factRef: datadog:default/service-level-objective path: $.data.type operator: matches value: 'service_level_objective_search_results' schedule: frequency: minutes: 5 filter: - kind: 'Component' - spec.type: 'Website'