mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
Add build_date to kbn:api/status (#157905)
## Summary Adds build date to `GET kbn:api/status` similar to ES. Example output running locally: ```json { "name": "ES-DMVD5M3", "uuid": "545ba70c-063e-449b-af21-6c8e7b30f77e", "version": { "number": "8.9.0", "build_hash": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "build_number": 9007199254740991, "build_snapshot": false, "build_date": "2023-05-15T23:12:09.000Z" }, ...rest } ``` ### Checklist - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios ## Release Note The status endpoint now returns the build date alongside other build information. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
97a93b34ee
commit
0c3ca366a1
33 changed files with 96 additions and 6 deletions
|
@ -187,6 +187,10 @@ Some features require special configuration when running in different modes (dev
|
||||||
|`12345`
|
|`12345`
|
||||||
|The build SHA (typically refers to the last commit's SHA)
|
|The build SHA (typically refers to the last commit's SHA)
|
||||||
|
|
||||||
|
|`buildDate`
|
||||||
|
|`2023-05-15T23:12:09+0000`
|
||||||
|
|The ISO 8601 date of the build
|
||||||
|
|
||||||
|===
|
|===
|
||||||
|
|
||||||
To use any of the references listed above in a config validation schema, they can be accessed via `schema.contextRef('{CONTEXT_REFERENCE}')`:
|
To use any of the references listed above in a config validation schema, they can be accessed via `schema.contextRef('{CONTEXT_REFERENCE}')`:
|
||||||
|
|
|
@ -17,7 +17,8 @@
|
||||||
"tsdocMetadata": "./build/tsdoc-metadata.json",
|
"tsdocMetadata": "./build/tsdoc-metadata.json",
|
||||||
"build": {
|
"build": {
|
||||||
"number": 8467,
|
"number": 8467,
|
||||||
"sha": "6cb7fec4e154faa0a4a3fee4b33dfef91b9870d9"
|
"sha": "6cb7fec4e154faa0a4a3fee4b33dfef91b9870d9",
|
||||||
|
"date": "2023-05-15T23:12:09+0000"
|
||||||
},
|
},
|
||||||
"homepage": "https://www.elastic.co/products/kibana",
|
"homepage": "https://www.elastic.co/products/kibana",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
|
@ -16,6 +16,7 @@ const buildServerVersion = (parts: Partial<ServerVersion> = {}): ServerVersion =
|
||||||
build_hash: 'build_hash',
|
build_hash: 'build_hash',
|
||||||
build_number: 9000,
|
build_number: 9000,
|
||||||
build_snapshot: false,
|
build_snapshot: false,
|
||||||
|
build_date: '2023-05-15T23:12:09.000Z',
|
||||||
...parts,
|
...parts,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ const mockedResponse: StatusResponse = {
|
||||||
build_hash: '9007199254740991',
|
build_hash: '9007199254740991',
|
||||||
build_number: 12,
|
build_number: 12,
|
||||||
build_snapshot: false,
|
build_snapshot: false,
|
||||||
|
build_date: '2023-05-15T23:12:09.000Z',
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
overall: {
|
overall: {
|
||||||
|
|
|
@ -21,6 +21,7 @@ const createPackageInfo = (parts: Partial<PackageInfo> = {}): PackageInfo => ({
|
||||||
dist: true,
|
dist: true,
|
||||||
branch: 'master',
|
branch: 'master',
|
||||||
version: '8.0.0',
|
version: '8.0.0',
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
});
|
});
|
||||||
|
|
||||||
const createUiPlugins = (...ids: string[]): UiPlugins => ({
|
const createUiPlugins = (...ids: string[]): UiPlugins => ({
|
||||||
|
|
|
@ -25,6 +25,7 @@ function createCoreContext({ production = false }: { production?: boolean } = {}
|
||||||
buildNum: 100,
|
buildNum: 100,
|
||||||
buildSha: 'buildSha',
|
buildSha: 'buildSha',
|
||||||
dist: false,
|
dist: false,
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,16 +6,15 @@
|
||||||
* Side Public License, v 1.
|
* Side Public License, v 1.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { REPO_ROOT } from '@kbn/repo-info';
|
|
||||||
import type { DeeplyMockedKeys } from '@kbn/utility-types-jest';
|
import type { DeeplyMockedKeys } from '@kbn/utility-types-jest';
|
||||||
import { Env, IConfigService } from '@kbn/config';
|
import { Env, IConfigService } from '@kbn/config';
|
||||||
import type { LoggerFactory } from '@kbn/logging';
|
import type { LoggerFactory } from '@kbn/logging';
|
||||||
import { loggerMock } from '@kbn/logging-mocks';
|
import { loggerMock } from '@kbn/logging-mocks';
|
||||||
import { configServiceMock, getEnvOptions } from '@kbn/config-mocks';
|
import { configServiceMock, createTestEnv } from '@kbn/config-mocks';
|
||||||
import type { CoreContext } from '@kbn/core-base-server-internal';
|
import type { CoreContext } from '@kbn/core-base-server-internal';
|
||||||
|
|
||||||
function create({
|
function create({
|
||||||
env = Env.createDefault(REPO_ROOT, getEnvOptions()),
|
env = createTestEnv(),
|
||||||
logger = loggerMock.create(),
|
logger = loggerMock.create(),
|
||||||
configService = configServiceMock.create(),
|
configService = configServiceMock.create(),
|
||||||
}: {
|
}: {
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
"@kbn/logging",
|
"@kbn/logging",
|
||||||
"@kbn/logging-mocks",
|
"@kbn/logging-mocks",
|
||||||
"@kbn/core-base-server-internal",
|
"@kbn/core-base-server-internal",
|
||||||
"@kbn/repo-info",
|
|
||||||
],
|
],
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"target/**/*",
|
"target/**/*",
|
||||||
|
|
|
@ -24,6 +24,7 @@ export const createPluginInitializerContextMock = (config: unknown = {}) => {
|
||||||
buildNum: 100,
|
buildNum: 100,
|
||||||
buildSha: 'buildSha',
|
buildSha: 'buildSha',
|
||||||
dist: false,
|
dist: false,
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
logger: loggerMock.create(),
|
logger: loggerMock.create(),
|
||||||
|
|
|
@ -42,6 +42,7 @@ const createPluginInitializerContextMock = (config: unknown = {}) => {
|
||||||
buildNum: 100,
|
buildNum: 100,
|
||||||
buildSha: 'buildSha',
|
buildSha: 'buildSha',
|
||||||
dist: false,
|
dist: false,
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
logger: loggerMock.create(),
|
logger: loggerMock.create(),
|
||||||
|
|
|
@ -21,6 +21,7 @@ const packageInfo = {
|
||||||
buildSha: '',
|
buildSha: '',
|
||||||
version: '7.0.0-alpha1',
|
version: '7.0.0-alpha1',
|
||||||
dist: false,
|
dist: false,
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
};
|
};
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
|
|
@ -19,6 +19,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -80,6 +81,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -145,6 +147,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -206,6 +209,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -267,6 +271,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -332,6 +337,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -393,6 +399,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -454,6 +461,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -519,6 +527,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -588,6 +597,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -649,6 +659,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -714,6 +725,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -783,6 +795,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
@ -848,6 +861,7 @@ Object {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": Any<String>,
|
"branch": Any<String>,
|
||||||
|
"buildDate": "2023-05-15T23:12:09.000Z",
|
||||||
"buildNum": Any<Number>,
|
"buildNum": Any<Number>,
|
||||||
"buildSha": Any<String>,
|
"buildSha": Any<String>,
|
||||||
"dist": Any<Boolean>,
|
"dist": Any<Boolean>,
|
||||||
|
|
|
@ -25,6 +25,7 @@ const createPackageInfo = (parts: Partial<PackageInfo> = {}): PackageInfo => ({
|
||||||
branch: 'master',
|
branch: 'master',
|
||||||
buildNum: 42,
|
buildNum: 42,
|
||||||
buildSha: 'buildSha',
|
buildSha: 'buildSha',
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
dist: false,
|
dist: false,
|
||||||
version: '8.0.0',
|
version: '8.0.0',
|
||||||
...parts,
|
...parts,
|
||||||
|
|
|
@ -27,6 +27,7 @@ import { InternalRenderingServicePreboot, InternalRenderingServiceSetup } from '
|
||||||
import { RenderingService } from './rendering_service';
|
import { RenderingService } from './rendering_service';
|
||||||
import { AuthStatus } from '@kbn/core-http-server';
|
import { AuthStatus } from '@kbn/core-http-server';
|
||||||
|
|
||||||
|
const BUILD_DATE = '2023-05-15T23:12:09+0000';
|
||||||
const INJECTED_METADATA = {
|
const INJECTED_METADATA = {
|
||||||
version: expect.any(String),
|
version: expect.any(String),
|
||||||
branch: expect.any(String),
|
branch: expect.any(String),
|
||||||
|
@ -43,6 +44,7 @@ const INJECTED_METADATA = {
|
||||||
buildSha: expect.any(String),
|
buildSha: expect.any(String),
|
||||||
dist: expect.any(Boolean),
|
dist: expect.any(Boolean),
|
||||||
version: expect.any(String),
|
version: expect.any(String),
|
||||||
|
buildDate: new Date(BUILD_DATE).toISOString(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -387,6 +389,15 @@ function renderDarkModeTestCases(
|
||||||
describe('RenderingService', () => {
|
describe('RenderingService', () => {
|
||||||
let service: RenderingService;
|
let service: RenderingService;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
jest.setSystemTime(new Date(BUILD_DATE));
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
service = new RenderingService(mockRenderingServiceParams);
|
service = new RenderingService(mockRenderingServiceParams);
|
||||||
|
|
|
@ -34,6 +34,7 @@ export interface ServerVersion {
|
||||||
build_hash: string;
|
build_hash: string;
|
||||||
build_number: number;
|
build_number: number;
|
||||||
build_snapshot: boolean;
|
build_snapshot: boolean;
|
||||||
|
build_date: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface StatusInfo {
|
export interface StatusInfo {
|
||||||
|
|
|
@ -88,7 +88,7 @@ export const registerStatusRoute = ({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
async (context, req, res) => {
|
async (context, req, res) => {
|
||||||
const { version, buildSha, buildNum } = config.packageInfo;
|
const { version, buildSha, buildNum, buildDate } = config.packageInfo;
|
||||||
const versionWithoutSnapshot = version.replace(SNAPSHOT_POSTFIX, '');
|
const versionWithoutSnapshot = version.replace(SNAPSHOT_POSTFIX, '');
|
||||||
const [overall, coreOverall, core, plugins] = await firstValueFrom(combinedStatus$);
|
const [overall, coreOverall, core, plugins] = await firstValueFrom(combinedStatus$);
|
||||||
|
|
||||||
|
@ -121,6 +121,7 @@ export const registerStatusRoute = ({
|
||||||
build_hash: buildSha,
|
build_hash: buildSha,
|
||||||
build_number: buildNum,
|
build_number: buildNum,
|
||||||
build_snapshot: SNAPSHOT_POSTFIX.test(version),
|
build_snapshot: SNAPSHOT_POSTFIX.test(version),
|
||||||
|
build_date: buildDate.toISOString(),
|
||||||
},
|
},
|
||||||
status: statusInfo,
|
status: statusInfo,
|
||||||
metrics: {
|
metrics: {
|
||||||
|
|
|
@ -45,6 +45,7 @@ export const createTestPackageInfo = ({ dist = true }: { dist?: boolean } = {}):
|
||||||
distributable: dist,
|
distributable: dist,
|
||||||
number: 123456789,
|
number: 123456789,
|
||||||
sha: 'XXXXXX',
|
sha: 'XXXXXX',
|
||||||
|
date: '2023-05-15T23:12:09+0000',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,6 +28,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "feature-v1",
|
"branch": "feature-v1",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 9007199254740991,
|
"buildNum": 9007199254740991,
|
||||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"dist": false,
|
"dist": false,
|
||||||
|
@ -69,6 +70,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "feature-v1",
|
"branch": "feature-v1",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 9007199254740991,
|
"buildNum": 9007199254740991,
|
||||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"dist": false,
|
"dist": false,
|
||||||
|
@ -109,6 +111,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "some-branch",
|
"branch": "some-branch",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 9007199254740991,
|
"buildNum": 9007199254740991,
|
||||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"dist": false,
|
"dist": false,
|
||||||
|
@ -149,6 +152,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "feature-v1",
|
"branch": "feature-v1",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 100,
|
"buildNum": 100,
|
||||||
"buildSha": "feature-v1-build-sha",
|
"buildSha": "feature-v1-build-sha",
|
||||||
"dist": true,
|
"dist": true,
|
||||||
|
@ -189,6 +193,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "feature-v1",
|
"branch": "feature-v1",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 9007199254740991,
|
"buildNum": 9007199254740991,
|
||||||
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"buildSha": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
"dist": false,
|
"dist": false,
|
||||||
|
@ -229,6 +234,7 @@ Env {
|
||||||
},
|
},
|
||||||
"packageInfo": Object {
|
"packageInfo": Object {
|
||||||
"branch": "feature-v1",
|
"branch": "feature-v1",
|
||||||
|
"buildDate": 2023-05-15T23:12:09.000Z,
|
||||||
"buildNum": 100,
|
"buildNum": 100,
|
||||||
"buildSha": "feature-v1-build-sha",
|
"buildSha": "feature-v1-build-sha",
|
||||||
"dist": true,
|
"dist": true,
|
||||||
|
|
|
@ -31,6 +31,7 @@ const packageInfos: RawPackageInfo = {
|
||||||
build: {
|
build: {
|
||||||
number: 42,
|
number: 42,
|
||||||
sha: 'one',
|
sha: 'one',
|
||||||
|
date: '2023-05-15T23:12:09+0000',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const emptyArgv = getEnvOptions();
|
const emptyArgv = getEnvOptions();
|
||||||
|
@ -238,6 +239,7 @@ test('correctly passes context', async () => {
|
||||||
distributable: true,
|
distributable: true,
|
||||||
number: 100,
|
number: 100,
|
||||||
sha: 'feature-v1-build-sha',
|
sha: 'feature-v1-build-sha',
|
||||||
|
date: '2023-05-15T23:12:09+0000',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import { Env, RawPackageInfo } from './env';
|
||||||
import { getEnvOptions } from './internal_mocks';
|
import { getEnvOptions } from './internal_mocks';
|
||||||
|
|
||||||
const REPO_ROOT = '/test/kibanaRoot';
|
const REPO_ROOT = '/test/kibanaRoot';
|
||||||
|
const BUILD_DATE = '2023-05-15T23:12:09+0000';
|
||||||
|
|
||||||
const packageInfos: RawPackageInfo = {
|
const packageInfos: RawPackageInfo = {
|
||||||
branch: 'master',
|
branch: 'master',
|
||||||
|
@ -20,13 +21,23 @@ const packageInfos: RawPackageInfo = {
|
||||||
build: {
|
build: {
|
||||||
number: 42,
|
number: 42,
|
||||||
sha: 'one',
|
sha: 'one',
|
||||||
|
date: new Date(BUILD_DATE).toISOString(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
jest.setSystemTime(new Date(BUILD_DATE));
|
||||||
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockPackage.raw = {};
|
mockPackage.raw = {};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
|
});
|
||||||
|
|
||||||
test('correctly creates default environment in dev mode.', () => {
|
test('correctly creates default environment in dev mode.', () => {
|
||||||
mockPackage.raw = {
|
mockPackage.raw = {
|
||||||
branch: 'some-branch',
|
branch: 'some-branch',
|
||||||
|
@ -51,6 +62,7 @@ test('correctly creates default environment in prod distributable mode.', () =>
|
||||||
distributable: true,
|
distributable: true,
|
||||||
number: 100,
|
number: 100,
|
||||||
sha: 'feature-v1-build-sha',
|
sha: 'feature-v1-build-sha',
|
||||||
|
date: BUILD_DATE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -73,6 +85,7 @@ test('correctly creates default environment in prod non-distributable mode.', ()
|
||||||
distributable: false,
|
distributable: false,
|
||||||
number: 100,
|
number: 100,
|
||||||
sha: 'feature-v1-build-sha',
|
sha: 'feature-v1-build-sha',
|
||||||
|
date: BUILD_DATE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,6 +108,7 @@ test('correctly creates default environment if `--env.name` is supplied.', () =>
|
||||||
distributable: false,
|
distributable: false,
|
||||||
number: 100,
|
number: 100,
|
||||||
sha: 'feature-v1-build-sha',
|
sha: 'feature-v1-build-sha',
|
||||||
|
date: BUILD_DATE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -128,6 +142,7 @@ test('correctly creates environment with constructor.', () => {
|
||||||
distributable: true,
|
distributable: true,
|
||||||
number: 100,
|
number: 100,
|
||||||
sha: 'feature-v1-build-sha',
|
sha: 'feature-v1-build-sha',
|
||||||
|
date: BUILD_DATE,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
getEnvOptions({
|
getEnvOptions({
|
||||||
|
|
|
@ -45,6 +45,7 @@ export interface RawPackageInfo {
|
||||||
distributable?: boolean;
|
distributable?: boolean;
|
||||||
number: number;
|
number: number;
|
||||||
sha: string;
|
sha: string;
|
||||||
|
date: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,6 +123,7 @@ export class Env {
|
||||||
buildSha: isKibanaDistributable ? pkg.build.sha : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
buildSha: isKibanaDistributable ? pkg.build.sha : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
||||||
version: pkg.version,
|
version: pkg.version,
|
||||||
dist: isKibanaDistributable,
|
dist: isKibanaDistributable,
|
||||||
|
buildDate: isKibanaDistributable ? new Date(pkg.build.date) : new Date(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ export interface PackageInfo {
|
||||||
branch: string;
|
branch: string;
|
||||||
buildNum: number;
|
buildNum: number;
|
||||||
buildSha: string;
|
buildSha: string;
|
||||||
|
buildDate: Date;
|
||||||
dist: boolean;
|
dist: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ export interface KibanaPackageJson {
|
||||||
number: number;
|
number: number;
|
||||||
sha: string;
|
sha: string;
|
||||||
distributable?: boolean;
|
distributable?: boolean;
|
||||||
|
date: string;
|
||||||
};
|
};
|
||||||
dependencies: {
|
dependencies: {
|
||||||
[dep: string]: string;
|
[dep: string]: string;
|
||||||
|
|
|
@ -78,6 +78,7 @@ describe('GET /api/status', () => {
|
||||||
buildSha: 'xsha',
|
buildSha: 'xsha',
|
||||||
dist: true,
|
dist: true,
|
||||||
version: '9.9.9-SNAPSHOT',
|
version: '9.9.9-SNAPSHOT',
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
},
|
},
|
||||||
serverName: 'xkibana',
|
serverName: 'xkibana',
|
||||||
uuid: 'xxxx-xxxxx',
|
uuid: 'xxxx-xxxxx',
|
||||||
|
@ -142,6 +143,7 @@ describe('GET /api/status', () => {
|
||||||
build_hash: 'xsha',
|
build_hash: 'xsha',
|
||||||
build_number: 1234,
|
build_number: 1234,
|
||||||
build_snapshot: true,
|
build_snapshot: true,
|
||||||
|
build_date: new Date('2023-05-15T23:12:09.000Z').toISOString(),
|
||||||
});
|
});
|
||||||
const metricsMockValue = await firstValueFrom(metrics.getOpsMetrics$());
|
const metricsMockValue = await firstValueFrom(metrics.getOpsMetrics$());
|
||||||
expect(result.body.metrics).toEqual({
|
expect(result.body.metrics).toEqual({
|
||||||
|
|
|
@ -99,6 +99,7 @@ function pluginInitializerContextMock<T>(config: T = {} as T) {
|
||||||
buildNum: 100,
|
buildNum: 100,
|
||||||
buildSha: 'buildSha',
|
buildSha: 'buildSha',
|
||||||
dist: false,
|
dist: false,
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
},
|
},
|
||||||
instanceUuid: 'instance-uuid',
|
instanceUuid: 'instance-uuid',
|
||||||
configs: ['/some/path/to/config/kibana.yml'],
|
configs: ['/some/path/to/config/kibana.yml'],
|
||||||
|
|
|
@ -31,6 +31,7 @@ const config = new Config(
|
||||||
buildNumber: 1234,
|
buildNumber: 1234,
|
||||||
buildSha: 'abcd1234',
|
buildSha: 'abcd1234',
|
||||||
buildVersion: '8.0.0',
|
buildVersion: '8.0.0',
|
||||||
|
buildDate: '2023-05-15T23:12:09+0000',
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
|
|
|
@ -18,6 +18,7 @@ jest.mock('./version_info', () => ({
|
||||||
buildSha: 'abc1234',
|
buildSha: 'abc1234',
|
||||||
buildVersion: '8.0.0',
|
buildVersion: '8.0.0',
|
||||||
buildNumber: 1234,
|
buildNumber: 1234,
|
||||||
|
buildDate: '2023-05-15T23:12:09+0000',
|
||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -195,6 +196,13 @@ describe('#getBuildSha()', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#getBuildDate()', () => {
|
||||||
|
it('returns the date from the build info', async () => {
|
||||||
|
const config = await setup();
|
||||||
|
expect(config.getBuildDate()).toBe(versionInfo.buildDate);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#isRelease()', () => {
|
describe('#isRelease()', () => {
|
||||||
it('returns true when marked as a release', async () => {
|
it('returns true when marked as a release', async () => {
|
||||||
const config = await setup({ isRelease: true });
|
const config = await setup({ isRelease: true });
|
||||||
|
|
|
@ -228,6 +228,13 @@ export class Config {
|
||||||
return this.versionInfo.buildSha;
|
return this.versionInfo.buildSha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the ISO 8601 date for this build
|
||||||
|
*/
|
||||||
|
getBuildDate() {
|
||||||
|
return this.versionInfo.buildDate;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve a set of paths based from the target directory for this build.
|
* Resolve a set of paths based from the target directory for this build.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,5 +38,6 @@ export async function getVersionInfo({ isRelease, versionQualifier, pkg }: Optio
|
||||||
buildSha,
|
buildSha,
|
||||||
buildVersion,
|
buildVersion,
|
||||||
buildNumber: await getBuildNumber(),
|
buildNumber: await getBuildNumber(),
|
||||||
|
buildDate: new Date().toISOString(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ const config = new Config(
|
||||||
buildNumber: 1234,
|
buildNumber: 1234,
|
||||||
buildSha: 'abcd1234',
|
buildSha: 'abcd1234',
|
||||||
buildVersion: '8.0.0',
|
buildVersion: '8.0.0',
|
||||||
|
buildDate: '2023-05-15T23:12:09.000Z',
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
|
|
|
@ -48,6 +48,7 @@ export const CreatePackageJson: Task = {
|
||||||
sha: config.getBuildSha(),
|
sha: config.getBuildSha(),
|
||||||
distributable: true,
|
distributable: true,
|
||||||
release: config.isRelease,
|
release: config.isRelease,
|
||||||
|
date: config.getBuildDate(),
|
||||||
},
|
},
|
||||||
repository: pkg.repository,
|
repository: pkg.repository,
|
||||||
engines: {
|
engines: {
|
||||||
|
|
|
@ -35,6 +35,7 @@ describe('PdfMaker', () => {
|
||||||
buildSha: 'screenshot-dfdfed0a',
|
buildSha: 'screenshot-dfdfed0a',
|
||||||
dist: false,
|
dist: false,
|
||||||
version: '1000.0.0',
|
version: '1000.0.0',
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
};
|
};
|
||||||
pdf = new PdfMaker(layout, undefined, packageInfo, logger);
|
pdf = new PdfMaker(layout, undefined, packageInfo, logger);
|
||||||
});
|
});
|
||||||
|
|
|
@ -57,6 +57,7 @@ describe('Screenshot Observable Pipeline', () => {
|
||||||
buildSha: 'screenshot-dfdfed0a',
|
buildSha: 'screenshot-dfdfed0a',
|
||||||
dist: false,
|
dist: false,
|
||||||
version: '5000.0.0',
|
version: '5000.0.0',
|
||||||
|
buildDate: new Date('2023-05-15T23:12:09.000Z'),
|
||||||
};
|
};
|
||||||
options = {
|
options = {
|
||||||
browserTimezone: 'UTC',
|
browserTimezone: 'UTC',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue