# # This file is distributed under the MIT License. See LICENSE.md for details. # $schema: http://json-schema.org/draft-07/schema# title: Pipeline Schema $defs: pipeline: type: object required: - containers - branches additionalProperties: false properties: artifact-categories: type: array items: type: object required: - name - show-by-default properties: name: type: string description: Name of the artifact category show-by-default: type: boolean description: Whether to show the artifact by default containers: type: array uniqueItems: true items: $ref: "#/$defs/container_decl" analysis-lists: $ref: "#/$defs/analysis_lists" analyses: type: array items: type: string branches: type: object patternProperties: ^[a-zA-Z0-9_]+$: type: object required: - tasks additionalProperties: false properties: from: type: string description: The current branch will start from the end of the given branch. example: root tasks: type: array items: anyOf: - $ref: "#/$defs/pipe" - $ref: "#/$defs/savepoint" description: A list of tasks in the branch, each task is a pipe. minItems: 1 analysis_lists: type: array additionalProperties: false items: $ref: "#/$defs/analysis_list" analysis_list: type: object required: - name - analyses additionalProperties: false properties: name: type: string description: The name of the analyses list. example: all_analyses analyses: type: array items: type: string description: A list of analysis names. minItems: 1 description: type: string description: A description of the analyses list that will appear in the CLI help. container_decl: type: object required: - name - type additionalProperties: false properties: name: type: string description: The name of the container. example: my_container type: type: string description: The type of the container. example: llvm_module args: type: array items: type: string description: A list of container names that cannot be empty. example: - container1 - container2 minItems: 1 pipe: type: object additionalProperties: false required: - pipe - arguments properties: pipe: type: string description: The name of the pipe. example: my_pipe configuration: type: [string, object] description: | The static configuration for the pipe, if any. Can be either a string or an object. If an object the content will be re-serialized in YAML and passed to the pipe constructor as a string. arguments: $ref: "#/$defs/args" description: The names of the containers to pass to the pipe. artifacts: type: array items: $ref: "#/$defs/artifact" minItems: 1 analyses: type: array items: $ref: "#/$defs/analysis" minItems: 1 savepoint: type: object required: - savepoint - containers additionalProperties: false properties: savepoint: type: string description: The name of the savepoint. containers: $ref: "#/$defs/args" description: The names of the containers the savepoint will cache. artifacts: type: array items: $ref: "#/$defs/artifact" minItems: 1 analyses: type: array items: $ref: "#/$defs/analysis" minItems: 1 analysis: type: object required: - analysis - containers additionalProperties: false properties: analysis: type: string description: The name of the analysis to run. containers: $ref: "#/$defs/args" description: The names of the containers the analysis will need. artifact: type: object required: - name - container additionalProperties: false properties: name: type: string description: The name of the artifact. example: my_artifact container: type: string description: The container that will produce the artifact. example: my_container category: type: string description: > The category of the artifact, must be one of the ones specified in 'artifact-categories'. Specifying categories makes this field compulsory. description: type: string description: The description of the artifact that will appear in the CLI help. filename: type: string description: The filename to use when representing this artifact defined_locations: type: array description: PTML locations that are present in this artifact items: type: string preferred_artifacts: type: array description: > other artifacts where it's preferred to look for definitions of locations defined in this one items: type: string