add EBT Labels through CI (#137530)

* add EBT Labels through CI

* remove prId from labels when it's not running on PR's

Co-authored-by: Spencer <email@spalger.com>

* adds parsing validation

Co-authored-by: Spencer <email@spalger.com>
This commit is contained in:
Baturalp Gurdin 2022-08-02 16:13:50 +02:00 committed by GitHub
parent 514e5a7b50
commit ba6ff3bdb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 84 additions and 24 deletions

View file

@ -20,9 +20,9 @@ export const labelsSchema = schema.object(
ciBuildId: schema.maybe(schema.string()),
ciBuildNumber: schema.maybe(schema.number()),
ftrConfig: schema.maybe(schema.string()),
git_rev: schema.maybe(schema.string()),
gitRev: schema.maybe(schema.string()),
isPr: schema.maybe(schema.boolean()),
prId: schema.maybe(schema.string()),
prId: schema.maybe(schema.number()),
journeyName: schema.maybe(schema.string()),
testBuildId: schema.maybe(schema.string()),
testJobId: schema.maybe(schema.string()),

View file

@ -148,10 +148,10 @@ export default function ({ getService }: PluginFunctionalProviderContext) {
'telemetry.labels.ciBuildJobId (string)',
'telemetry.labels.ciBuildNumber (number)',
'telemetry.labels.ftrConfig (string)',
'telemetry.labels.git_rev (string)',
'telemetry.labels.gitRev (string)',
'telemetry.labels.isPr (boolean)',
'telemetry.labels.journeyName (string)',
'telemetry.labels.prId (string)',
'telemetry.labels.prId (number)',
'telemetry.labels.testBuildId (string)',
'telemetry.labels.testJobId (string)',
'telemetry.hidePrivacyStatement (boolean)',

View file

@ -7,6 +7,7 @@
import uuid from 'uuid';
import { FtrConfigProviderContext } from '@kbn/test';
import { TelemetryConfigLabels } from '@kbn/telemetry-plugin/server/config';
import { services } from '../services';
import { pageObjects } from '../page_objects';
@ -23,6 +24,26 @@ export default async function ({ readConfigFile, log }: FtrConfigProviderContext
log.info(` 👷‍♀️ BUILD ID ${testBuildId}\n 👷 JOB ID ${testJobId}\n 👷‍♂️ EXECUTION ID:${executionId}`);
const prId = process.env.GITHUB_PR_NUMBER
? Number.parseInt(process.env.GITHUB_PR_NUMBER, 10)
: undefined;
if (Number.isNaN(prId)) {
throw new Error('invalid GITHUB_PR_NUMBER environment variable');
}
const telemetryLabels: TelemetryConfigLabels = {
branch: process.env.BUILDKITE_BRANCH,
ciBuildId: process.env.BUILDKITE_BUILD_ID,
ciBuildJobId: process.env.BUILDKITE_JOB_ID,
ciBuildNumber: Number(process.env.BUILDKITE_BUILD_NUMBER) || 0,
gitRev: process.env.BUILDKITE_COMMIT,
isPr: prId !== undefined,
...(prId !== undefined ? { prId } : {}),
testJobId,
testBuildId,
};
return {
services,
pageObjects,
@ -36,7 +57,10 @@ export default async function ({ readConfigFile, log }: FtrConfigProviderContext
},
kbnTestServer: {
...functionalConfig.get('kbnTestServer'),
serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')],
serverArgs: [
...functionalConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels=${JSON.stringify(telemetryLabels)}`,
],
env: {
ELASTIC_APM_ACTIVE: process.env.TEST_PERFORMANCE_PHASE ? 'true' : 'false',
ELASTIC_APM_CONTEXT_PROPAGATION_ONLY: 'false',

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
const JOURNEY_ECOMMERCE_DASHBOARD = 'ecommerce_dashboard';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./ecommerce_dashboard')];
const testFiles = [require.resolve(`./${JOURNEY_ECOMMERCE_DASHBOARD}`)];
const config = {
testFiles,
@ -19,15 +21,19 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/ecommerce_dashboard/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_ECOMMERCE_DASHBOARD}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'ecommerce_dashboard',
journeyName: JOURNEY_ECOMMERCE_DASHBOARD,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_ECOMMERCE_DASHBOARD}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
const JOURNEY_FLIGHT_DASHBOARD = 'flight_dashboard';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./flight_dashboard')];
const testFiles = [require.resolve(`./${JOURNEY_FLIGHT_DASHBOARD}`)];
const config = {
testFiles,
@ -19,15 +21,19 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/flight_dashboard/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_FLIGHT_DASHBOARD}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'flight_dashboard',
journeyName: JOURNEY_FLIGHT_DASHBOARD,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_FLIGHT_DASHBOARD}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
const JOURNEY_LOGIN = 'login';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./login')];
const testFiles = [require.resolve(`./${JOURNEY_LOGIN}`)];
const config = {
testFiles,
@ -42,15 +44,19 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/login/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_LOGIN}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'login',
journeyName: JOURNEY_LOGIN,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_LOGIN}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
const JOURNEY_MANY_FIELDS_DISCOVER = 'many_fields_discover';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./many_fields_discover')];
const testFiles = [require.resolve(`./${JOURNEY_MANY_FIELDS_DISCOVER}`)];
const config = {
testFiles,
@ -19,15 +21,19 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/many_fields_discover/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_MANY_FIELDS_DISCOVER}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'many_fields_discover',
journeyName: JOURNEY_MANY_FIELDS_DISCOVER,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_MANY_FIELDS_DISCOVER}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
const JOURNEY_PROMOTION_TRACKING_DASHBOARD = 'promotion_tracking_dashboard';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./promotion_tracking_dashboard')];
const testFiles = [require.resolve(`./${JOURNEY_PROMOTION_TRACKING_DASHBOARD}`)];
const config = {
testFiles,
@ -42,15 +44,19 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/promotion_tracking_dashboard/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_PROMOTION_TRACKING_DASHBOARD}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'promotion_tracking_dashboard',
journeyName: JOURNEY_PROMOTION_TRACKING_DASHBOARD,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_PROMOTION_TRACKING_DASHBOARD}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),

View file

@ -7,10 +7,12 @@
import { FtrConfigProviderContext } from '@kbn/test';
import { serializeApmGlobalLabels } from '../../utils';
export default async function webLogsDashboard({ readConfigFile, log }: FtrConfigProviderContext) {
const JOURNEY_WEBLOGS_DASHBOARD = 'web_logs_dashboard';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const performanceConfig = await readConfigFile(require.resolve('../base.config'));
const testFiles = [require.resolve('./web_logs_dashboard')];
const testFiles = [require.resolve(`./${JOURNEY_WEBLOGS_DASHBOARD}`)];
const config = {
testFiles,
@ -19,15 +21,19 @@ export default async function webLogsDashboard({ readConfigFile, log }: FtrConfi
const apmGlobalLabels = {
...performanceConfig.get('kbnTestServer').env.ELASTIC_APM_GLOBAL_LABELS,
ftrConfig: `x-pack/test/performance/tests/journeys/web_logs_dashboard/config.ts`,
ftrConfig: `x-pack/test/performance/tests/journeys/${JOURNEY_WEBLOGS_DASHBOARD}/config.ts`,
performancePhase: process.env.TEST_PERFORMANCE_PHASE,
journeyName: 'web_logs_dashboard',
journeyName: JOURNEY_WEBLOGS_DASHBOARD,
};
return {
...config,
kbnTestServer: {
...config.kbnTestServer,
serverArgs: [
...performanceConfig.get('kbnTestServer.serverArgs'),
`--telemetry.labels.journeyName=${JOURNEY_WEBLOGS_DASHBOARD}`,
],
env: {
...config.kbnTestServer.env,
ELASTIC_APM_GLOBAL_LABELS: serializeApmGlobalLabels(apmGlobalLabels),