{
  "description": "StepAction represents the actionable components of Step.\nThe Step can only reference it from the cluster or using remote resolution.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "Spec holds the desired state of the Step from the client",
      "properties": {
        "args": {
          "description": "Arguments to the entrypoint.\nThe image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "command": {
          "description": "Entrypoint array. Not executed within a shell.\nThe image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "description": {
          "description": "Description is a user-facing description of the stepaction that may be\nused to populate a UI.",
          "type": [
            "string",
            "null"
          ]
        },
        "env": {
          "description": "List of environment variables to set in the container.\nCannot be updated.",
          "items": {
            "additionalProperties": false,
            "description": "EnvVar represents an environment variable present in a Container.",
            "properties": {
              "name": {
                "description": "Name of the environment variable. Must be a C_IDENTIFIER.",
                "type": "string"
              },
              "value": {
                "description": "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\".",
                "type": [
                  "string",
                  "null"
                ]
              },
              "valueFrom": {
                "additionalProperties": false,
                "description": "Source for the environment variable's value. Cannot be used if value is not empty.",
                "properties": {
                  "configMapKeyRef": {
                    "additionalProperties": false,
                    "description": "Selects a key of a ConfigMap.",
                    "properties": {
                      "key": {
                        "description": "The key to select.",
                        "type": "string"
                      },
                      "name": {
                        "default": "",
                        "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the ConfigMap or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "fieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.",
                    "properties": {
                      "apiVersion": {
                        "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "fieldPath": {
                        "description": "Path of the field to select in the specified API version.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "fieldPath"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "resourceFieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.",
                    "properties": {
                      "containerName": {
                        "description": "Container name: required for volumes, optional for env vars",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "divisor": {
                        "anyOf": [
                          {
                            "type": "integer"
                          },
                          {
                            "type": "string"
                          }
                        ],
                        "description": "Specifies the output format of the exposed resources, defaults to \"1\"",
                        "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                        "x-kubernetes-int-or-string": true
                      },
                      "resource": {
                        "description": "Required: resource to select",
                        "type": "string"
                      }
                    },
                    "required": [
                      "resource"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "secretKeyRef": {
                    "additionalProperties": false,
                    "description": "Selects a key of a secret in the pod's namespace",
                    "properties": {
                      "key": {
                        "description": "The key of the secret to select from.  Must be a valid secret key.",
                        "type": "string"
                      },
                      "name": {
                        "default": "",
                        "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the Secret or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "image": {
          "description": "Image reference name to run for this StepAction.\nMore info: https://kubernetes.io/docs/concepts/containers/images",
          "type": [
            "string",
            "null"
          ]
        },
        "params": {
          "description": "Params is a list of input parameters required to run the stepAction.\nParams must be supplied as inputs in Steps unless they declare a defaultvalue.",
          "items": {
            "additionalProperties": false,
            "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as\nresources). Parameter values are provided by users as inputs on a TaskRun\nor PipelineRun.",
            "properties": {
              "default": {
                "description": "Default is the value a parameter takes if no input value is supplied. If\ndefault is set, a Task may be executed without a supplied value for the\nparameter.",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "description": {
                "description": "Description is a user-facing description of the parameter that may be\nused to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "enum": {
                "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated.\nIf Enum is not set, no input validation is performed for the param.",
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "name": {
                "description": "Name declares the name by which a parameter is referenced.",
                "type": "string"
              },
              "properties": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "description": "PropertySpec defines the struct for object keys",
                  "properties": {
                    "type": {
                      "description": "ParamType indicates the type of an input parameter;\nUsed to distinguish between a single string and an array of strings.",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "description": "Properties is the JSON Schema properties to support key-value pairs parameter.",
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "description": "Type is the user-specified type of the parameter. The possible types\nare currently \"string\", \"array\" and \"object\", and \"string\" is the default.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "results": {
          "description": "Results are values that this StepAction can output",
          "items": {
            "additionalProperties": false,
            "description": "StepResult used to describe the Results of a Step.",
            "properties": {
              "description": {
                "description": "Description is a human-readable description of the result",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Name the given name",
                "type": "string"
              },
              "properties": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "description": "PropertySpec defines the struct for object keys",
                  "properties": {
                    "type": {
                      "description": "ParamType indicates the type of an input parameter;\nUsed to distinguish between a single string and an array of strings.",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "description": "Properties is the JSON Schema properties to support key-value pairs results.",
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "script": {
          "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.",
          "type": [
            "string",
            "null"
          ]
        },
        "securityContext": {
          "additionalProperties": false,
          "description": "SecurityContext defines the security options the Step should be run with.\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\nThe value set in StepAction will take precedence over the value from Task.",
          "properties": {
            "allowPrivilegeEscalation": {
              "description": "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "appArmorProfile": {
              "additionalProperties": false,
              "description": "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows.",
              "properties": {
                "localhostProfile": {
                  "description": "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\".",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "description": "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n  Localhost - a profile pre-loaded on the node.\n  RuntimeDefault - the container runtime's default profile.\n  Unconfined - no AppArmor enforcement.",
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "capabilities": {
              "additionalProperties": false,
              "description": "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows.",
              "properties": {
                "add": {
                  "description": "Added capabilities",
                  "items": {
                    "description": "Capability represent POSIX capabilities type",
                    "type": "string"
                  },
                  "type": [
                    "array",
                    "null"
                  ],
                  "x-kubernetes-list-type": "atomic"
                },
                "drop": {
                  "description": "Removed capabilities",
                  "items": {
                    "description": "Capability represent POSIX capabilities type",
                    "type": "string"
                  },
                  "type": [
                    "array",
                    "null"
                  ],
                  "x-kubernetes-list-type": "atomic"
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "privileged": {
              "description": "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "procMount": {
              "description": "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows.",
              "type": [
                "string",
                "null"
              ]
            },
            "readOnlyRootFilesystem": {
              "description": "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "runAsGroup": {
              "description": "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext.  If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows.",
              "format": "int64",
              "type": [
                "integer",
                "null"
              ]
            },
            "runAsNonRoot": {
              "description": "Indicates that the container must run as a non-root user.\nIf true, the Kubelet will validate the image at runtime to ensure that it\ndoes not run as UID 0 (root) and fail to start the container if it does.\nIf unset or false, no such validation will be performed.\nMay also be set in PodSecurityContext.  If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "runAsUser": {
              "description": "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext.  If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows.",
              "format": "int64",
              "type": [
                "integer",
                "null"
              ]
            },
            "seLinuxOptions": {
              "additionalProperties": false,
              "description": "The SELinux context to be applied to the container.\nIf unspecified, the container runtime will allocate a random SELinux context for each\ncontainer.  May also be set in PodSecurityContext.  If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows.",
              "properties": {
                "level": {
                  "description": "Level is SELinux level label that applies to the container.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "role": {
                  "description": "Role is a SELinux role label that applies to the container.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "description": "Type is a SELinux type label that applies to the container.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "user": {
                  "description": "User is a SELinux user label that applies to the container.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "seccompProfile": {
              "additionalProperties": false,
              "description": "The seccomp options to use by this container. If seccomp options are\nprovided at both the pod \u0026 container level, the container options\noverride the pod options.\nNote that this field cannot be set when spec.os.name is windows.",
              "properties": {
                "localhostProfile": {
                  "description": "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "type": {
                  "description": "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied.",
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "windowsOptions": {
              "additionalProperties": false,
              "description": "The Windows specific settings applied to all containers.\nIf unspecified, the options from the PodSecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux.",
              "properties": {
                "gmsaCredentialSpec": {
                  "description": "GMSACredentialSpec is where the GMSA admission webhook\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\nGMSA credential spec named by the GMSACredentialSpecName field.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "gmsaCredentialSpecName": {
                  "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "hostProcess": {
                  "description": "HostProcess determines if a container should be run as a 'Host Process' container.\nAll of a Pod's containers must have the same effective HostProcess value\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\nIn addition, if HostProcess is true then HostNetwork must also be set to true.",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "runAsUserName": {
                  "description": "The UserName in Windows to run the entrypoint of the container process.\nDefaults to the user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "volumeMounts": {
          "description": "Volumes to mount into the Step's filesystem.\nCannot be updated.",
          "items": {
            "additionalProperties": false,
            "description": "VolumeMount describes a mounting of a Volume within a container.",
            "properties": {
              "mountPath": {
                "description": "Path within the container at which the volume should be mounted.  Must\nnot contain ':'.",
                "type": "string"
              },
              "mountPropagation": {
                "description": "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "This must match the Name of a Volume.",
                "type": "string"
              },
              "readOnly": {
                "description": "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "recursiveReadOnly": {
                "description": "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only.  If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime.  If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "subPath": {
                "description": "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "subPathExpr": {
                "description": "Expanded path within the volume from which the container's volume should be mounted.\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\nDefaults to \"\" (volume's root).\nSubPathExpr and SubPath are mutually exclusive.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "mountPath",
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "workingDir": {
          "description": "Step's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}