diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-14 12:07:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-14 12:07:51 +0300 |
commit | 00b8ecb72c9f77d864aff3572f028613f45af03c (patch) | |
tree | cb8f42234547d61f2721e3fe9361e84c6a710235 /doc/administration/external_pipeline_validation.md | |
parent | 138c61238317b2a61f387749a1f4583309675a83 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc/administration/external_pipeline_validation.md')
-rw-r--r-- | doc/administration/external_pipeline_validation.md | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/doc/administration/external_pipeline_validation.md b/doc/administration/external_pipeline_validation.md new file mode 100644 index 00000000000..19d4de3b705 --- /dev/null +++ b/doc/administration/external_pipeline_validation.md @@ -0,0 +1,103 @@ +# External Pipeline Validation + +You can use an external service for validating a pipeline before it's created. + +CAUTION: **Warning:** +This is an experimental feature and subject to change without notice. + +## Usage + +GitLab will send a POST request to the external service URL with the pipeline +data as payload. GitLab will then invalidate the pipeline based on the response +code. If there's an error or the request times out, the pipeline will not be +invalidated. + +Response Code Legend: + +- `200` - Accepted +- `4xx` - Not Accepted +- Other Codes - Accepted and Logged + +## Configuration + +Set the `EXTERNAL_VALIDATION_SERVICE_URL` to the external service url. + +## Payload Schema + +```json +{ + "type": "object", + "required" : [ + "project", + "user", + "pipeline", + "builds" + ], + "properties" : { + "project": { + "type": "object", + "required": [ + "id", + "path" + ], + "properties": { + "id": { "type": "integer" }, + "path": { "type": "string" } + } + }, + "user": { + "type": "object", + "required": [ + "id", + "username", + "email" + ], + "properties": { + "id": { "type": "integer" }, + "username": { "type": "string" }, + "email": { "type": "string" } + } + }, + "pipeline": { + "type": "object", + "required": [ + "sha", + "ref", + "type" + ], + "properties": { + "sha": { "type": "string" }, + "ref": { "type": "string" }, + "type": { "type": "string" } + } + }, + "builds": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "stage", + "image", + "services", + "script" + ], + "properties": { + "name": { "type": "string" }, + "stage": { "type": "string" }, + "image": { "type": ["string", "null"] }, + "services": { + "type": ["array", "null"], + "items": { "type": "string" } + }, + "script": { + "type": "array", + "items": { "type": "string" } + } + } + } + } + }, + "additionalProperties": false +} +``` |