-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Introduce schema for registry entries (#4805)
Signed-off-by: svrnm <[email protected]>
- Loading branch information
Showing
19 changed files
with
442 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
name: Registry Validation | ||
|
||
on: | ||
pull_request: | ||
# Make sure this only runs when registry entries are touched. | ||
paths: | ||
- 'data/registry/**' | ||
|
||
jobs: | ||
registry-validation: | ||
name: REGISTRY validation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Create and use reduced-dependencies package.json | ||
run: | | ||
mkdir -p tmp | ||
jq '.devDependencies |= with_entries( | ||
select(.key | test("gulp|markdown|through|require|yargs|js-yaml|ajv|ajv-formats|ajv-errors")) | ||
) | ||
| del(.dependencies, .optionalDependencies)' \ | ||
package.json > tmp/package-ci.json | ||
cp tmp/package-ci.json package.json | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version-file: .nvmrc | ||
cache: npm | ||
cache-dependency-path: tmp/package-ci.json | ||
- run: npm install --ignore-scripts --omit=optional | ||
- run: npm run check:registry |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
{ | ||
"$schema": "http://json-schema.org/draft-07/schema#", | ||
"$id": "https://opentelemetry.io/ecosystem/registry/schema.json", | ||
"$comment": "https://opentelemetry.io/ecosystem/registry/adding/", | ||
"description": "A schema for entries in the OpenTelemetry registry", | ||
"type": "object", | ||
"properties": { | ||
"title": { | ||
"type": "string", | ||
"description": "The title of the entry", | ||
"errorMessage": "The title of the entry must be a string and can not be empty", | ||
"minLength": 1 | ||
}, | ||
"registryType": { | ||
"type": "string", | ||
"description": "The type of the entry", | ||
"enum": [ | ||
"core", | ||
"exporter", | ||
"extension", | ||
"instrumentation", | ||
"log-bridge", | ||
"processor", | ||
"receiver", | ||
"resource-detector", | ||
"utilities" | ||
] | ||
}, | ||
"language": { | ||
"type": "string", | ||
"description": "The programming language of the entry", | ||
"examples": ["collector"] | ||
}, | ||
"description": { | ||
"type": "string", | ||
"description": "A description of the entry", | ||
"errorMessage": "The description of the entry must be a string and can not be empty" | ||
}, | ||
"tags": { | ||
"type": "array", | ||
"items": { | ||
"type": "string" | ||
}, | ||
"description": "A list of tags for the entry", | ||
"uniqueItems": true | ||
}, | ||
"license": { | ||
"type": "string", | ||
"description": "The license of the entry", | ||
"examples": ["Apache 2.0", "MIT"] | ||
}, | ||
"createdAt": { | ||
"type": "string", | ||
"description": "The date the entry was created", | ||
"format": "date" | ||
}, | ||
"authors": { | ||
"type": "array", | ||
"items": { | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"oneOf": [ | ||
{ | ||
"pattern": "OpenTelemetry Authors", | ||
"errorMessage": "The name of the author can not contain 'OpenTelemetry' except for 'OpenTelemetry Authors'" | ||
}, | ||
{ | ||
"pattern": "^(?!.*OpenTelemetry).*$" | ||
} | ||
], | ||
"description": "The name of the author", | ||
"errorMessage": "The name of the author must be a string" | ||
}, | ||
"email": { | ||
"type": "string", | ||
"description": "The email address of the author", | ||
"format": "email" | ||
}, | ||
"url": { | ||
"type": "string", | ||
"description": "The URL of the author", | ||
"pattern": "^https:\\/\\/github\\.com\\/([a-zA-Z0-9](?:-?[a-zA-Z0-9]){0,38})$", | ||
"errorMessage": "The URL of the author must be a valid GitHub user URL" | ||
} | ||
}, | ||
"if": { | ||
"properties": { | ||
"name": { | ||
"const": "OpenTelemetry Authors" | ||
} | ||
} | ||
}, | ||
"then": { | ||
"required": ["name"] | ||
}, | ||
"else": { | ||
"required": ["name"], | ||
"anyOf": [ | ||
{ | ||
"required": ["email"] | ||
}, | ||
{ | ||
"required": ["url"] | ||
} | ||
], | ||
"errorMessage": "An author must have an email or a URL" | ||
}, | ||
"additionalProperties": false | ||
}, | ||
"description": "A list of authors of the entry", | ||
"minItems": 1 | ||
}, | ||
"urls": { | ||
"type": "object", | ||
"properties": { | ||
"repo": { | ||
"type": "string", | ||
"description": "The URL of the repository" | ||
}, | ||
"docs": { | ||
"type": "string", | ||
"description": "The URL of the documentation" | ||
} | ||
}, | ||
"required": ["repo"], | ||
"additionalProperties": false | ||
}, | ||
"package": { | ||
"type": "object", | ||
"properties": { | ||
"name": { | ||
"type": "string", | ||
"description": "The name of the package" | ||
}, | ||
"version": { | ||
"type": "string", | ||
"description": "The version of the package" | ||
}, | ||
"registry": { | ||
"type": "string", | ||
"description": "The registry of the package", | ||
"enum": [ | ||
"crates", | ||
"npm", | ||
"pip", | ||
"gems", | ||
"maven", | ||
"nuget", | ||
"packagist", | ||
"go", | ||
"go-collector", | ||
"hex" | ||
] | ||
}, | ||
"quickInstall": { | ||
"type": "boolean", | ||
"description": "A flag to indicate if a quick install can be shown" | ||
} | ||
}, | ||
"required": ["name", "registry"], | ||
"additionalProperties": false | ||
}, | ||
"deprecated": { | ||
"type": "object", | ||
"properties": { | ||
"reason": { | ||
"type": "string", | ||
"description": "The reason for deprecation", | ||
"errorMessage": "The reason for deprecation must be a string and can not be empty" | ||
} | ||
}, | ||
"required": ["reason"], | ||
"additionalProperties": false | ||
}, | ||
"isNative": { | ||
"type": "boolean", | ||
"description": "A flag to indicate if the entry is native" | ||
}, | ||
"isFirstParty": { | ||
"type": "boolean", | ||
"description": "A flag to indicate if the entry is first party" | ||
} | ||
}, | ||
"additionalProperties": false, | ||
"required": ["title", "description", "urls", "authors"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.