mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-23 10:21:00 +00:00
287800ac62
closes #312 closes #224 closes #963 Have a look for https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md
554 lines
18 KiB
JSON
554 lines
18 KiB
JSON
{
|
|
"title": "Woodpecker CI configuration file",
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://woodpecker-ci.org/schema/woodpecker.json",
|
|
"description": "Schema of a Woodpecker pipeline file. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax",
|
|
"type": "object",
|
|
"required": ["pipeline"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"variables": {
|
|
"description": "Use yaml aliases to define variables. Read more: https://woodpecker-ci.org/docs/usage/advanced-yaml-syntax"
|
|
},
|
|
"clone": { "$ref": "#/definitions/clone" },
|
|
"branches": { "$ref": "#/definitions/branches" },
|
|
"pipeline": { "$ref": "#/definitions/pipeline" },
|
|
"services": { "$ref": "#/definitions/services" },
|
|
"workspace": { "$ref": "#/definitions/workspace" },
|
|
"matrix": { "$ref": "#/definitions/matrix" },
|
|
"platform": { "$ref": "#/definitions/platform" },
|
|
"labels": { "$ref": "#/definitions/labels" },
|
|
"skip_clone": { "type": "boolean" },
|
|
"depends_on": {
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string" }
|
|
},
|
|
"runs_on": {
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"definitions": {
|
|
"clone": {
|
|
"description": "Configures the clone step. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#clone",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"git": {
|
|
"type": "object",
|
|
"properties": {
|
|
"image": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"branches": {
|
|
"description": "Only include commits based on their target branch. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#branches",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"minProperties": 1
|
|
},
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"exclude": {
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minLength": 1
|
|
},
|
|
{ "type": "string" }
|
|
]
|
|
},
|
|
"include": {
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minLength": 1
|
|
},
|
|
{ "type": "string" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"pipeline": {
|
|
"description": "The pipeline section defines a list of steps which will be executed serially, in the order in which they are defined. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax",
|
|
"oneOf": [
|
|
{ "type": "object", "additionalProperties": { "$ref": "#/definitions/step" }, "minProperties": 1 },
|
|
{ "type": "array", "items": { "$ref": "#/definitions/step" }, "minLength": 1 }
|
|
]
|
|
},
|
|
"pipeline_when": {
|
|
"description": "Whole pipelines can be skipped based on conditions. Read more: TODO",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "$ref": "#/definitions/pipeline_when_condition" }
|
|
},
|
|
{
|
|
"$ref": "#/definitions/pipeline_when_condition"
|
|
}
|
|
]
|
|
},
|
|
"pipeline_when_condition": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"repo": {
|
|
"description": "Execute a step only on a specific repository. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#repo",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"branch": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#branch",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"event": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#event",
|
|
"default": [],
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "$ref": "#/definitions/event_enum" }
|
|
},
|
|
{
|
|
"$ref": "#/definitions/event_enum"
|
|
}
|
|
]
|
|
},
|
|
"tag": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#tag",
|
|
"type": "string"
|
|
},
|
|
"cron": {
|
|
"description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#cron",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"platform": {
|
|
"description": "Execute a step only on a specific platform. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#platform",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"environment": {
|
|
"description": "Execute a step only for a specific environment. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#environment",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"instance": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#instance",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"path": {
|
|
"description": "Execute a step only on commit with certain files added/removed/modified. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#path",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"exclude": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ignore_message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"evaluate": {
|
|
"description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#evaluate",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"step": {
|
|
"description": "Every step of your pipeline executes arbitrary commands inside a specified docker container. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#steps",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["image"],
|
|
"properties": {
|
|
"image": {
|
|
"$ref": "#/definitions/step_image"
|
|
},
|
|
"pull": {
|
|
"$ref": "#/definitions/step_pull"
|
|
},
|
|
"commands": {
|
|
"$ref": "#/definitions/step_commands"
|
|
},
|
|
"environment": {
|
|
"$ref": "#/definitions/step_environment"
|
|
},
|
|
"secrets": {
|
|
"$ref": "#/definitions/step_secrets"
|
|
},
|
|
"settings": {
|
|
"$ref": "#/definitions/step_settings"
|
|
},
|
|
"when": {
|
|
"$ref": "#/definitions/step_when"
|
|
},
|
|
"volumes": {
|
|
"$ref": "#/definitions/step_volumes"
|
|
},
|
|
"group": {
|
|
"description": "Execute multiple steps with the same group key in parallel. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#step-group---parallel-execution",
|
|
"type": "string"
|
|
},
|
|
"detach": {
|
|
"description": "Detach a step to run in background until pipeline finishes. Read more: https://woodpecker-ci.org/docs/usage/services#detachment",
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"step_when": {
|
|
"description": "Steps can be skipped based on conditions. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#when---conditional-execution",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "$ref": "#/definitions/step_when_condition" }
|
|
},
|
|
{
|
|
"$ref": "#/definitions/step_when_condition"
|
|
}
|
|
]
|
|
},
|
|
"step_when_condition": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"repo": {
|
|
"description": "Execute a step only on a specific repository. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#repo",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"branch": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#branch",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"event": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#event",
|
|
"default": ["push", "pull_request", "tag", "deployment"],
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "$ref": "#/definitions/event_enum" }
|
|
},
|
|
{
|
|
"$ref": "#/definitions/event_enum"
|
|
}
|
|
]
|
|
},
|
|
"tag": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#tag",
|
|
"type": "string"
|
|
},
|
|
"cron": {
|
|
"description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#cron",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"status": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#status",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string", "enum": ["success", "failure"] }
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": ["success", "failure"]
|
|
}
|
|
]
|
|
},
|
|
"platform": {
|
|
"description": "Execute a step only on a specific platform. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#platform",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"environment": {
|
|
"description": "Execute a step only for a specific environment. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#environment",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"matrix": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/matrix-pipelines",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": ["boolean", "string", "number"]
|
|
}
|
|
},
|
|
"instance": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#instance",
|
|
"$ref": "#/definitions/constraint_list"
|
|
},
|
|
"path": {
|
|
"description": "Execute a step only on commit with certain files added/removed/modified. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#path",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"exclude": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ignore_message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"evaluate": {
|
|
"description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#evaluate",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"event_enum": {
|
|
"enum": ["push", "pull_request", "tag", "deployment", "cron", "manual"]
|
|
},
|
|
"constraint_list": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string" }
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"include": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string" }
|
|
}
|
|
]
|
|
},
|
|
"exclude": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minLength": 1,
|
|
"items": { "type": "string" }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"step_image": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#image",
|
|
"type": "string"
|
|
},
|
|
"step_pull": {
|
|
"description": "Always pull the latest image on pipeline execution Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#image",
|
|
"type": "boolean"
|
|
},
|
|
"step_commands": {
|
|
"description": "Commands of every pipeline step are executed serially as if you would enter them into your local shell. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#commands",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minLength": 1
|
|
},
|
|
{ "type": "string" }
|
|
]
|
|
},
|
|
"step_environment": {
|
|
"description": "Pass environment variables to a pipeline step. Read more: https://woodpecker-ci.org/docs/usage/environment",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minLength": 1
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": ["boolean", "string", "number"]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"step_secrets": {
|
|
"description": "Pass secrets to a pipeline step at runtime. Read more: https://woodpecker-ci.org/docs/usage/secrets",
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"required": ["source", "target"],
|
|
"properties": {
|
|
"source": { "type": "string" },
|
|
"target": { "type": "string" }
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"minLength": 1
|
|
},
|
|
"step_settings": {
|
|
"description": "Change the settings of your plugin. Read more: https://woodpecker-ci.org/docs/usage/plugins/plugins",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": ["boolean", "string", "number", "array", "object"]
|
|
}
|
|
},
|
|
"step_volumes": {
|
|
"description": "Mount files or folders from the host machine into your step container. Read more: https://woodpecker-ci.org/docs/usage/volumes",
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minLength": 1
|
|
},
|
|
"services": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/services",
|
|
"type": "object",
|
|
"additionalProperties": { "$ref": "#/definitions/service" },
|
|
"minProperties": 1
|
|
},
|
|
"service": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/services",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"minProperties": 1,
|
|
"required": ["image"],
|
|
"properties": {
|
|
"image": {
|
|
"$ref": "#/definitions/step_image"
|
|
},
|
|
"pull": {
|
|
"$ref": "#/definitions/step_pull"
|
|
},
|
|
"commands": {
|
|
"$ref": "#/definitions/step_commands"
|
|
},
|
|
"environment": {
|
|
"$ref": "#/definitions/step_environment"
|
|
},
|
|
"secrets": {
|
|
"$ref": "#/definitions/step_secrets"
|
|
},
|
|
"settings": {
|
|
"$ref": "#/definitions/step_settings"
|
|
},
|
|
"when": {
|
|
"$ref": "#/definitions/step_when"
|
|
},
|
|
"volumes": {
|
|
"$ref": "#/definitions/step_volumes"
|
|
},
|
|
"ports": {
|
|
"description": "expose ports to which other steps can connect to",
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [{ "type": "number" }, { "type": "string" }]
|
|
},
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"workspace": {
|
|
"description": "Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#workspace",
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"matrix": {
|
|
"description": "Execute pipeline for each matrix combination. Read more: https://woodpecker-ci.org/docs/usage/matrix-pipelines",
|
|
"type": "object",
|
|
"properties": {
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
},
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": ["boolean", "string", "number"]
|
|
},
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"platform": {
|
|
"description": "Configures the platform the pipeline will be executed on. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#platform",
|
|
"type": "string",
|
|
"additionalProperties": false
|
|
},
|
|
"labels": {
|
|
"description": "Configures the labels used for the agent selection. Read more: https://woodpecker-ci.org/docs/usage/pipeline-syntax#clone",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": ["boolean", "string", "number"]
|
|
}
|
|
}
|
|
}
|
|
}
|