Skip to content

Instantly share code, notes, and snippets.

@sevaa
Created May 28, 2024 19:50
Show Gist options
  • Save sevaa/3a652f1ad94eb8419a6910c5f7fb1bd5 to your computer and use it in GitHub Desktop.
Save sevaa/3a652f1ad94eb8419a6910c5f7fb1bd5 to your computer and use it in GitHub Desktop.
tasks.schema.amended.json
{
"$schema": "http://json-schema.org/draft-04/schema",
"id": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json",
"title": "Azure DevOps Tasks schema",
"type": "object",
"additionalProperties": false,
"properties": {
"serverOwned":{"type":"boolean"},
"contentsUploaded":{"type":"boolean"},
"iconUrl":{
"type":"null",
"description": "Never saw a nonnull"
},
"hostType":{
"type":"null",
"description": "Never saw a nonnull"
},
"definitionType":{"enum":["task"]},
"ecosystem":{"enum":["node", "dotnet"]},
"satisfies":{"type":"array",
"description":"I guess this is some kind of alias for this task that YAML definitions may use",
"items": {
"type":"string",
"description": "Found the following values: Buildctl, Helm, Func, GO, Java, JDK, Docker, Kubectl, DotNetCore, NuGet, node, npm, node.js, VsTest, Packer, PowerPlatformTool"
}
},
"contributionIdentifier":{"type":"string"},
"contributionVersion":{"type":"string"},
"id": {
"type": "string",
"description": "A unique guid for this task",
"pattern": "^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$"
},
"name": {
"type": "string",
"description": "Name with no spaces",
"pattern": "^[A-Za-z0-9\\-]+$"
},
"friendlyName": {
"type": "string",
"description": "Descriptive name (spaces allowed). Must be <= 40 chars"
},
"description": {
"type": "string",
"description": "Detailed description of what your task does"
},
"helpUrl": {
"type": "string"
},
"helpMarkDown": {
"type": "string"
},
"author": {
"type": "string"
},
"preview": {
"type": "boolean"
},
"deprecated": {
"type": "boolean",
"description": "Task is deprecated only when the latest version is marked as deprecated. Deprecated tasks appear at the end of searches under a section that is collapsed by default."
},
"removalDate": {
"type": "string",
"description": "The date included in the depreciation warning after which the task may no longer be available. Format: YYYY-MM-DD",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"deprecationMessage": {
"type": "string",
"description": "A tailored deprecation message containing detailed information about the task deprecation (besides the removal date and the URL leading to the task documentation) in addition to the common deprecation message."
},
"showEnvironmentVariables": {
"type": "boolean",
"description": "Toggles showing the environment variable editor in the task editor UI. Allows passing environment variables to script based tasks."
},
"runsOn": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Agent",
"MachineGroup",
"Server",
"ServerGate",
"DeploymentGroup"
]
}
},
"visibility": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Build",
"Release",
"Preview"
]
}
},
"category": {
"type": "string",
"description": "Where the task appears in Azure DevOps. Use the ''Azure *'' categories for Azure DevOps and Azure DevOps Server 2019. Use the other categories for Team Foundation Server 2018 and below.",
"enum": [
"Build",
"Utility",
"Test",
"Package",
"Deploy",
"Azure Repos",
"Azure Boards",
"Azure Pipelines",
"Azure Test Plans",
"Azure Artifacts",
"Tool"
]
},
"groups": {
"type": "array",
"description": "Describes groups that task properties may be logically grouped by in the UI.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"displayName"
],
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string"
},
"isExpanded": {
"type": "boolean"
},
"visibleRule": {
"type": "string",
"description": "Allow''s you to define a rule which dictates when the group will be visible to a user, for example \"variableName1 != \\\"\\\" && variableName2 = value || variableName3 NotEndsWith value\""
}
}
}
},
"demands": {
"type": "array",
"description": "Allows you to define a list of demands that a build agent requires to run this build task.",
"items": {
"type": "string"
}
},
"minimumAgentVersion": {
"type": "string",
"pattern": "^\\d+\\.\\d+(\\.\\d+)?$"
},
"version": {
"type": "object",
"additionalProperties": false,
"description": "Always update this when you release your task, so that the agents utilize the latest code.",
"required": [
"Major",
"Minor",
"Patch"
],
"properties": {
"Major": {
"type": "number"
},
"Minor": {
"type": "number"
},
"Patch": {
"type": "number"
},
"isTest":{"type":"boolean"}
}
},
"instanceNameFormat": {
"type": "string",
"description": "This is how the task will be displayed within the build step list - you can use variable values by using $(variablename)"
},
"releaseNotes": {
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"label",
"type"
],
"properties": {
"validation": {
"type":"object",
"additionalProperties": false,
"properties": {
"expression": {"type":"string"},
"message": {"type":"string"}
}
},
"name": {
"type": "string",
"description": "The variable name to use to store the user-supplied value",
"pattern": "^[A-Za-z][A-Za-z0-9]*$"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
}
},
"label": {
"type": "string",
"description": "The text displayed to the user for the input label"
},
"type": {
"type": "string",
"description": "The type that dictates the control rendered to the user.",
"anyOf": [
{
"enum": [
"boolean",
"filePath",
"multiLine",
"pickList",
"radio",
"secureFile",
"string",
"int",
"identities",
"querycontrol"
]
},
{
"type": "string",
"pattern": "^connectedService\\:.+$"
}
]
},
"defaultValue": {
"type": [
"string",
"boolean"
],
"description": "The default value to apply to this input."
},
"required": {
"type": "boolean",
"description": "Whether the input is a required field (default is false).",
"default": false
},
"helpMarkDown": {
"type": "string",
"description": "Help to be displayed when hovering over the help icon for the input. To display URLs use the format [Text To Display](http://Url)"
},
"groupName": {
"type": "string",
"description": "Setting this to the name of a group defined in ''groups'' will place the input into that group."
},
"visibleRule": {
"type": "string",
"description": "Allow''s you to define a rule which dictates when the input will be visible to a user, for example \"variableName1 != \\\"\\\" && variableName2 = value || variableName3 NotEndsWith value\""
},
"properties": {
"type": "object",
"properties": {
"EditableOptions": {
"type": "string",
"enum": [
"True",
"False"
]
},
"MultiSelect": {
"type": "string",
"enum": [
"True",
"False"
]
},
"MultiSelectFlatList": {
"type": "string",
"enum": [
"True",
"False"
]
},
"DisableManageLink": {
"type": "string",
"enum": [
"True",
"False"
]
},
"IsSearchable": {
"type": "string",
"enum": [
"True",
"False"
]
},
"PopulateDefaultValue": {
"type": "string",
"enum": [
"True",
"False"
]
},
"isVariableOrNonNegativeNumber": {
"type": "string",
"enum": [
"true",
"false"
]
},
"resizable": {
"type": ["boolean","string"]
},
"rows": {
"type": "string",
"pattern": "^\\d+$"
},
"maxLength": {
"type": "string",
"pattern": "^\\d+$"
},
"editorExtension": {
"type": "string"
},
"EndpointFilterRule": {
"type": "string"
}
}
},
"options": {
"type": "object",
"additionalProperties": true
}
}
}
},
"dataSourceBindings": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"endpointId": {
"type": "string"
},
"dataSourceName": {
"type": "string"
},
"parameters": {
"type": "object"
},
"resultTemplate": {
"type": "string"
},
"endpointUrl": {
"type": "string"
},
"resultSelector": {
"type": "string"
},
"RequestVerb": {
"type": "string",
"enum": [
"GET",
"POST",
"DELETE",
"OPTIONS",
"HEAD",
"PUT",
"TRACE",
"PATCH"
]
},
"requestContent": {
"type": "string"
},
"callbackContextTemplate": {
"type": "string"
},
"callbackRequiredTemplate": {
"type": "string"
},
"initialContextTemplate": {
"type": "string"
}
}
}
},
"sourceDefinitions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"selector": {
"type": "string"
},
"keySelector": {
"type": "string"
},
"authKey": {
"type": "string"
}
}
}
},
"prejobexecution": {
"type": "object",
"additionalProperties": false,
"description": "Execution options for this task (on Pre-Job stage)",
"properties": {
"Node16": {
"$ref": "#/definitions/executionObject"
},
"Node10": {
"$ref": "#/definitions/executionObject"
},
"Node": {
"$ref": "#/definitions/executionObject"
},
"PowerShell3": {
"$ref": "#/definitions/executionObject"
},
"PowerShell": {
"$ref": "#/definitions/executionObject"
}
}
},
"execution": {
"type": "object",
"additionalProperties": false,
"description": "Execution options for this task",
"properties": {
"Node16": {
"$ref": "#/definitions/executionObject"
},
"Node10": {
"$ref": "#/definitions/executionObject"
},
"Node": {
"$ref": "#/definitions/executionObject"
},
"PowerShell3": {
"$ref": "#/definitions/executionObject"
},
"PowerShell": {
"$ref": "#/definitions/executionObject"
},
"Process": {
"$ref": "#/definitions/executionObject"
},
"Delay":{
"$ref": "#/definitions/executionObject"
},
"AgentPlugin":{
"$ref": "#/definitions/executionObject"
},
"HttpRequest":{
"$ref": "#/definitions/executionObject"
},
"HttpRequestChain":{
"$ref": "#/definitions/executionObject"
},
"ServiceBus":{
"$ref": "#/definitions/executionObject"
},
"RM:ManualIntervention":{
"$ref": "#/definitions/executionObject"
},
"ManualValidation":{
"$ref": "#/definitions/executionObject"
},
"PowerShellExe":{
"$ref": "#/definitions/executionObject"
}
,"Node14": {
"$ref": "#/definitions/executionObject"
},
"Node18": {
"$ref": "#/definitions/executionObject"
},
"Node20": {
"$ref": "#/definitions/executionObject"
}
}
},
"postjobexecution": {
"type": "object",
"additionalProperties": false,
"description": "Execution options for this task (on Post-Job stage)",
"properties": {
"Node16": {
"$ref": "#/definitions/executionObject"
},
"Node10": {
"$ref": "#/definitions/executionObject"
},
"Node": {
"$ref": "#/definitions/executionObject"
},
"PowerShell3": {
"$ref": "#/definitions/executionObject"
},
"PowerShell": {
"$ref": "#/definitions/executionObject"
},
"AgentPlugin":{
"$ref": "#/definitions/executionObject"
}
}
},
"messages": {
"type": "object"
},
"outputVariables": {
"type": "array",
"description": "Describes output variables of task.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The variable name",
"pattern": "^[A-Za-z][A-Za-z0-9]*$"
},
"description": {
"type": "string",
"description": "Detailed description of the variable"
}
}
}
},
"restrictions": {
"type": "object",
"additionalProperties": false,
"description": "Restrictions on tasks",
"properties": {
"commands": {
"type": "object",
"additionalProperties": false,
"description": "Restrictions on available task commands",
"properties": {
"mode": {
"type": "string",
"enum": [
"any",
"restricted"
]
}
}
},
"settableVariables": {
"type": "object",
"additionalProperties": false,
"description": "Restrictions on which variables can be set via commands",
"properties": {
"allowed": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"$schema": {
"type": "string"
}
},
"definitions": {
"executionObject": {
"type": "object",
"additionalProperties": true,
"required": [
"target"
],
"properties": {
"target": {
"type": "string",
"description": "The target file to be executed. You can use variables here in brackets e.g. $(currentDirectory)\filename.ps1"
},
"platforms": {
"type": "array",
"items": {
"enum": [
"windows"
]
}
},
"argumentFormat": {
"type": "string"
},
"workingDirectory": {
"type": "string"
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment