{ "title": "Woodpecker CI configuration file", "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/woodpecker-ci/woodpecker/main/pipeline/frontend/yaml/linter/schema/schema.json", "description": "Schema of a Woodpecker pipeline file. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax", "type": "object", "required": ["steps"], "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-usage" }, "clone": { "$ref": "#/definitions/clone" }, "skip_clone": { "type": "boolean" }, "when": { "$ref": "#/definitions/workflow_when" }, "steps": { "$ref": "#/definitions/step_list" }, "services": { "$ref": "#/definitions/services" }, "workspace": { "$ref": "#/definitions/workspace" }, "matrix": { "$ref": "#/definitions/matrix" }, "labels": { "$ref": "#/definitions/labels" }, "depends_on": { "description": "List of workflow dependencies. Accepts strings or objects with name and optional fields. Read more: https://woodpecker-ci.org/docs/usage/workflows#flow-control", "$ref": "#/definitions/depends_on_list" }, "concurrency": { "description": "Limit how many instances of this workflow may run at the same time. Read more: https://woodpecker-ci.org/docs/usage/workflows#concurrency", "$ref": "#/definitions/concurrency" }, "runs_on": { "type": "array", "description": "Deprecated: use `when.status` instead. Read more: https://woodpecker-ci.org/docs/usage/workflows#flow-control", "minLength": 1, "items": { "type": "string" } } }, "definitions": { "string_or_string_slice": { "oneOf": [ { "type": "array", "minLength": 1, "items": { "type": "string" } }, { "type": "string" } ] }, "depends_on_item": { "oneOf": [ { "type": "string" }, { "type": "object", "required": ["name"], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the dependency (step or workflow)." }, "optional": { "type": "boolean", "default": false, "description": "If true, the dependency is silently dropped when not present in the pipeline." } } } ] }, "depends_on_list": { "description": "A dependency or list of dependencies. Each item can be a string or an object with name and optional fields.", "oneOf": [ { "type": "string" }, { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/depends_on_item" } } ] }, "concurrency": { "description": "Limit how many instances of this workflow may run at the same time. Provide an integer for the limit, or an object to also set a custom group.", "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "object", "additionalProperties": false, "required": ["limit"], "properties": { "limit": { "type": "integer", "minimum": 1, "description": "Maximum number of workflows sharing the same group that run at once." }, "group": { "type": "string", "description": "Identifier shared by workflows that are limited against each other. Defaults to the workflow name. Environment variables are substituted, e.g. `deploy-${CI_COMMIT_BRANCH}`." } } } ] }, "clone": { "description": "Configures the clone step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#clone", "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "git": { "type": "object", "properties": { "image": { "$ref": "#/definitions/step_image" }, "settings": { "$ref": "#/definitions/clone_settings" } } } } }, { "type": "array", "items": { "$ref": "#/definitions/step" }, "minLength": 1 } ] }, "clone_settings": { "description": "Change the settings of your clone plugin. Read more: https://woodpecker-ci.org/plugins/git-clone", "type": "object", "properties": { "depth": { "type": "number", "description": "If specified, uses git's --depth option to create a shallow clone with a limited number of commits, overwritten by partial" }, "recursive": { "type": "boolean", "default": false, "description": "Clones submodules recursively" }, "partial": { "type": "boolean", "description": "Only fetch the one commit and it's blob objects to resolve all files, overwrite depth with 1" }, "lfs": { "type": "boolean", "default": true, "description": "Set this to false to disable retrieval of LFS files" }, "tags": { "type": "boolean", "description": "Fetches tags when set to true, default is false if event is not tag else true" } }, "additionalProperties": { "type": ["boolean", "string", "number", "array", "object"] } }, "step_list": { "description": "The steps 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/workflow-syntax#steps", "oneOf": [ { "type": "object", "additionalProperties": { "$ref": "#/definitions/step" }, "minProperties": 1 }, { "type": "array", "items": { "$ref": "#/definitions/step" }, "minLength": 1 } ] }, "workflow_when": { "description": "Whole workflow can be skipped based on conditions. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#when---global-workflow-conditions", "oneOf": [ { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/workflow_when_condition" } }, { "$ref": "#/definitions/workflow_when_condition" } ] }, "workflow_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/workflow-syntax#repo", "$ref": "#/definitions/constraint_list" }, "branch": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#branch", "$ref": "#/definitions/constraint_list" }, "event": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#event", "default": [], "$ref": "#/definitions/event_constraint_list" }, "ref": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#ref", "$ref": "#/definitions/constraint_list" }, "cron": { "description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#cron", "$ref": "#/definitions/constraint_list" }, "status": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflows#flow-control", "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/workflow-syntax#platform", "$ref": "#/definitions/constraint_list" }, "instance": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-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/workflow-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" }, "on_empty": { "type": "boolean" } }, "additionalProperties": false } ] }, "evaluate": { "description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate", "type": "string" } } }, "step": { "description": "A step of your workflow executes either arbitrary commands or uses a plugin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#steps", "anyOf": [ { "$ref": "#/definitions/commands_step" }, { "$ref": "#/definitions/plugin_step" } ] }, "commands_step": { "description": "Every step of your pipeline executes arbitrary commands inside a specified docker container. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#steps", "type": "object", "additionalProperties": false, "required": ["image"], "allOf": [ { "if": { "properties": { "detach": { "const": true } } }, "then": {}, "else": { "anyOf": [ { "required": ["commands"] }, { "required": ["entrypoint"] } ] } } ], "properties": { "name": { "description": "The name of the step. Can be used if using the array style steps list.", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "commands": { "$ref": "#/definitions/step_commands" }, "environment": { "$ref": "#/definitions/step_environment" }, "directory": { "$ref": "#/definitions/step_directory" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "depends_on": { "description": "Execute a step after another step has finished. Accepts strings or objects with name and optional fields.", "$ref": "#/definitions/depends_on_list" }, "detach": { "description": "Detach a step to run in background until pipeline finishes. Read more: https://woodpecker-ci.org/docs/usage/services#detachment", "type": "boolean" }, "failure": { "description": "How to handle the failure of this step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#failure", "type": "string", "enum": ["fail", "ignore", "cancel"], "default": "fail" }, "backend_options": { "$ref": "#/definitions/step_backend_options" }, "entrypoint": { "$ref": "#/definitions/step_entrypoint" }, "dns": { "description": "Change DNS server for step. Only allowed if 'Trusted Network' option is enabled in repo settings by an admin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#dns", "$ref": "#/definitions/string_or_string_slice" }, "dns_search": { "description": "Change DNS lookup domain for step. Only allowed if 'Trusted Network' option is enabled in repo settings by an admin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#dns", "$ref": "#/definitions/string_or_string_slice" } } }, "plugin_step": { "description": "Plugins let you execute predefined functions in a more secure context. Read more: https://woodpecker-ci.org/docs/usage/plugins/overview", "type": "object", "additionalProperties": false, "required": ["image"], "properties": { "name": { "description": "The name of the step. Can be used if using the array style steps list.", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "directory": { "$ref": "#/definitions/step_directory" }, "settings": { "$ref": "#/definitions/step_settings" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "depends_on": { "description": "Execute a step after another step has finished. Accepts strings or objects with name and optional fields.", "$ref": "#/definitions/depends_on_list" }, "detach": { "description": "Detach a step to run in background until pipeline finishes. Read more: https://woodpecker-ci.org/docs/usage/services#detachment", "type": "boolean" }, "failure": { "description": "How to handle the failure of this step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#failure", "type": "string", "enum": ["fail", "ignore"], "default": "fail" }, "backend_options": { "$ref": "#/definitions/step_backend_options" } } }, "step_when": { "description": "Steps can be skipped based on conditions. Read more: https://woodpecker-ci.org/docs/usage/workflow-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/workflow-syntax#repo", "$ref": "#/definitions/constraint_list" }, "branch": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#branch", "$ref": "#/definitions/constraint_list" }, "event": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#event", "$ref": "#/definitions/event_constraint_list" }, "ref": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#ref", "$ref": "#/definitions/constraint_list" }, "cron": { "description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#cron", "$ref": "#/definitions/constraint_list" }, "status": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-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/workflow-syntax#platform", "$ref": "#/definitions/constraint_list" }, "matrix": { "description": "Read more: https://woodpecker-ci.org/docs/usage/matrix-workflows", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "instance": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-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/workflow-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" }, "on_empty": { "type": "boolean" } }, "additionalProperties": false } ] }, "evaluate": { "description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate", "type": "string" } } }, "event_enum": { "enum": [ "push", "pull_request", "pull_request_closed", "pull_request_metadata", "tag", "deployment", "cron", "manual", "release" ] }, "event_constraint_list": { "oneOf": [ { "$ref": "#/definitions/event_enum" }, { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/event_enum" } } ] }, "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/workflow-syntax#image", "type": "string" }, "step_privileged": { "description": "Run the step in privileged mode. Read more: https://woodpecker-ci.org/docs/next/usage/workflow-syntax#privileged-mode", "type": "boolean", "default": false }, "step_pull": { "description": "Always pull the latest image on pipeline execution Read more: https://woodpecker-ci.org/docs/usage/workflow-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/workflow-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", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number", "array", "object"] } }, "step_entrypoint": { "description": "Defines container entrypoint.", "$ref": "#/definitions/string_or_string_slice" }, "step_settings": { "description": "Change the settings of your plugin. Read more: https://woodpecker-ci.org/docs/usage/plugins/overview", "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 }, "step_directory": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#directory", "type": "string" }, "step_backend_options": { "description": "Advanced options for the different agent backends. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#backend_options", "type": "object", "properties": { "docker": { "$ref": "#/definitions/step_backend_docker" }, "kubernetes": { "$ref": "#/definitions/step_backend_kubernetes" } } }, "step_backend_docker": { "description": "Advanced options for the Docker backend. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/docker#step-specific-configuration", "type": "object", "properties": { "user": { "description": "User or user:group used to run the container. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user", "type": "string" } } }, "step_backend_kubernetes": { "description": "Advanced options for the Kubernetes backend. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#step-specific-configuration", "type": "object", "properties": { "resources": { "description": "CPU, memory, and other resource requests and limits. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#resources", "$ref": "#/definitions/step_backend_kubernetes_resources" }, "labels": { "description": "Additional Kubernetes pod labels. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#annotations-and-labels", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "annotations": { "description": "Additional Kubernetes pod annotations. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#annotations-and-labels", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "tolerations": { "description": "The tolerations section defines a list of references to the native Kubernetes tolerations. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#tolerations", "type": "array", "items": { "$ref": "#/definitions/step_backend_kubernetes_toleration_object" }, "minLength": 1 }, "securityContext": { "description": "Kubernetes pod and container security context. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "$ref": "#/definitions/step_backend_kubernetes_security_context" }, "runtimeClassName": { "description": "Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#runtimeclassname", "type": "string" }, "serviceAccountName": { "description": "Name of the Kubernetes service account mounted into the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#service-account", "type": "string" }, "workspaceVolume": { "description": "Whether the default workspace volume is mounted into a service pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#workspace-volume", "type": "boolean" }, "hostUsers": { "description": "Whether the pod uses the host user namespace. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#user-namespaces", "type": "boolean" }, "nodeSelector": { "description": "Labels used to select the node on which the step is executed. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#node-selector", "type": "object", "additionalProperties": { "type": "string" } }, "affinity": { "description": "Kubernetes affinity and anti-affinity rules for the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#affinity", "type": "object" }, "secrets": { "description": "The secrets section defines a list of references to native Kubernetes secrets. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#step-specific-configuration", "type": "array", "items": { "$ref": "#/definitions/step_kubernetes_secret" }, "minLength": 1 } } }, "step_backend_kubernetes_resources": { "description": "Resources for the kubernetes backend. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#step-specific-configuration", "type": "object", "properties": { "requests": { "$ref": "#/definitions/step_kubernetes_resources_object" }, "limits": { "$ref": "#/definitions/step_kubernetes_resources_object" } } }, "step_backend_kubernetes_security_context": { "description": "Pods / containers security context. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "object", "properties": { "privileged": { "description": "Whether the container runs in privileged mode. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "boolean" }, "runAsNonRoot": { "description": "Whether the pod must run as a non-root user. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "boolean" }, "runAsUser": { "description": "User ID used to run the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "number" }, "runAsGroup": { "description": "Group ID used to run the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "number" }, "fsGroup": { "description": "Filesystem group ID for mounted volumes. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "number" }, "fsGroupChangePolicy": { "description": "Policy for changing mounted-volume ownership. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "string" }, "seccompProfile": { "description": "Seccomp profile for the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "$ref": "#/definitions/step_backend_kubernetes_secprofile" }, "apparmorProfile": { "description": "AppArmor profile for the pod. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "$ref": "#/definitions/step_backend_kubernetes_secprofile" }, "allowPrivilegeEscalation": { "description": "Whether the container can gain additional privileges. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "boolean" }, "capabilities": { "description": "Linux capabilities removed from the container. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "$ref": "#/definitions/step_backend_kubernetes_capabilities" } } }, "step_backend_kubernetes_capabilities": { "description": "Linux capabilities to remove from the container. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "object", "properties": { "drop": { "description": "Linux capabilities to remove. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "array", "items": { "type": "string" } } } }, "step_backend_kubernetes_secprofile": { "description": "Pod or container security profile. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "object", "properties": { "type": { "description": "Security profile type. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "string" }, "localhostProfile": { "description": "Path to the local security profile. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "string" } } }, "step_kubernetes_resources_object": { "description": "Kubernetes resource quantities keyed by resource name. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#resources", "type": "object", "additionalProperties": { "type": "string" } }, "step_kubernetes_secret": { "description": "A reference to a native Kubernetes secret", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "The name of the secret. Can be used if using the array style secrets list.", "type": "string" }, "key": { "description": "The key of the secret to select from.", "type": "string" }, "target": { "$ref": "#/definitions/step_kubernetes_secret_target" } } }, "step_kubernetes_secret_target": { "description": "A target which a native Kubernetes secret maps to.", "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "env": { "description": "The name of the environment variable which secret maps to.", "type": "string" } } }, { "type": "object", "additionalProperties": false, "properties": { "file": { "description": "The filename (path) which secret maps to.", "type": "string" } } } ] }, "step_backend_kubernetes_toleration_object": { "description": "Toleration entry for the kubernetes backend.", "type": "object", "properties": { "key": { "type": "string" }, "operator": { "type": "string" }, "value": { "type": "string" }, "effect": { "type": "string" }, "tolerationSeconds": { "type": "integer" } } }, "services": { "description": "Read more: https://woodpecker-ci.org/docs/usage/services", "oneOf": [ { "$ref": "#/definitions/services_map" }, { "$ref": "#/definitions/services_list" } ] }, "services_map": { "description": "Services keyed by name, where the map key is used as the service name. Read more: https://woodpecker-ci.org/docs/usage/services", "type": "object", "additionalProperties": { "$ref": "#/definitions/service" }, "minProperties": 1 }, "services_list": { "description": "Services as a list. There is no map key to take the name from, so each service must set `name` itself. Read more: https://woodpecker-ci.org/docs/usage/services", "type": "array", "items": { "allOf": [ { "$ref": "#/definitions/service" }, { "required": ["name"] } ] }, "minLength": 1 }, "service": { "description": "Read more: https://woodpecker-ci.org/docs/usage/services", "type": "object", "additionalProperties": false, "minProperties": 1, "required": ["image"], "properties": { "name": { "description": "The name of the service. It is used as the hostname other containers reach the service by, and is required when using the array style services list", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "commands": { "$ref": "#/definitions/step_commands" }, "environment": { "$ref": "#/definitions/step_environment" }, "entrypoint": { "$ref": "#/definitions/step_entrypoint" }, "directory": { "$ref": "#/definitions/step_directory" }, "settings": { "$ref": "#/definitions/step_settings" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "failure": { "description": "How to handle the failure of this step. Read more: https://woodpecker-ci.org/docs/usage/services#stopping", "type": "string", "enum": ["fail", "ignore"], "default": "fail" }, "backend_options": { "$ref": "#/definitions/step_backend_options" }, "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/workflow-syntax#workspace", "type": "object", "additionalProperties": true }, "matrix": { "description": "Execute pipeline for each matrix combination. Read more: https://woodpecker-ci.org/docs/usage/matrix-workflows", "type": "object", "properties": { "include": { "type": "array", "items": { "type": "object" }, "minLength": 1 } }, "additionalProperties": { "type": "array", "items": { "type": ["boolean", "string", "number"] }, "minLength": 1 } }, "labels": { "description": "Configures the labels used for the agent selection. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#labels", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } } } }