diff --git a/crds/workspace.devfile.io_devworkspaces.v1beta1.yaml b/crds/workspace.devfile.io_devworkspaces.v1beta1.yaml index 9fbbc901e..719c7cdbd 100644 --- a/crds/workspace.devfile.io_devworkspaces.v1beta1.yaml +++ b/crds/workspace.devfile.io_devworkspaces.v1beta1.yaml @@ -6801,6 +6801,98 @@ spec: - name type: object type: array + dependentProjects: + description: Additional projects related to the main project in + the devfile, contianing names and sources locations + items: + oneOf: + - required: + - git + - required: + - zip + - required: + - custom + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to + which this project should be cloned into. This is a unix-style + relative path (i.e. uses forward slashes). The path is + invalid if it is absolute or tries to escape the project + root through the usage of '..'. If not specified, defaults + to the project name. + type: string + custom: + description: Project's Custom source + properties: + embeddedResource: + type: object + x-kubernetes-embedded-resource: true + x-kubernetes-preserve-unknown-fields: true + projectSourceClass: + type: string + required: + - embeddedResource + - projectSourceClass + type: object + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be + checked out. Required if there are more than one remote + configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should + be branch name, tag or commit id. Default branch + is used if missing or specified revision is not + found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one + remote configured while StarterProjects & Image Component's + Git source can only have at most one remote configured. + type: object + required: + - remotes + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + - Custom + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array events: description: Bindings of commands to events. Each command is referred-to by its name. @@ -8600,6 +8692,83 @@ spec: - name type: object type: array + dependentProjects: + description: Overrides of dependentProjects encapsulated in + a parent devfile. Overriding is done according to K8S strategic + merge patch standard rules. + items: + oneOf: + - required: + - git + - required: + - zip + properties: + attributes: + description: Map of implementation-dependant free-form + YAML attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects + to which this project should be cloned into. This + is a unix-style relative path (i.e. uses forward slashes). + The path is invalid if it is absolute or tries to + escape the project root through the usage of '..'. + If not specified, defaults to the project name. + type: string + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should + be checked out. Required if there are more than + one remote configured + properties: + remote: + description: The remote name should be used + as init. Required if there are more than one + remote configured + type: string + revision: + description: The revision to checkout from. + Should be branch name, tag or commit id. Default + branch is used if missing or specified revision + is not found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least + one remote configured while StarterProjects & + Image Component's Git source can only have at + most one remote configured. + type: object + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array id: description: Id in a registry that contains a Devfile yaml file diff --git a/crds/workspace.devfile.io_devworkspaces.yaml b/crds/workspace.devfile.io_devworkspaces.yaml index 936d69269..e1a31be5a 100644 --- a/crds/workspace.devfile.io_devworkspaces.yaml +++ b/crds/workspace.devfile.io_devworkspaces.yaml @@ -6806,6 +6806,98 @@ spec: - name type: object type: array + dependentProjects: + description: Additional projects related to the main project in + the devfile, contianing names and sources locations + items: + oneOf: + - required: + - git + - required: + - zip + - required: + - custom + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to + which this project should be cloned into. This is a unix-style + relative path (i.e. uses forward slashes). The path is + invalid if it is absolute or tries to escape the project + root through the usage of '..'. If not specified, defaults + to the project name. + type: string + custom: + description: Project's Custom source + properties: + embeddedResource: + type: object + x-kubernetes-embedded-resource: true + x-kubernetes-preserve-unknown-fields: true + projectSourceClass: + type: string + required: + - embeddedResource + - projectSourceClass + type: object + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be + checked out. Required if there are more than one remote + configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should + be branch name, tag or commit id. Default branch + is used if missing or specified revision is not + found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one + remote configured while StarterProjects & Image Component's + Git source can only have at most one remote configured. + type: object + required: + - remotes + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + - Custom + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array events: description: Bindings of commands to events. Each command is referred-to by its name. @@ -8605,6 +8697,83 @@ spec: - name type: object type: array + dependentProjects: + description: Overrides of dependentProjects encapsulated in + a parent devfile. Overriding is done according to K8S strategic + merge patch standard rules. + items: + oneOf: + - required: + - git + - required: + - zip + properties: + attributes: + description: Map of implementation-dependant free-form + YAML attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects + to which this project should be cloned into. This + is a unix-style relative path (i.e. uses forward slashes). + The path is invalid if it is absolute or tries to + escape the project root through the usage of '..'. + If not specified, defaults to the project name. + type: string + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should + be checked out. Required if there are more than + one remote configured + properties: + remote: + description: The remote name should be used + as init. Required if there are more than one + remote configured + type: string + revision: + description: The revision to checkout from. + Should be branch name, tag or commit id. Default + branch is used if missing or specified revision + is not found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least + one remote configured while StarterProjects & + Image Component's Git source can only have at + most one remote configured. + type: object + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array id: description: Id in a registry that contains a Devfile yaml file diff --git a/crds/workspace.devfile.io_devworkspacetemplates.v1beta1.yaml b/crds/workspace.devfile.io_devworkspacetemplates.v1beta1.yaml index 5d6d3e914..d7d64ac3b 100644 --- a/crds/workspace.devfile.io_devworkspacetemplates.v1beta1.yaml +++ b/crds/workspace.devfile.io_devworkspacetemplates.v1beta1.yaml @@ -5654,6 +5654,95 @@ spec: - name type: object type: array + dependentProjects: + description: Additional projects related to the main project in the + devfile, contianing names and sources locations + items: + oneOf: + - required: + - git + - required: + - zip + - required: + - custom + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to which + this project should be cloned into. This is a unix-style relative + path (i.e. uses forward slashes). The path is invalid if it + is absolute or tries to escape the project root through the + usage of '..'. If not specified, defaults to the project name. + type: string + custom: + description: Project's Custom source + properties: + embeddedResource: + type: object + x-kubernetes-embedded-resource: true + x-kubernetes-preserve-unknown-fields: true + projectSourceClass: + type: string + required: + - embeddedResource + - projectSourceClass + type: object + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be checked + out. Required if there are more than one remote configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should be + branch name, tag or commit id. Default branch is used + if missing or specified revision is not found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one remote + configured while StarterProjects & Image Component's Git + source can only have at most one remote configured. + type: object + required: + - remotes + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + - Custom + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. Should + be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array events: description: Bindings of commands to events. Each command is referred-to by its name. @@ -7388,6 +7477,81 @@ spec: - name type: object type: array + dependentProjects: + description: Overrides of dependentProjects encapsulated in a + parent devfile. Overriding is done according to K8S strategic + merge patch standard rules. + items: + oneOf: + - required: + - git + - required: + - zip + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to + which this project should be cloned into. This is a unix-style + relative path (i.e. uses forward slashes). The path is + invalid if it is absolute or tries to escape the project + root through the usage of '..'. If not specified, defaults + to the project name. + type: string + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be + checked out. Required if there are more than one remote + configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should + be branch name, tag or commit id. Default branch + is used if missing or specified revision is not + found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one + remote configured while StarterProjects & Image Component's + Git source can only have at most one remote configured. + type: object + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array id: description: Id in a registry that contains a Devfile yaml file type: string diff --git a/crds/workspace.devfile.io_devworkspacetemplates.yaml b/crds/workspace.devfile.io_devworkspacetemplates.yaml index 9512d24ab..3e15e287c 100644 --- a/crds/workspace.devfile.io_devworkspacetemplates.yaml +++ b/crds/workspace.devfile.io_devworkspacetemplates.yaml @@ -5659,6 +5659,95 @@ spec: - name type: object type: array + dependentProjects: + description: Additional projects related to the main project in the + devfile, contianing names and sources locations + items: + oneOf: + - required: + - git + - required: + - zip + - required: + - custom + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to which + this project should be cloned into. This is a unix-style relative + path (i.e. uses forward slashes). The path is invalid if it + is absolute or tries to escape the project root through the + usage of '..'. If not specified, defaults to the project name. + type: string + custom: + description: Project's Custom source + properties: + embeddedResource: + type: object + x-kubernetes-embedded-resource: true + x-kubernetes-preserve-unknown-fields: true + projectSourceClass: + type: string + required: + - embeddedResource + - projectSourceClass + type: object + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be checked + out. Required if there are more than one remote configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should be + branch name, tag or commit id. Default branch is used + if missing or specified revision is not found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one remote + configured while StarterProjects & Image Component's Git + source can only have at most one remote configured. + type: object + required: + - remotes + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + - Custom + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. Should + be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array events: description: Bindings of commands to events. Each command is referred-to by its name. @@ -7393,6 +7482,81 @@ spec: - name type: object type: array + dependentProjects: + description: Overrides of dependentProjects encapsulated in a + parent devfile. Overriding is done according to K8S strategic + merge patch standard rules. + items: + oneOf: + - required: + - git + - required: + - zip + properties: + attributes: + description: Map of implementation-dependant free-form YAML + attributes. + type: object + x-kubernetes-preserve-unknown-fields: true + clonePath: + description: Path relative to the root of the projects to + which this project should be cloned into. This is a unix-style + relative path (i.e. uses forward slashes). The path is + invalid if it is absolute or tries to escape the project + root through the usage of '..'. If not specified, defaults + to the project name. + type: string + git: + description: Project's Git source + properties: + checkoutFrom: + description: Defines from what the project should be + checked out. Required if there are more than one remote + configured + properties: + remote: + description: The remote name should be used as init. + Required if there are more than one remote configured + type: string + revision: + description: The revision to checkout from. Should + be branch name, tag or commit id. Default branch + is used if missing or specified revision is not + found. + type: string + type: object + remotes: + additionalProperties: + type: string + description: The remotes map which should be initialized + in the git project. Projects must have at least one + remote configured while StarterProjects & Image Component's + Git source can only have at most one remote configured. + type: object + type: object + name: + description: Project name + maxLength: 63 + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ + type: string + sourceType: + description: Type of project source + enum: + - Git + - Zip + type: string + zip: + description: Project's Zip source + properties: + location: + description: Zip project's source location address. + Should be file path of the archive, e.g. file://$FILE_PATH + type: string + type: object + required: + - name + type: object + type: array id: description: Id in a registry that contains a Devfile yaml file type: string diff --git a/pkg/apis/workspaces/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/workspaces/v1alpha2/zz_generated.deepcopy.go index 60ed58638..936bb4bb2 100644 --- a/pkg/apis/workspaces/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/workspaces/v1alpha2/zz_generated.deepcopy.go @@ -1818,6 +1818,13 @@ func (in *DevWorkspaceTemplateSpecContent) DeepCopyInto(out *DevWorkspaceTemplat (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.DependentProjects != nil { + in, out := &in.DependentProjects, &out.DependentProjects + *out = make([]Project, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Commands != nil { in, out := &in.Commands, &out.Commands *out = make([]Command, len(*in)) @@ -3543,6 +3550,13 @@ func (in *ParentOverrides) DeepCopyInto(out *ParentOverrides) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.DependentProjects != nil { + in, out := &in.DependentProjects, &out.DependentProjects + *out = make([]ProjectParentOverride, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Commands != nil { in, out := &in.Commands, &out.Commands *out = make([]CommandParentOverride, len(*in)) diff --git a/pkg/apis/workspaces/v1alpha2/zz_generated.parent_overrides.go b/pkg/apis/workspaces/v1alpha2/zz_generated.parent_overrides.go index 85a966e88..05278a852 100644 --- a/pkg/apis/workspaces/v1alpha2/zz_generated.parent_overrides.go +++ b/pkg/apis/workspaces/v1alpha2/zz_generated.parent_overrides.go @@ -47,6 +47,14 @@ type ParentOverrides struct { // +devfile:toplevellist StarterProjects []StarterProjectParentOverride `json:"starterProjects,omitempty" patchStrategy:"merge" patchMergeKey:"name"` + // Overrides of dependentProjects encapsulated in a parent devfile. + // Overriding is done according to K8S strategic merge patch standard rules. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + // +devfile:toplevellist + DependentProjects []ProjectParentOverride `json:"dependentProjects,omitempty" patchStrategy:"merge" patchMergeKey:"name"` + // Overrides of commands encapsulated in a parent devfile or a plugin. // Overriding is done according to K8S strategic merge patch standard rules. // +optional diff --git a/pkg/apis/workspaces/v1alpha2/zz_generated.toplevellistcontainer_definitions.go b/pkg/apis/workspaces/v1alpha2/zz_generated.toplevellistcontainer_definitions.go index 45be709ff..27250b5bf 100644 --- a/pkg/apis/workspaces/v1alpha2/zz_generated.toplevellistcontainer_definitions.go +++ b/pkg/apis/workspaces/v1alpha2/zz_generated.toplevellistcontainer_definitions.go @@ -2,19 +2,21 @@ package v1alpha2 func (container DevWorkspaceTemplateSpecContent) GetToplevelLists() TopLevelLists { return TopLevelLists{ - "Components": extractKeys(container.Components), - "Projects": extractKeys(container.Projects), - "StarterProjects": extractKeys(container.StarterProjects), - "Commands": extractKeys(container.Commands), + "Components": extractKeys(container.Components), + "Projects": extractKeys(container.Projects), + "StarterProjects": extractKeys(container.StarterProjects), + "DependentProjects": extractKeys(container.DependentProjects), + "Commands": extractKeys(container.Commands), } } func (container ParentOverrides) GetToplevelLists() TopLevelLists { return TopLevelLists{ - "Components": extractKeys(container.Components), - "Projects": extractKeys(container.Projects), - "StarterProjects": extractKeys(container.StarterProjects), - "Commands": extractKeys(container.Commands), + "Components": extractKeys(container.Components), + "Projects": extractKeys(container.Projects), + "StarterProjects": extractKeys(container.StarterProjects), + "DependentProjects": extractKeys(container.DependentProjects), + "Commands": extractKeys(container.Commands), } } diff --git a/schemas/latest/dev-workspace-template-spec.json b/schemas/latest/dev-workspace-template-spec.json index 6c558e8b7..f96cb30f0 100644 --- a/schemas/latest/dev-workspace-template-spec.json +++ b/schemas/latest/dev-workspace-template-spec.json @@ -1652,6 +1652,112 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -3240,6 +3346,86 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string" diff --git a/schemas/latest/dev-workspace-template.json b/schemas/latest/dev-workspace-template.json index 93160d19c..fb4885471 100644 --- a/schemas/latest/dev-workspace-template.json +++ b/schemas/latest/dev-workspace-template.json @@ -1818,6 +1818,112 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -3406,6 +3512,86 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string" diff --git a/schemas/latest/dev-workspace.json b/schemas/latest/dev-workspace.json index 92d483970..d50309c32 100644 --- a/schemas/latest/dev-workspace.json +++ b/schemas/latest/dev-workspace.json @@ -2638,6 +2638,112 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -4226,6 +4332,86 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string" diff --git a/schemas/latest/devfile.json b/schemas/latest/devfile.json index 5808b189e..1270819bc 100644 --- a/schemas/latest/devfile.json +++ b/schemas/latest/devfile.json @@ -780,6 +780,89 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -1654,6 +1737,86 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string" diff --git a/schemas/latest/ide-targeted/dev-workspace-template-spec.json b/schemas/latest/ide-targeted/dev-workspace-template-spec.json index 995042679..810cc3854 100644 --- a/schemas/latest/ide-targeted/dev-workspace-template-spec.json +++ b/schemas/latest/ide-targeted/dev-workspace-template-spec.json @@ -1846,6 +1846,124 @@ }, "markdownDescription": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components" }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Custom source" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Additional projects related to the main project in the devfile, contianing names and sources locations" + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -3630,6 +3748,97 @@ }, "markdownDescription": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules." }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules." + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string", diff --git a/schemas/latest/ide-targeted/dev-workspace-template.json b/schemas/latest/ide-targeted/dev-workspace-template.json index 1005eebb1..aa04f86a9 100644 --- a/schemas/latest/ide-targeted/dev-workspace-template.json +++ b/schemas/latest/ide-targeted/dev-workspace-template.json @@ -2045,6 +2045,124 @@ }, "markdownDescription": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components" }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Custom source" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Additional projects related to the main project in the devfile, contianing names and sources locations" + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -3829,6 +3947,97 @@ }, "markdownDescription": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules." }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules." + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string", diff --git a/schemas/latest/ide-targeted/dev-workspace.json b/schemas/latest/ide-targeted/dev-workspace.json index 7dd5c2ca3..b5204383c 100644 --- a/schemas/latest/ide-targeted/dev-workspace.json +++ b/schemas/latest/ide-targeted/dev-workspace.json @@ -2964,6 +2964,124 @@ }, "markdownDescription": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components" }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + }, + { + "required": [ + "custom" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "custom": { + "description": "Project's Custom source", + "type": "object", + "required": [ + "embeddedResource", + "projectSourceClass" + ], + "properties": { + "embeddedResource": { + "type": "object", + "additionalProperties": true + }, + "projectSourceClass": { + "type": "string" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Custom source" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Additional projects related to the main project in the devfile, contianing names and sources locations" + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -4748,6 +4866,97 @@ }, "markdownDescription": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules." }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules." + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string", diff --git a/schemas/latest/ide-targeted/devfile.json b/schemas/latest/ide-targeted/devfile.json index 6ebcfc8bf..2968de21b 100644 --- a/schemas/latest/ide-targeted/devfile.json +++ b/schemas/latest/ide-targeted/devfile.json @@ -866,6 +866,100 @@ }, "markdownDescription": "List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components" }, + "dependentProjects": { + "description": "Additional projects related to the main project in the devfile, contianing names and sources locations", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "required": [ + "remotes" + ], + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Additional projects related to the main project in the devfile, contianing names and sources locations" + }, "events": { "description": "Bindings of commands to events. Each command is referred-to by its name.", "type": "object", @@ -1854,6 +1948,97 @@ }, "markdownDescription": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules." }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules." + }, "id": { "description": "Id in a registry that contains a Devfile yaml file", "type": "string", diff --git a/schemas/latest/ide-targeted/parent-overrides.json b/schemas/latest/ide-targeted/parent-overrides.json index 8c4348de9..536a1a7ae 100644 --- a/schemas/latest/ide-targeted/parent-overrides.json +++ b/schemas/latest/ide-targeted/parent-overrides.json @@ -1726,6 +1726,97 @@ }, "markdownDescription": "Overrides of components encapsulated in a parent devfile or a plugin. Overriding is done according to K8S strategic merge patch standard rules." }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true, + "markdownDescription": "Map of implementation-dependant free-form YAML attributes." + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string", + "markdownDescription": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name." + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string", + "markdownDescription": "The remote name should be used as init. Required if there are more than one remote configured" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string", + "markdownDescription": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found." + } + }, + "additionalProperties": false, + "markdownDescription": "Defines from what the project should be checked out. Required if there are more than one remote configured" + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "markdownDescription": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured." + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Git source" + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$", + "markdownDescription": "Project name" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string", + "markdownDescription": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH" + } + }, + "additionalProperties": false, + "markdownDescription": "Project's Zip source" + } + }, + "additionalProperties": false + }, + "markdownDescription": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules." + }, "projects": { "description": "Overrides of projects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", "type": "array", diff --git a/schemas/latest/parent-overrides.json b/schemas/latest/parent-overrides.json index f0b9cdf9c..0ee4cfe79 100644 --- a/schemas/latest/parent-overrides.json +++ b/schemas/latest/parent-overrides.json @@ -1534,6 +1534,86 @@ "additionalProperties": false } }, + "dependentProjects": { + "description": "Overrides of dependentProjects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "git" + ] + }, + { + "required": [ + "zip" + ] + } + ], + "properties": { + "attributes": { + "description": "Map of implementation-dependant free-form YAML attributes.", + "type": "object", + "additionalProperties": true + }, + "clonePath": { + "description": "Path relative to the root of the projects to which this project should be cloned into. This is a unix-style relative path (i.e. uses forward slashes). The path is invalid if it is absolute or tries to escape the project root through the usage of '..'. If not specified, defaults to the project name.", + "type": "string" + }, + "git": { + "description": "Project's Git source", + "type": "object", + "properties": { + "checkoutFrom": { + "description": "Defines from what the project should be checked out. Required if there are more than one remote configured", + "type": "object", + "properties": { + "remote": { + "description": "The remote name should be used as init. Required if there are more than one remote configured", + "type": "string" + }, + "revision": { + "description": "The revision to checkout from. Should be branch name, tag or commit id. Default branch is used if missing or specified revision is not found.", + "type": "string" + } + }, + "additionalProperties": false + }, + "remotes": { + "description": "The remotes map which should be initialized in the git project. Projects must have at least one remote configured while StarterProjects \u0026 Image Component's Git source can only have at most one remote configured.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "name": { + "description": "Project name", + "type": "string", + "maxLength": 63, + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + }, + "zip": { + "description": "Project's Zip source", + "type": "object", + "properties": { + "location": { + "description": "Zip project's source location address. Should be file path of the archive, e.g. file://$FILE_PATH", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, "projects": { "description": "Overrides of projects encapsulated in a parent devfile. Overriding is done according to K8S strategic merge patch standard rules.", "type": "array",