Merge branch 'changeset-release/master' of github.com:backstage/backstage into changeset-release/master

* 'changeset-release/master' of github.com:backstage/backstage:
  Version Packages
  feat: added config schema for k8s plugins
  Integrate review comments
  Link to substitutions instead of duplicating the content
  Document Substitutions In The Descriptor Format
This commit is contained in:
blam
2020-11-24 17:56:40 +01:00
6 changed files with 118 additions and 18 deletions
@@ -93,6 +93,43 @@ significance and have reserved purposes and distinct shapes.
See below for details about these fields.
## Substitutions In The Descriptor Format
The descriptor format supports substitutions using `$text`, `$json`, and
`$yaml`.
Placeholders like `$json: https://example.com/entity.json` are substituted by
the content of the referenced file. Files can be referenced from any configured
integration similar to locations by passing an absolute URL. It's also possible
to reference relative files like `./referenced.yaml` from the same location.
Relative references are handled relative to the folder of the
`catalog-info.yaml` that contains the placeholder. There are three different
types of placeholders:
- `$text`: Interprets the contents of the referenced file as plain text and
embeds it as a string.
- `$json`: Interprets the contents of the referenced file as JSON and embeds the
parsed structure.
- `$yaml`: Interprets the contents of the referenced file as YAML and embeds the
parsed structure.
For example, this can be used to load the definition of an API entity from a web
server and embed it as a string in the field `spec.definition`:
```yaml
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: petstore
description: The Petstore API
spec:
type: openapi
lifecycle: production
owner: petstore@example.com
definition:
$text: https://petstore.swagger.io/v2/swagger.json
```
## Common to All Kinds: The Envelope
The root envelope object has the following structure.
@@ -238,22 +238,9 @@ annotation, with the same value format.
### backstage.io/definition-at-location
This annotation allowed to load the API definition from another location. Now
placeholders can be used instead:
```
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: petstore
description: The Petstore API
spec:
type: openapi
lifecycle: production
owner: petstore@example.com
definition:
$text: https://petstore.swagger.io/v2/swagger.json
```
This annotation allowed to load the API definition from another location. Use
[substitution](./descriptor-format.md#substitutions-in-the-descriptor-format)
instead.
## Links
+3 -1
View File
@@ -10,6 +10,7 @@
"main": "dist/index.cjs.js",
"types": "dist/index.d.ts"
},
"configSchema": "schema.d.ts",
"scripts": {
"start": "backstage-cli backend:dev",
"build": "backstage-cli backend:build",
@@ -42,6 +43,7 @@
"supertest": "^4.0.2"
},
"files": [
"dist"
"dist",
"schema.d.ts"
]
}
+27
View File
@@ -0,0 +1,27 @@
/*
* Copyright 2020 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export interface Config {
kubernetes?: {
serviceLocatorMethod: 'multiTenant';
clusterLocatorMethods: 'config'[];
clusters: {
url: string;
name: string;
serviceAccountToken: string;
authProvider: 'serviceAccount';
}[];
};
}
+3 -1
View File
@@ -9,6 +9,7 @@
"main": "dist/index.esm.js",
"types": "dist/index.d.ts"
},
"configSchema": "schema.d.ts",
"scripts": {
"build": "backstage-cli plugin:build",
"start": "backstage-cli plugin:serve",
@@ -47,6 +48,7 @@
"msw": "^0.21.2"
},
"files": [
"dist"
"dist",
"schema.d.ts"
]
}
+45
View File
@@ -0,0 +1,45 @@
/*
* Copyright 2020 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export interface Config {
kubernetes?: {
/**
* @visibility frontend
*/
serviceLocatorMethod: 'multiTenant';
/**
* @visibility frontend
*/
clusterLocatorMethods: 'config'[];
clusters: {
/**
* @visibility frontend
*/
url: string;
/**
* @visibility frontend
*/
name: string;
/**
* @visibility secret
*/
serviceAccountToken: string;
/**
* @visibility frontend
*/
authProvider: 'serviceAccount';
}[];
};
}