mirror of
https://github.com/chenasraf/schemastore.git
synced 2026-05-17 17:58:02 +00:00
BX CI: add new schema to catalog (#2334)
* add BX CI schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -530,6 +530,15 @@
|
||||
"fileMatch": ["block-metadata.json"],
|
||||
"url": "https://blockprotocol.org/schemas/block-metadata.json"
|
||||
},
|
||||
{
|
||||
"name": "BX CI",
|
||||
"description": "CI configuration for Amdocs Bill Experience projects",
|
||||
"url": "https://json.schemastore.org/bxci.schema-1.0.json",
|
||||
"fileMatch": ["**/bxci.yaml", "**/bxci.yml"],
|
||||
"versions": {
|
||||
"1.0": "https://json.schemastore.org/bxci.schema-1.0.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CMake Presets",
|
||||
"description": "Schema for CMake Presets",
|
||||
|
||||
69
src/negative_test/bxci.schema-1.0/bxci.yml
Normal file
69
src/negative_test/bxci.schema-1.0/bxci.yml
Normal file
@@ -0,0 +1,69 @@
|
||||
project:
|
||||
name: some-project
|
||||
type: npm
|
||||
|
||||
config:
|
||||
jenkins_runtime:
|
||||
docker:
|
||||
image: remote-host.com/image-name:tag
|
||||
dockerfile: .ci/Dockerfile
|
||||
|
||||
branch:
|
||||
disable_validation: false
|
||||
branch_pattern: "^master$|^release/.+$"
|
||||
|
||||
build:
|
||||
clean_workspace_after_run: false
|
||||
|
||||
services:
|
||||
- Elasticsearch
|
||||
- Mysql
|
||||
- Mssql
|
||||
|
||||
environment:
|
||||
my_env_var: value
|
||||
ANOTHER_VAR: value
|
||||
invalid-name: value
|
||||
__CFBundleIdentifier: some value
|
||||
|
||||
jenkinsEnvironment:
|
||||
- SOME_VALID_VALUE
|
||||
- some value (invalid)
|
||||
|
||||
archive:
|
||||
- some-file.txt
|
||||
- target/*.jar
|
||||
|
||||
stages:
|
||||
my stage:
|
||||
steps:
|
||||
- echo first
|
||||
another:
|
||||
steps:
|
||||
- npm run lint
|
||||
Another step:
|
||||
when:
|
||||
branch: "^master$"
|
||||
steps:
|
||||
- echo last
|
||||
|
||||
output:
|
||||
docker:
|
||||
dockerfile: path/to/Dockerfile
|
||||
image_name: my-image
|
||||
publish:
|
||||
branch: "^master$"
|
||||
credentials: SECRET
|
||||
|
||||
helm:
|
||||
path: k8s/project-name
|
||||
updates:
|
||||
- file: Chart.yaml
|
||||
properties:
|
||||
- key: chartVersion
|
||||
- file: Another.yaml
|
||||
properties:
|
||||
- key: something
|
||||
publish:
|
||||
branch: "^master$|^release/.+$"
|
||||
credentials: SECRET
|
||||
@@ -27,6 +27,7 @@
|
||||
"bowerrc.json",
|
||||
"bukkit-plugin.json",
|
||||
"bundleconfig.json",
|
||||
"bxci.schema-1.0.json",
|
||||
"catalog-info.json",
|
||||
"chrome-manifest.json",
|
||||
"chutzpah.json",
|
||||
|
||||
403
src/schemas/json/bxci.schema-1.0.json
Normal file
403
src/schemas/json/bxci.schema-1.0.json
Normal file
@@ -0,0 +1,403 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"definitions": {
|
||||
"branchPattern": {
|
||||
"description": "Regular expression for validating branch names",
|
||||
"type": "string"
|
||||
},
|
||||
"timeout": {
|
||||
"description": "Timeout in seconds",
|
||||
"type": "integer"
|
||||
},
|
||||
"credentials": {
|
||||
"description": "Jenkins credentials ID",
|
||||
"type": "string"
|
||||
},
|
||||
"checkmarx": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"groupId": {
|
||||
"type": "string",
|
||||
"default": "55"
|
||||
},
|
||||
"preset": {
|
||||
"type": "string",
|
||||
"default": "36"
|
||||
},
|
||||
"projectName": {
|
||||
"type": "string",
|
||||
"default": "BSS_BB_Hybrid"
|
||||
},
|
||||
"branch_pattern": {
|
||||
"$ref": "#/definitions/branchPattern",
|
||||
"default": "^master$|.*[cC]heck[mM]arx.*"
|
||||
},
|
||||
"useOwnServerCredentials": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"serverUrl": {
|
||||
"type": "string",
|
||||
"default": "http://cxpbgmgmtserver/"
|
||||
},
|
||||
"credentialsId": {
|
||||
"type": "string",
|
||||
"default": "BB-Checkmarx"
|
||||
},
|
||||
"generatePdfReport": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"sourceEncoding": {
|
||||
"type": "string",
|
||||
"default": "5"
|
||||
},
|
||||
"isProxy": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"waitForResultsEnabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"sonar": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"breaks_build": {
|
||||
"type": "boolean",
|
||||
"description": "Waits for analysis result and breaks the build when the project fails for some quality gates.",
|
||||
"default": false
|
||||
},
|
||||
"timeout": {
|
||||
"$ref": "#/definitions/timeout",
|
||||
"description": "Seconds to wait for the result of the quality gate. Only applies when breaks_build is set to true",
|
||||
"default": 120
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"stage": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"steps": {
|
||||
"type": "array",
|
||||
"description": "List of steps to run"
|
||||
},
|
||||
"when": {
|
||||
"type": "object",
|
||||
"description": "Condition that should be met to run this step",
|
||||
"properties": {
|
||||
"branch": {
|
||||
"$ref": "#/definitions/branchPattern",
|
||||
"description": "Specifies in which branches this stage will be executed"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["steps"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"dockerfile": {
|
||||
"description": "Dockerfile path",
|
||||
"type": "string"
|
||||
},
|
||||
"outputDocker": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"dockerfile": {
|
||||
"$ref": "#/definitions/dockerfile",
|
||||
"description": "Path to Dockerfile used to generate the docker image"
|
||||
},
|
||||
"image_name": {
|
||||
"type": "string",
|
||||
"description": "Image name for the generated docker image. Cannot include tag. Tag will be automatically generated based on project version."
|
||||
},
|
||||
"publish": {
|
||||
"$ref": "#/definitions/outputDockerPublish",
|
||||
"description": "Docker publishing information. If not present, the image won't be published"
|
||||
}
|
||||
},
|
||||
"required": ["dockerfile", "image_name"]
|
||||
},
|
||||
"outputDockerPublish": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"branch": {
|
||||
"$ref": "#/definitions/branchPattern",
|
||||
"description": "Indicates on what branches publishing is enabled. Typically, master and release branches"
|
||||
},
|
||||
"registry": {
|
||||
"type": "string",
|
||||
"description": "Docker registry. Must include protocol (http|https) and port",
|
||||
"format": "uri"
|
||||
},
|
||||
"credentials": {
|
||||
"$ref": "#/definitions/credentials",
|
||||
"description": "Jenkins credentials ID for publishing into the specified Docker registry"
|
||||
}
|
||||
},
|
||||
"required": ["branch", "registry", "credentials"]
|
||||
},
|
||||
"outputHelm": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"description": "Path to the folder with all required chart config files"
|
||||
},
|
||||
"updates": {
|
||||
"type": "array",
|
||||
"description": "Updates that must be done before packing Helm chart. It's a list of objects that specifies which updates must be done on which files",
|
||||
"items": {
|
||||
"$ref": "#/definitions/outputHelmUpdates"
|
||||
}
|
||||
},
|
||||
"publish": {
|
||||
"$ref": "#/definitions/outputHelmPublish"
|
||||
}
|
||||
},
|
||||
"required": ["path", "publish", "updates"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputHelmUpdates": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"file": {
|
||||
"type": "string",
|
||||
"description": "Name (including path from Helm object path) of the file to be updated. Only supports yaml files"
|
||||
},
|
||||
"properties": {
|
||||
"type": "array",
|
||||
"description": "A list of properties to update. It can be updated with a fixed value or environment variable",
|
||||
"items": {
|
||||
"$ref": "#/definitions/outputHelmUpdatesProperties"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["file", "properties"]
|
||||
},
|
||||
"outputHelmUpdatesProperties": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string",
|
||||
"description": "Yaml property (full path) to be updated"
|
||||
},
|
||||
"env": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
|
||||
"description": "Environment variable whose value will be used to update the property"
|
||||
},
|
||||
"value": {
|
||||
"type": "string",
|
||||
"description": "Value to update the given property"
|
||||
}
|
||||
},
|
||||
"required": ["key"],
|
||||
"oneOf": [
|
||||
{
|
||||
"required": ["env"],
|
||||
"not": {
|
||||
"required": ["value"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"required": ["value"],
|
||||
"not": {
|
||||
"required": ["env"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"outputHelmPublish": {
|
||||
"type": "object",
|
||||
"description": "Allows to publish the Helm chart",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"branch": {
|
||||
"$ref": "#/definitions/branchPattern",
|
||||
"description": "Indicates on which branches publishing is enabled. Typically, master and release branches"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Helm chart repository. Must include protocol, host, port (if needed) and path"
|
||||
},
|
||||
"credentials": {
|
||||
"$ref": "#/definitions/credentials",
|
||||
"description": "Jenkins credentials Id for this repository for uploading the chart"
|
||||
}
|
||||
},
|
||||
"required": ["branch", "credentials", "repository"]
|
||||
}
|
||||
},
|
||||
"description": "CI configuration for Amdocs Bill Experience projects",
|
||||
"properties": {
|
||||
"project": {
|
||||
"description": "Project properties",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "Project's name (used by Jenkins, Docker and Sonar)",
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"description": "Project type",
|
||||
"enum": ["npm", "maven", "mvn"],
|
||||
"default": "mvn"
|
||||
},
|
||||
"settings": {
|
||||
"description": "ID of a managed maven or npm Jenkins file",
|
||||
"type": "string",
|
||||
"examples": ["bx-maven-settings", "bx-npm-settings"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"config": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jenkins_runtime": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"docker": {
|
||||
"type": "object",
|
||||
"description": "Specifies how to build the Docker container (from an existing image or from a local Dockerfile)",
|
||||
"properties": {
|
||||
"image": {
|
||||
"description": "Prebuilt Docker image (has precedence over dockerfile)",
|
||||
"type": "string",
|
||||
"examples": ["remote-host.com/image-name:tag"]
|
||||
},
|
||||
"dockerfile": {
|
||||
"description": "Path to a local Dockerfile",
|
||||
"$ref": "#/definitions/dockerfile",
|
||||
"examples": [".ci/Dockerfile"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": ["docker"]
|
||||
},
|
||||
"branch": {
|
||||
"type": "object",
|
||||
"description": "Describes on which branch names a build will be run",
|
||||
"properties": {
|
||||
"branch_pattern": {
|
||||
"$ref": "#/definitions/branchPattern"
|
||||
},
|
||||
"disable_validation": {
|
||||
"description": "Disables branch name validation",
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"build": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"clean_workspace_after_run": {
|
||||
"type": "boolean",
|
||||
"description": "Whether Jenkins workspace should be cleaned after the build",
|
||||
"default": true
|
||||
},
|
||||
"checkmarx": {
|
||||
"$ref": "#/definitions/checkmarx",
|
||||
"description": "Adds a Static Analysis stage for CheckMarx. See https://www.jenkins.io/doc/pipeline/steps/checkmarx/ for all the configuration options."
|
||||
},
|
||||
"static_analysis": {
|
||||
"$ref": "#/definitions/sonar",
|
||||
"description": "Adds a Static Analysis stage for Sonar."
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"required": ["jenkins_runtime"]
|
||||
},
|
||||
"services": {
|
||||
"type": "array",
|
||||
"description": "Additional services required by the project or application.",
|
||||
"items": {
|
||||
"enum": [
|
||||
"Postgres",
|
||||
"Postgis",
|
||||
"Redis",
|
||||
"Mssql",
|
||||
"Mysql",
|
||||
"Mongodb",
|
||||
"Elasticsearch"
|
||||
]
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"environment": {
|
||||
"type": "object",
|
||||
"description": "Custom environment variables to be added to the pipeline",
|
||||
"propertyNames": {
|
||||
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
|
||||
}
|
||||
},
|
||||
"jenkinsEnvironment": {
|
||||
"type": "array",
|
||||
"description": "Jenkins environment variables that are passed to the Docker container",
|
||||
"uniqueItems": true,
|
||||
"items": {
|
||||
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"stages": {
|
||||
"type": "object",
|
||||
"description": "Defines the stages and steps required to build the project.",
|
||||
"patternProperties": {
|
||||
"^\\w+( \\w+)*$": {
|
||||
"$ref": "#/definitions/stage",
|
||||
"description": "Stage name in the Jenkins pipeline"
|
||||
}
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"type": "object",
|
||||
"description": "Describes artifacts generated after all the stages have been run",
|
||||
"properties": {
|
||||
"docker": {
|
||||
"$ref": "#/definitions/outputDocker"
|
||||
},
|
||||
"helm": {
|
||||
"$ref": "#/definitions/outputHelm"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"archive": {
|
||||
"type": "array",
|
||||
"description": "List of artifacts to archive (wildcards allowed). Check out https://www.jenkins.io/doc/pipeline/steps/core/#archiveartifacts-archive-the-artifacts",
|
||||
"examples": ["target/*.jar", "**/*.jar", "target/out.txt"]
|
||||
},
|
||||
"timeout": {
|
||||
"$ref": "#/definitions/timeout",
|
||||
"description": "Build timeout in seconds",
|
||||
"default": 600
|
||||
}
|
||||
},
|
||||
"required": ["project", "config", "stages"],
|
||||
"type": "object"
|
||||
}
|
||||
71
src/test/bxci.schema-1.0/bxci.yml
Normal file
71
src/test/bxci.schema-1.0/bxci.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
project:
|
||||
name: some-project
|
||||
type: npm
|
||||
|
||||
config:
|
||||
jenkins_runtime:
|
||||
docker:
|
||||
image: remote-host.com/image-name:tag
|
||||
dockerfile: .ci/Dockerfile
|
||||
|
||||
branch:
|
||||
disable_validation: false
|
||||
branch_pattern: "^master$|^release/.+$"
|
||||
|
||||
build:
|
||||
clean_workspace_after_run: false
|
||||
|
||||
services:
|
||||
- Elasticsearch
|
||||
- Mysql
|
||||
- Mssql
|
||||
|
||||
environment:
|
||||
my_env_var: value
|
||||
ANOTHER_VAR: value
|
||||
__CFBundleIdentifier: some value
|
||||
|
||||
jenkinsEnvironment:
|
||||
- SOME_VALID_VALUE
|
||||
|
||||
archive:
|
||||
- some-file.txt
|
||||
- target/*.jar
|
||||
|
||||
stages:
|
||||
my stage:
|
||||
steps:
|
||||
- echo first
|
||||
another:
|
||||
steps:
|
||||
- npm run lint
|
||||
Another step:
|
||||
when:
|
||||
branch: "^master$"
|
||||
steps:
|
||||
- echo last
|
||||
|
||||
output:
|
||||
docker:
|
||||
dockerfile: path/to/Dockerfile
|
||||
image_name: my-image
|
||||
publish:
|
||||
branch: "^master$"
|
||||
registry: http://my-docker-registry.com
|
||||
credentials: SECRET
|
||||
|
||||
helm:
|
||||
path: k8s/project-name
|
||||
updates:
|
||||
- file: Chart.yaml
|
||||
properties:
|
||||
- key: chartVersion
|
||||
value: asdf
|
||||
- file: Another.yaml
|
||||
properties:
|
||||
- key: something
|
||||
env: SOME_VALID_VALUE
|
||||
publish:
|
||||
branch: "^master$|^release/.+$"
|
||||
repository: http://remote-host.com/image-name:tag
|
||||
credentials: SECRET
|
||||
Reference in New Issue
Block a user