Merge branch 'master' of github.com:spotify/backstage into mob/prepare-from-catalog
* 'master' of github.com:spotify/backstage: (60 commits) packages,plugins: remove main:src and fix some main fields packages/config: added get and getOptional changed down caret to be up caret on user profile in the sidebar packages/config: add getOptionalConfig and getOptionalConfigArray to mirror other accessors packages/config-loader,core: update config usage to include context build(deps): bump @types/react from 16.9.25 to 16.9.37 (#1342) build(deps): bump rollup-plugin-esbuild from 2.0.0 to 2.1.0 (#1361) build(deps-dev): bump lint-staged from 10.2.9 to 10.2.11 (#1359) Polishing the Create page (#1353) Add some air between sidebar sections (#1355) Starred icon is yellow (#1351) Updated FAQ with Gitlab link (#1352) build(deps): bump react-helmet from 6.0.0 to 6.1.0 (#1327) packages/config: added context to keep track of where config is from for error messages packages/config: added .keys() packages/config: keep track of key prefix to display better error messages packages/config: optimize some error message handling packages/config: allow config readers to be backed by undefined data packages/config: flip around must* and get* to get* and getOptional* packages/core-api: fix invocation order when continuing to app after sign-in ...
This commit is contained in:
+18
-16
@@ -15,12 +15,12 @@ No, but it can be! Backstage is designed to be a developer portal for all your
|
||||
infrastructure tooling, services, and documentation. So, it's not a monitoring
|
||||
platform — but that doesn't mean you can't integrate a monitoring tool into
|
||||
Backstage by writing
|
||||
[a plugin](https://github.com/spotify/faq#what-is-a-plugin-in-backstage).
|
||||
[a plugin](https://github.com/spotify/backstage/blob/master/docs/FAQ.md#what-is-a-plugin-in-backstage).
|
||||
|
||||
### How is Backstage licensed?
|
||||
|
||||
Backstage was released as free and open software by Spotify and is licensed
|
||||
under [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
||||
Backstage was released as open sourced software by Spotify and is licensed under
|
||||
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
|
||||
|
||||
### Why did we open source Backstage?
|
||||
|
||||
@@ -99,15 +99,15 @@ plugins.
|
||||
|
||||
### What is a "plugin" in Backstage?
|
||||
|
||||
Plugins are what provide the feature functionality in Backstage. They are used
|
||||
to integrate different systems into Backstage's frontend, so that the developer
|
||||
gets a consistent UX, no matter what tool or service is being accessed on the
|
||||
other side. Each plugin is treated as a self-contained web app and can include
|
||||
almost any type of content. Plugins all use a common set of platform APIs and
|
||||
reusable UI components. Plugins can fetch data either from the backend or an API
|
||||
exposed through the proxy. Learn more about
|
||||
[the different components](https://github.com/spotify/backstage#overview) that
|
||||
make up Backstage.
|
||||
By far, our most-used plugin is our TechDocs plugin, which we use for creating
|
||||
technical documentation. Our philosophy at Spotify is to treat "docs like code",
|
||||
where you write documentation using the same workflow as you write your code.
|
||||
This makes it easier to create, find, and update documentation. We hope to
|
||||
release
|
||||
[the open source version](https://github.com/spotify/backstage/issues/687) in
|
||||
the future. (See also:
|
||||
"[Will Spotify's internal plugins be open sourced, too?](https://github.com/spotify/backstage/blob/master/docs/FAQ.md#what-is-a-plugin-in-backstage)"
|
||||
above)
|
||||
|
||||
### Do I have to write plugins in TypeScript?
|
||||
|
||||
@@ -156,10 +156,12 @@ Integrators also configure closed source plugins locally from the monorepo.
|
||||
We chose GitHub because it is the tool that we are most familiar with, so that
|
||||
will naturally lead to integrations for GitHub being developed at an early
|
||||
stage. Hosting this project on GitHub does not exclude integrations with
|
||||
alternatives, such as GitLab or Bitbucket. We believe that in time there will be
|
||||
plugins that will provide functionality for these tools as well. Hopefully,
|
||||
contributed by the community! Also note, implementations of Backstage can be
|
||||
hosted wherever you feel suits your needs best.
|
||||
alternatives, such as
|
||||
[GitLab](https://github.com/spotify/backstage/issues?q=is%3Aissue+is%3Aopen+GitLab)
|
||||
or Bitbucket. We believe that in time there will be plugins that will provide
|
||||
functionality for these tools as well. Hopefully, contributed by the community!
|
||||
Also note, implementations of Backstage can be hosted wherever you feel suits
|
||||
your needs best.
|
||||
|
||||
### Who maintains Backstage?
|
||||
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "backstage.io/v1alpha1",
|
||||
"type": "object",
|
||||
"title": "A JSON Schema for Backstage catalog entities.",
|
||||
"description": "Each descriptor file has a number of entities. This schema matches each of those.",
|
||||
"examples": [
|
||||
{
|
||||
"apiVersion": "backstage.io/v1alpha1",
|
||||
"kind": "Component",
|
||||
"metadata": {
|
||||
"name": "LoremService",
|
||||
"description": "Creates Lorems like a pro.",
|
||||
"labels": {
|
||||
"product_name": "Random value Generator"
|
||||
},
|
||||
"annnotations": {
|
||||
"docs": "https://github.com/..../tree/develop/doc"
|
||||
},
|
||||
"teams": [
|
||||
{
|
||||
"name": "Team super great",
|
||||
"email": "greatTeam@geemel.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"spec": {
|
||||
"type": "service",
|
||||
"lifecycle": "production",
|
||||
"owner": "tools@example.com"
|
||||
}
|
||||
}
|
||||
],
|
||||
"required": ["apiVersion", "kind", "metadata"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"apiVersion": {
|
||||
"type": "string",
|
||||
"description": "Version of the specification format for a particular file is written against.",
|
||||
"enum": ["backstage.io/v1alpha1", "backstage.io/v1beta1"]
|
||||
},
|
||||
"kind": {
|
||||
"type": "string",
|
||||
"description": "High level entity type being described, from the Backstage system model.",
|
||||
"enum": ["Component"]
|
||||
},
|
||||
"metadata": {
|
||||
"$ref": "#/definitions/metadata"
|
||||
},
|
||||
"spec": {
|
||||
"$ref": "#/definitions/spec"
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"description": "Metadata about the entity, i.e. things that aren't directly part of the entity specification itself.",
|
||||
"required": ["name"],
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9A-Z_.-]{1,63}$",
|
||||
"description": "The name of the entity. This name is both meant for human eyes to recognize the entity, and for machines and other components to reference the entity"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "A human readable description of the entity, to be shown in Backstage. Should be kept short and informative."
|
||||
},
|
||||
"namespace": {
|
||||
"type": "string",
|
||||
"description": "The name of a namespace that the entity belongs to."
|
||||
},
|
||||
"labels": {
|
||||
"type": "object",
|
||||
"description": "Labels are optional key/value pairs of that are attached to the entity, and their use is identical to kubernetes object labels.",
|
||||
"additionalProperties": true,
|
||||
"patternProperties": {
|
||||
"^([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,}/)?[a-z0-9A-Z_\\-\\.]{1,63}$": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9A-Z_.-]{1,63}$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"annnotations": {
|
||||
"type": "object",
|
||||
"description": "Arbitrary non-identifying metadata attached to the entity, identical in use to kubernetes object annotations.",
|
||||
"additionalProperties": true,
|
||||
"patternProperties": {
|
||||
"^([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,}/)?[a-z0-9A-Z_\\-\\.]{1,63}$": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9A-Z_.-]{1,63}$"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"type": "object",
|
||||
"description": "Actual specification data that describes the entity. TODO: shape depend on `kind`",
|
||||
"required": ["type", "lifecycle", "owner"],
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "The type of component.",
|
||||
"examples": ["service"]
|
||||
},
|
||||
"lifecycle": {
|
||||
"type": "string",
|
||||
"description": "The lifecycle step that this component is in.",
|
||||
"examples": ["production"]
|
||||
},
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"description": "The owner of the component.",
|
||||
"examples": ["tools@example.com"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user