summaryrefslogtreecommitdiff
path: root/docs/gl_objects/ci_lint.rst
blob: ad2d875e93e94e570416661d59ad385c9b53bef3 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#######
CI Lint
#######

Reference
---------

* v4 API:

  + :class:`gitlab.v4.objects.CiLint`
  + :class:`gitlab.v4.objects.CiLintManager`
  + :attr:`gitlab.Gitlab.ci_lint`
  + :class:`gitlab.v4.objects.ProjectCiLint`
  + :class:`gitlab.v4.objects.ProjectCiLintManager`
  + :attr:`gitlab.v4.objects.Project.ci_lint`

* GitLab API: https://docs.gitlab.com/ee/api/lint.html

Examples
---------

Lint a CI YAML configuration::

    gitlab_ci_yml = """.api_test:
      rules:
        - if: $CI_PIPELINE_SOURCE=="merge_request_event"
          changes:
            - src/api/*
    deploy:
      extends:
        - .api_test
      rules:
        - when: manual
          allow_failure: true
      script:
        - echo "hello world"
    """
    lint_result = gl.ci_lint.create({"content": gitlab_ci_yml})

    print(lint_result.status)  # Print the status of the CI YAML
    print(lint_result.merged_yaml)  # Print the merged YAML file

Lint a project's CI configuration::

    lint_result = project.ci_lint.get()
    assert lint_result.valid is True  # Test that the .gitlab-ci.yml is valid
    print(lint_result.merged_yaml)    # Print the merged YAML file

Lint a CI YAML configuration with a namespace::

    lint_result = project.ci_lint.create({"content": gitlab_ci_yml})
    assert lint_result.valid is True  # Test that the .gitlab-ci.yml is valid
    print(lint_result.merged_yaml)    # Print the merged YAML file

Validate a CI YAML configuration (raises ``GitlabCiLintError`` on failures)::

    # returns None
    gl.ci_lint.validate({"content": gitlab_ci_yml})

    # raises GitlabCiLintError
    gl.ci_lint.validate({"content": "invalid"})

Validate a CI YAML configuration with a namespace::

    # returns None
    project.ci_lint.validate({"content": gitlab_ci_yml})

    # raises GitlabCiLintError
    project.ci_lint.validate({"content": "invalid"})