mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[Env] Add buildFlavor
to package info (#161930)
## Summary Add a `buildFavor` property to `Env` (accessible from the plugin's initializer context), Mimicking the idea of ES's `version.buildFlavor` field. Note: this is not supposed to be a replacement for feature flags, but can be useful when wanting to toggle features based on actual capabilities of our serverless product. Also, we already expose this value through the configuration via the `serverless` context value, so it now adds another way to access the information. --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
e79f244fa9
commit
ab486aff05
16 changed files with 79 additions and 4 deletions
|
@ -15,13 +15,14 @@ import { registerBundleRoutes } from './register_bundle_routes';
|
|||
import { FileHashCache } from './file_hash_cache';
|
||||
|
||||
const createPackageInfo = (parts: Partial<PackageInfo> = {}): PackageInfo => ({
|
||||
...parts,
|
||||
buildNum: 42,
|
||||
buildSha: 'sha',
|
||||
dist: true,
|
||||
branch: 'master',
|
||||
version: '8.0.0',
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
...parts,
|
||||
});
|
||||
|
||||
const createUiPlugins = (...ids: string[]): UiPlugins => ({
|
||||
|
|
|
@ -26,6 +26,7 @@ function createCoreContext({ production = false }: { production?: boolean } = {}
|
|||
buildSha: 'buildSha',
|
||||
dist: false,
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -25,6 +25,7 @@ export const createPluginInitializerContextMock = (config: unknown = {}) => {
|
|||
buildSha: 'buildSha',
|
||||
dist: false,
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
},
|
||||
},
|
||||
logger: loggerMock.create(),
|
||||
|
|
|
@ -43,6 +43,7 @@ const createPluginInitializerContextMock = (config: unknown = {}) => {
|
|||
buildSha: 'buildSha',
|
||||
dist: false,
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'serverless',
|
||||
},
|
||||
},
|
||||
logger: loggerMock.create(),
|
||||
|
|
|
@ -8,20 +8,21 @@
|
|||
|
||||
import { mockReadFile } from './plugin_manifest_parser.test.mocks';
|
||||
|
||||
import { PluginDiscoveryErrorType } from './plugin_discovery_error';
|
||||
|
||||
import { resolve } from 'path';
|
||||
import type { PackageInfo } from '@kbn/config';
|
||||
import { PluginDiscoveryErrorType } from './plugin_discovery_error';
|
||||
import { parseManifest } from './plugin_manifest_parser';
|
||||
|
||||
const pluginPath = resolve('path', 'existent-dir');
|
||||
const pluginManifestPath = resolve(pluginPath, 'kibana.json');
|
||||
const packageInfo = {
|
||||
const packageInfo: PackageInfo = {
|
||||
branch: 'master',
|
||||
buildNum: 1,
|
||||
buildSha: '',
|
||||
version: '7.0.0-alpha1',
|
||||
dist: false,
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
};
|
||||
|
||||
afterEach(() => {
|
||||
|
|
|
@ -20,6 +20,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -82,6 +83,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -148,6 +150,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -210,6 +213,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -272,6 +276,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -338,6 +343,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -400,6 +406,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -462,6 +469,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -528,6 +536,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -598,6 +607,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -660,6 +670,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -726,6 +737,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -796,6 +808,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
@ -862,6 +875,7 @@ Object {
|
|||
"packageInfo": Object {
|
||||
"branch": Any<String>,
|
||||
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||
"buildFlavor": Any<String>,
|
||||
"buildNum": Any<Number>,
|
||||
"buildSha": Any<String>,
|
||||
"dist": Any<Boolean>,
|
||||
|
|
|
@ -28,6 +28,7 @@ const createPackageInfo = (parts: Partial<PackageInfo> = {}): PackageInfo => ({
|
|||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
dist: false,
|
||||
version: '8.0.0',
|
||||
buildFlavor: 'traditional',
|
||||
...parts,
|
||||
});
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ const INJECTED_METADATA = {
|
|||
dist: expect.any(Boolean),
|
||||
version: expect.any(String),
|
||||
buildDate: new Date(BUILD_DATE).toISOString(),
|
||||
buildFlavor: expect.any(String),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -29,6 +29,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "feature-v1",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 9007199254740991,
|
||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"dist": false,
|
||||
|
@ -71,6 +72,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "feature-v1",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 9007199254740991,
|
||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"dist": false,
|
||||
|
@ -112,6 +114,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "some-branch",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 9007199254740991,
|
||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"dist": false,
|
||||
|
@ -153,6 +156,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "feature-v1",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 100,
|
||||
"buildSha": "feature-v1-build-sha",
|
||||
"dist": true,
|
||||
|
@ -194,6 +198,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "feature-v1",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 9007199254740991,
|
||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"dist": false,
|
||||
|
@ -235,6 +240,7 @@ Env {
|
|||
"packageInfo": Object {
|
||||
"branch": "feature-v1",
|
||||
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||
"buildFlavor": "traditional",
|
||||
"buildNum": 100,
|
||||
"buildSha": "feature-v1-build-sha",
|
||||
"dist": true,
|
||||
|
|
|
@ -208,3 +208,43 @@ test('pluginSearchPaths only includes kibana-extra, regardless of plugin filters
|
|||
|
||||
expect(env4.pluginSearchPaths).toEqual(['/some/home/kibana-extra', '/some/home/dir/plugins']);
|
||||
});
|
||||
|
||||
describe('packageInfo.buildFlavor', () => {
|
||||
it('is set to `serverless` when the `serverless` cli flag is `true`', () => {
|
||||
mockPackage.raw = {
|
||||
branch: 'some-branch',
|
||||
version: 'some-version',
|
||||
};
|
||||
|
||||
const env = Env.createDefault(
|
||||
REPO_ROOT,
|
||||
getEnvOptions({
|
||||
configs: ['/test/cwd/config/kibana.yml'],
|
||||
cliArgs: {
|
||||
serverless: true,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
expect(env.packageInfo.buildFlavor).toEqual('serverless');
|
||||
});
|
||||
|
||||
it('is set to `traditional` when the `serverless` cli flag is `false`', () => {
|
||||
mockPackage.raw = {
|
||||
branch: 'some-branch',
|
||||
version: 'some-version',
|
||||
};
|
||||
|
||||
const env = Env.createDefault(
|
||||
REPO_ROOT,
|
||||
getEnvOptions({
|
||||
configs: ['/test/cwd/config/kibana.yml'],
|
||||
cliArgs: {
|
||||
serverless: false,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
expect(env.packageInfo.buildFlavor).toEqual('traditional');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -124,6 +124,7 @@ export class Env {
|
|||
version: pkg.version,
|
||||
dist: isKibanaDistributable,
|
||||
buildDate: isKibanaDistributable ? new Date(pkg.build.date) : new Date(),
|
||||
buildFlavor: this.cliArgs.serverless ? 'serverless' : 'traditional',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ export interface PackageInfo {
|
|||
buildNum: number;
|
||||
buildSha: string;
|
||||
buildDate: Date;
|
||||
buildFlavor: BuildFlavor;
|
||||
dist: boolean;
|
||||
}
|
||||
|
||||
|
@ -26,3 +27,5 @@ export interface EnvironmentMode {
|
|||
dev: boolean;
|
||||
prod: boolean;
|
||||
}
|
||||
|
||||
export type BuildFlavor = 'serverless' | 'traditional';
|
||||
|
|
|
@ -86,6 +86,7 @@ describe('GET /api/status', () => {
|
|||
dist: true,
|
||||
version: '9.9.9-SNAPSHOT',
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
},
|
||||
serverName: 'xkibana',
|
||||
uuid: 'xxxx-xxxxx',
|
||||
|
|
|
@ -100,6 +100,7 @@ function pluginInitializerContextMock<T>(config: T = {} as T) {
|
|||
buildSha: 'buildSha',
|
||||
dist: false,
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
},
|
||||
instanceUuid: 'instance-uuid',
|
||||
configs: ['/some/path/to/config/kibana.yml'],
|
||||
|
|
|
@ -36,6 +36,7 @@ describe('PdfMaker', () => {
|
|||
dist: false,
|
||||
version: '1000.0.0',
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
};
|
||||
pdf = new PdfMaker(layout, undefined, packageInfo, logger);
|
||||
});
|
||||
|
|
|
@ -58,6 +58,7 @@ describe('Screenshot Observable Pipeline', () => {
|
|||
dist: false,
|
||||
version: '5000.0.0',
|
||||
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||
buildFlavor: 'traditional',
|
||||
};
|
||||
options = {
|
||||
browserTimezone: 'UTC',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue