summaryrefslogtreecommitdiff
path: root/doc/api/ci/lint.md
blob: 89eafad740c29f010114f795f5ca55f34dae715f (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Validate the .gitlab-ci.yml

> [Introduced][ce-5953] in GitLab 8.12.

Checks if your .gitlab-ci.yml file is valid.

```
POST ci/lint
```

| Attribute  | Type    | Required | Description |
| ---------- | ------- | -------- | -------- |
| `content`  | hash    | yes      | the .gitlab-ci.yaml content|

```bash
curl --request POST "https://gitlab.example.com/api/v3/ci/lint?content={
  image: "ruby:2.1",
  services: ["postgres"],
  before_script: ["gem install bundler", "bundle install", "bundle exec rake db:create"],
  variables: {"DB_NAME": "postgres"},
  types: ["test", "deploy", "notify"],
  rspec: {
    script: "rake spec",
    tags: ["ruby", "postgres"],
    only: ["branches"]
  },
  spinach: {
    script: "rake spinach",
    allow_failure: true,
    tags: ["ruby", "mysql"],
    except: ["tags"]
  },
  staging: {
    variables: {KEY1: "value1", KEY2: "value2"},
    script: "cap deploy stating",
    type: "deploy",
    tags: ["ruby", "mysql"],
    except: ["stable"]
  },
  production: {
    variables: {DB_NAME: "mysql"},
    type: "deploy",
    script: ["cap deploy production", "cap notify"],
    tags: ["ruby", "mysql"],
    only: ["master", "/^deploy-.*$/"]
  },
  dockerhub: {
    type: "notify",
    script: "curl http://dockerhub/URL",
    tags: ["ruby", "postgres"],
    only: ["branches"]
  }
}"
```

Be sure to copy paste the exact contents of `.gitlab-ci.yml` as YAML is very picky about indentation and spaces.

Example responses:

* Valid content:

    ```json
    {
      "status": "valid",
      "errors": []
    }
    ```

* Invalid content:

    ```json
    {
      "status": "invalid",
      "errors": [
        "variables config should be a hash of key value pairs"
      ]
    }
    ```

* Without the content attribute:

    ```json
    {
      "error": "content is missing"
    }
    ```