{ "version": "workflow-v1.0", "definitions": { "workflow-root": { "description": "Workflow file", "mapping": { "properties": { "on": "any", "name": "string", "defaults": "workflow-defaults", "env": "workflow-env", "jobs": "jobs" } } }, "steps-template-root": { "description": "Steps template file", "mapping": { "properties": { "inputs": "steps-template-inputs", "outputs": "steps-template-outputs", "steps": "steps-in-template" } } }, "steps-scope-inputs": { "description": "Used when evaluating steps scope inputs", "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "steps-scope-input-value" } }, "steps-scope-input-value": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env" ], "one-of": [ "string", "sequence", "mapping" ] }, "steps-scope-outputs": { "description": "Used when evaluating steps scope outputs", "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "steps-scope-output-value" } }, "steps-scope-output-value": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env" ], "string": {} }, "steps-template-inputs": { "description": "Allowed inputs in a steps template", "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "steps-template-input-value" } }, "steps-template-input-value": { "description": "Default input values for a steps template", "context": [ "github", "needs", "strategy", "matrix" ], "one-of": [ "string", "sequence", "mapping" ] }, "steps-template-outputs": { "description": "Output mapping for a steps template", "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "steps-template-output-value" } }, "steps-template-output-value": { "description": "Output values for a steps template", "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env" ], "string": {} }, "workflow-defaults": { "mapping": { "properties": { "run": "workflow-defaults-run" } } }, "workflow-defaults-run": { "mapping": { "properties": { "shell": "non-empty-string", "working-directory": "non-empty-string" } } }, "workflow-env": { "context": [ "github", "secrets" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "jobs": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "job" } }, "job": { "mapping": { "properties": { "needs": "needs", "if": "job-if", "strategy": "strategy", "name": "string-strategy-context", "runs-on": { "type": "runs-on", "required": true }, "timeout-minutes": "number-strategy-context", "cancel-timeout-minutes": "number-strategy-context", "continue-on-error": "boolean-strategy-context", "container": "container", "services": "services", "env": "job-env", "outputs": "job-outputs", "defaults": "job-defaults", "steps": "steps" } } }, "needs": { "one-of": [ "sequence-of-non-empty-string", "non-empty-string" ] }, "job-if": { "context": [ "github", "needs", "always(0,0)", "failure(0,MAX)", "cancelled(0,0)", "success(0,MAX)" ], "string": {} }, "job-if-result": { "context": [ "github", "needs", "always(0,0)", "failure(0,MAX)", "cancelled(0,0)", "success(0,MAX)" ], "one-of": [ "null", "boolean", "number", "string", "sequence", "mapping" ] }, "strategy": { "context": [ "github", "needs" ], "mapping": { "properties": { "fail-fast": "boolean", "max-parallel": "number", "matrix": "matrix" } } }, "matrix": { "mapping": { "properties": { "include": "matrix-include", "exclude": "matrix-exclude" }, "loose-key-type": "non-empty-string", "loose-value-type": "sequence" } }, "matrix-include": { "sequence": { "item-type": "matrix-include-item" } }, "matrix-include-item": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "any" } }, "matrix-exclude": { "sequence": { "item-type": "matrix-exclude-item" } }, "matrix-exclude-item": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "matrix-exclude-filter-item" } }, "matrix-exclude-filter-item": { "one-of": [ "string", "matrix-exclude-mapping-filter" ] }, "matrix-exclude-mapping-filter": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "matrix-exclude-filter-item" } }, "runs-on": { "context": [ "github", "needs", "strategy", "matrix" ], "one-of": [ "non-empty-string", "sequence-of-non-empty-string", "runs-on-mapping" ] }, "runs-on-mapping": { "mapping": { "properties": { "pool": { "type": "non-empty-string", "required": true } } } }, "job-env": { "context": [ "github", "needs", "strategy", "matrix", "secrets" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "job-defaults": { "mapping": { "properties": { "run": "job-defaults-run" } } }, "job-defaults-run": { "context": [ "github", "strategy", "matrix", "needs", "env" ], "mapping": { "properties": { "shell": "non-empty-string", "working-directory": "non-empty-string" } } }, "job-outputs": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string-runner-context" } }, "steps": { "sequence": { "item-type": "steps-item" } }, "steps-in-template": { "sequence": { "item-type": "steps-item-in-template" } }, "steps-item": { "one-of": [ "run-step", "regular-step", "steps-template-reference" ] }, "steps-item-in-template": { "one-of": [ "run-step-in-template", "regular-step-in-template", "steps-template-reference-in-template" ] }, "run-step": { "mapping": { "properties": { "name": "string-steps-context", "id": "non-empty-string", "if": "step-if", "timeout-minutes": "number-steps-context", "run": { "type": "string-steps-context", "required": true }, "continue-on-error": "boolean-steps-context", "env": "step-env", "working-directory": "string-steps-context", "shell": "non-empty-string" } } }, "run-step-in-template": { "mapping": { "properties": { "name": "string-steps-context-in-template", "id": "non-empty-string", "if": "step-if-in-template", "timeout-minutes": "number-steps-context-in-template", "run": { "type": "string-steps-context-in-template", "required": true }, "continue-on-error": "boolean-steps-context-in-template", "env": "step-env-in-template", "working-directory": "string-steps-context-in-template", "shell": "non-empty-string" } } }, "regular-step": { "mapping": { "properties": { "name": "string-steps-context", "id": "non-empty-string", "if": "step-if", "continue-on-error": "boolean-steps-context", "timeout-minutes": "number-steps-context", "uses": { "type": "non-empty-string", "required": true }, "with": "step-with", "env": "step-env" } } }, "regular-step-in-template": { "mapping": { "properties": { "name": "string-steps-context-in-template", "id": "non-empty-string", "if": "step-if-in-template", "continue-on-error": "boolean-steps-context-in-template", "timeout-minutes": "number-steps-context-in-template", "uses": { "type": "non-empty-string", "required": true }, "with": "step-with-in-template", "env": "step-env-in-template" } } }, "step-if": { "context": [ "github", "needs", "strategy", "matrix", "steps", "job", "runner", "env", "always(0,0)", "failure(0,0)", "cancelled(0,0)", "success(0,0)", "hashFiles(1,255)" ], "string": {} }, "step-if-in-template": { "context": [ "github", "needs", "strategy", "matrix", "steps", "inputs", "job", "runner", "env", "always(0,0)", "failure(0,0)", "cancelled(0,0)", "success(0,0)", "hashFiles(1,255)" ], "string": {} }, "step-if-result": { "context": [ "github", "strategy", "matrix", "steps", "job", "runner", "env", "always(0,0)", "failure(0,0)", "cancelled(0,0)", "success(0,0)", "hashFiles(1,255)" ], "one-of": [ "null", "boolean", "number", "string", "sequence", "mapping" ] }, "step-if-result-in-template": { "context": [ "github", "strategy", "matrix", "steps", "inputs", "job", "runner", "env", "always(0,0)", "failure(0,0)", "cancelled(0,0)", "success(0,0)", "hashFiles(1,255)" ], "one-of": [ "null", "boolean", "number", "string", "sequence", "mapping" ] }, "steps-template-reference": { "mapping": { "properties": { "template": "non-empty-string", "id": "non-empty-string", "inputs": "steps-template-reference-inputs" } } }, "steps-template-reference-in-template": { "mapping": { "properties": { "template": "non-empty-string", "id": "non-empty-string", "inputs": "steps-template-reference-inputs-in-template" } } }, "steps-template-reference-inputs": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "steps-template-reference-inputs-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "step-env": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env", "hashFiles(1,255)" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "step-env-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env", "hashFiles(1,255)" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "step-with": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env", "hashFiles(1,255)" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "step-with-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env", "hashFiles(1,255)" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string" } }, "container": { "context": [ "github", "needs", "strategy", "matrix" ], "one-of": [ "string", "container-mapping" ] }, "container-mapping": { "mapping": { "properties": { "image": "non-empty-string", "options": "non-empty-string", "env": "container-env", "ports": "sequence-of-non-empty-string", "volumes": "sequence-of-non-empty-string" } } }, "services": { "context": [ "github", "needs", "strategy", "matrix" ], "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "services-container" } }, "services-container": { "context": [ "github", "needs", "strategy", "matrix" ], "one-of": [ "non-empty-string", "container-mapping" ] }, "container-env": { "mapping": { "loose-key-type": "non-empty-string", "loose-value-type": "string-runner-context" } }, "non-empty-string": { "string": { "require-non-empty": true } }, "sequence-of-non-empty-string": { "sequence": { "item-type": "non-empty-string" } }, "boolean-strategy-context": { "context": [ "github", "needs", "strategy", "matrix" ], "boolean": {} }, "number-strategy-context": { "context": [ "github", "needs", "strategy", "matrix" ], "number": {} }, "string-strategy-context": { "context": [ "github", "needs", "strategy", "matrix" ], "string": {} }, "boolean-steps-context": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env", "hashFiles(1,255)" ], "boolean": {} }, "boolean-steps-context-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env", "hashFiles(1,255)" ], "boolean": {} }, "number-steps-context": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env", "hashFiles(1,255)" ], "number": {} }, "number-steps-context-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env", "hashFiles(1,255)" ], "number": {} }, "string-runner-context": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env" ], "string": {} }, "string-steps-context": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "job", "runner", "env", "hashFiles(1,255)" ], "string": {} }, "string-steps-context-in-template": { "context": [ "github", "needs", "strategy", "matrix", "secrets", "steps", "inputs", "job", "runner", "env", "hashFiles(1,255)" ], "string": {} } } }