summaryrefslogtreecommitdiff
path: root/etc/evergreen_lint.yml
blob: 1e211133af2b53dcbb34c96dabe0e2b6462859e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# These paths are relative to the directory containing this configuration file
files:
    - evaluated_evergreen.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: 4
    # 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.
    - 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: ["build_variant_gen", "archive_dist_test"]