300 строки
10 KiB
JSON
300 строки
10 KiB
JSON
{
|
|
"type": "object",
|
|
"properties": {
|
|
"advancedOptions": {
|
|
// To keep backward compatibility, but will not list schema for old config options.
|
|
"properties": {
|
|
"createSdkPullRequests": {
|
|
// Should SDK Automation create PR or not.
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"closeIntegrationPR": {
|
|
// Should SDK Automation close integrationPR to reduce noise.
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"draftIntegrationPR": {
|
|
// Should SDK Automation create draft integrationPR to reduce noise.
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"generationCallMode": {
|
|
// If we have multiple related readme.md, should we call generation once with
|
|
// all the readme.md or should we call generation multiple times and one per readme.md.
|
|
"type": "string",
|
|
"enum": [
|
|
"one-per-config",
|
|
"one-for-all-configs"
|
|
],
|
|
"default": "one-for-all-configs"
|
|
},
|
|
"cloneDir": {
|
|
// SDK clone directory. By default it's name of sdk repo
|
|
"type": "string"
|
|
}
|
|
},
|
|
"default": {
|
|
"createSdkPullRequests": true,
|
|
"closeIntegrationPR": true,
|
|
"draftIntegrationPR": true
|
|
}
|
|
},
|
|
"initOptions": {
|
|
// Init the environment. Install dependencies.
|
|
"type": "object",
|
|
"properties": {
|
|
"initScript": {
|
|
// Script to init dependencies.
|
|
// Param: <path_to_initInput.json> <path_to_initOutput.json>
|
|
// initInput.json: Not implemented. Placeholder for input arguments.
|
|
// initOutput.json: See #initOutput.
|
|
"$ref": "#/definitions/RunOptions"
|
|
}
|
|
},
|
|
"default": {}
|
|
},
|
|
"generateOptions": {
|
|
// Generate the SDK code.
|
|
"type": "object",
|
|
"properties": {
|
|
"generateScript": {
|
|
// Script to generate the SDK code.
|
|
// Param: <path_to_generateInput.json> <path_to_generateOutput.json>
|
|
// generateInput.json: See #GenerateInput
|
|
// generateOutput.json: See #GenerateOutput
|
|
"$ref": "#/definitions/RunOptions"
|
|
},
|
|
"preprocessDryRunGetPackageName": {
|
|
// If this options is set to true, generateScript will first run with
|
|
// "dryRun": true to get package name and related readme.md,
|
|
// then for each package, checkout the expected branch and launch generateScript.
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"parseGenerateOutput": {
|
|
// Will this script output to generateOutput.json.
|
|
// If not, default behavior will be applied that outcome will be
|
|
// detected automatically based on filename regex search.
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
},
|
|
"default": {
|
|
"preprocessDryRunGetPackageName": false,
|
|
"parseGenerateOutput": false
|
|
}
|
|
},
|
|
"packageOptions": {
|
|
// Get package folder and build / get changelog
|
|
"type": "object",
|
|
"properties": {
|
|
"packageFolderFromFileSearch": {
|
|
"oneOf": [
|
|
{
|
|
// If this option is set to object, then package folder will be detected automatically.
|
|
// based on filename regex search.
|
|
// This options must be set to object if parseGenerateOutput is false.
|
|
"type": "object",
|
|
"properties": {
|
|
"searchRegex": {
|
|
// Search algorithm:
|
|
// For each changed file detected after generation
|
|
// PotentialPackageFolder = folder of changed file
|
|
// While PotentialPackageFolder is not root folder of sdk repo:
|
|
// If PotentialPackageFolder contains a file that matches the searchRegex:
|
|
// PackageFolder found, break
|
|
// Else:
|
|
// PotentialPackageFolder = parent folder of PotentialPackageFolder
|
|
"type": "string",
|
|
"format": "regex"
|
|
},
|
|
"packageNamePrefix": {
|
|
// Prefix to be appended to packageName.
|
|
// By default packageName will be the folder name of packageFolder
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"searchRegex"
|
|
]
|
|
},
|
|
{
|
|
// If this option is set to false, then package folder will be from generateOutput.json.
|
|
"const": false
|
|
}
|
|
]
|
|
},
|
|
"buildScript": {
|
|
// Build the generated sdk.
|
|
// Param: <path_to_package_folder>
|
|
// Package folder could be a list separated by space if it's from generateOutput.json.
|
|
"$ref": "#/definitions/RunOptions"
|
|
},
|
|
"changelogScript": {
|
|
// Changelog generation and breaking-change detection.
|
|
// Param: <path_to_package_folder>
|
|
// Package folder could be a list separated by space if it's from generateOutput.json.
|
|
// Expected output from stdout/stderr: Changelog in markdown
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/RunOptions"
|
|
}
|
|
],
|
|
"properties": {
|
|
"breakingChangeDetect": {
|
|
// If stdout or stderr matches this in output of changelog tool
|
|
// then we assume this SDK has breaking change.
|
|
"$ref": "#/definitions/RunLogFilterOptions"
|
|
}
|
|
}
|
|
},
|
|
"breakingChangeLabel": {
|
|
// Label to be added in spec PR if breaking change is found
|
|
"type": "string"
|
|
}
|
|
},
|
|
"default": {}
|
|
},
|
|
"artifactOptions": {
|
|
"properties": {
|
|
"artifactPathFromFileSearch": {
|
|
"oneOf": [
|
|
{
|
|
// If this option is set to object, then artifacts will be detected automatically
|
|
// based on filename regex search.
|
|
// This options must be set to object if parseGenerateOutput is false.
|
|
"type": "object",
|
|
"properties": {
|
|
"searchRegex": {
|
|
// Any file under package folder matching the searchRegex is package artifact.
|
|
"type": "string",
|
|
"format": "regex"
|
|
}
|
|
},
|
|
"required": [
|
|
"searchRegex"
|
|
]
|
|
},
|
|
{
|
|
// If this option is set to false, then package folder will be from generateOutput.json
|
|
"const": false
|
|
}
|
|
]
|
|
},
|
|
"installInstructionScript": {
|
|
// Generate install instruction that could be shown in spec PR comment (lite version)
|
|
// or in generated SDK PR (full version).
|
|
// If generateOutput.json contains installInstruction then this could be skipped.
|
|
// Param: <path_to_installInstructionInput.json> <path_to_installInstructionOutput.json>
|
|
// installInstructionInput.json: See #InstallInstructionScriptInput .
|
|
// installInstructionOutput.json: See #InstallInstructionScriptInput .
|
|
"$ref": "#/definitions/RunOptions"
|
|
}
|
|
},
|
|
"default": {}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"RunOptions": {
|
|
// Options to run a script and collect log.
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
// Script path related to repo root
|
|
"type": "string"
|
|
},
|
|
"envs": {
|
|
// Extra environment variable to be passed to the script.
|
|
// By default the following envs will be passed:
|
|
// USER, HOME, PATH, SHELL, PWD (current directory), TMPDIR (dedicated temp folder)
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
},
|
|
"logPrefix": {
|
|
// Prefix to be added to SDK Automation log. By default it would be filename of the script.
|
|
"type": "string"
|
|
},
|
|
"stdout": {
|
|
// How should SDK Automation handle the script stdout stream
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/RunLogOptions"
|
|
}
|
|
]
|
|
},
|
|
"stderr": {
|
|
// How should SDK Automation handle the script stderr stream
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/RunLogOptions"
|
|
}
|
|
],
|
|
"default": {
|
|
"scriptWarning": true
|
|
}
|
|
},
|
|
"exitCode": {
|
|
"properties": {
|
|
// How should SDK Automation handle non-zero exitCode.
|
|
"showInComment": {
|
|
// Should we show this error in comment.
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"result": {
|
|
// If script has non-error exitCode how should we mark the script's result.
|
|
"type": "string",
|
|
"enum": [
|
|
"error",
|
|
"warning",
|
|
"ignore"
|
|
],
|
|
"default": "error"
|
|
}
|
|
},
|
|
"default": {
|
|
"showInComment": true,
|
|
"result": "error"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
]
|
|
},
|
|
"RunLogOptions": {
|
|
// How should SDK Automation handle the log stream.
|
|
"showInComment": {
|
|
// Should we show this stream in comment.
|
|
"$ref": "#/definitions/RunLogFilterOptions"
|
|
},
|
|
"scriptError": {
|
|
// If any line match, assume the script fails.
|
|
"$ref": "#/definitions/RunLogFilterOptions"
|
|
},
|
|
"scriptWarning": {
|
|
// If any line match, assume the script warns.
|
|
"$ref": "#/definitions/RunLogFilterOptions"
|
|
}
|
|
},
|
|
"RunLogFilterOptions": {
|
|
"oneOf": [
|
|
{
|
|
// If line of log match this regex then hit
|
|
"type": "string",
|
|
"format": "regex"
|
|
},
|
|
{
|
|
// If set to true, any line of log will hit
|
|
"type": "boolean"
|
|
}
|
|
],
|
|
"default": false
|
|
}
|
|
}
|
|
}
|