From 36743b530c65861ded09dae72b557da7c46f5629 Mon Sep 17 00:00:00 2001 From: Alex Szabo Date: Tue, 2 Sep 2025 14:41:10 +0200 Subject: [PATCH 1/2] make vscode step cacheable --- .../commands/bootstrap/bootstrap_command.mjs | 29 +++++++++++-------- moon.yml | 13 +++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs b/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs index 94532fa99673b..864147b8184bb 100644 --- a/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs +++ b/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs @@ -62,7 +62,6 @@ export const command = { const quiet = args.getBooleanValue('quiet') ?? false; const vscodeConfig = !IS_CI && (args.getBooleanValue('vscode') ?? !process.env.KBN_BOOTSTRAP_NO_VSCODE); - const allowRoot = args.getBooleanValue('allow-root') ?? false; const forceInstall = args.getBooleanValue('force-install'); const shouldInstall = forceInstall || !(await areNodeModulesPresent()) || !(await checkYarnIntegrity(log)); @@ -107,16 +106,16 @@ export const command = { await time('pre-build webpack bundles for packages', async () => { log.info('pre-build webpack bundles for packages'); - await run( - 'yarn', - ['kbn', 'build-shared'] - .concat(quiet ? ['--quiet'] : []) - .concat(forceInstall ? ['--no-cache'] : []) - .concat(allowRoot ? ['--allow-root'] : []), - { - pipe: true, - } - ); + const moonArgs = ['run', ':build-webpack']; + if (quiet) { + moonArgs.push('--quiet'); + } + if (forceInstall) { + moonArgs.push('--updateCache', '--force'); + } + await run('moon', moonArgs, { + pipe: !quiet, + }); log.success('shared webpack bundles built'); }); @@ -135,10 +134,16 @@ export const command = { vscodeConfig ? time('update vscode config', async () => { // Update vscode settings - await run('node', ['scripts/update_vscode_config']); + const moonArgs = ['run', 'kibana:update-vscode-config']; + if (forceInstall) { + moonArgs.push('--force', '--updateCache'); + } + await run('moon', moonArgs); log.success('vscode config updated'); }) : undefined, ]); + + log.success('bootstrap complete'); }, }; diff --git a/moon.yml b/moon.yml index e4977413e6d89..9e77cd3142744 100644 --- a/moon.yml +++ b/moon.yml @@ -18,6 +18,19 @@ tasks: cache: false bootstrap: script: yarn kbn bootstrap + update-vscode-config: + script: node scripts/update_vscode_config.js + inputs: + - "packages/kbn-managed-vscode-config/src/**/*.ts" + - "packages/kbn-managed-vscode-config/index.ts" + - "packages/kbn-managed-vscode-config-cli/index.ts" + - "packages/kbn-kibana-manifest-schema/src/**/*.ts" + outputs: + - ".vscode/settings.json" + - ".vscode/kibana-*.json" + options: + cache: true + workspace: inheritedTasks: From f6757e8d0acc26f8199c5f220af239fa4d5c29b9 Mon Sep 17 00:00:00 2001 From: Alex Szabo Date: Tue, 2 Sep 2025 14:46:02 +0200 Subject: [PATCH 2/2] scramble command order, so parallel execution can happen --- .../commands/bootstrap/bootstrap_command.mjs | 43 ++++++++++--------- .../src/validate_yarn_lock.ts | 2 - 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs b/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs index 864147b8184bb..6a53f6e1d30c8 100644 --- a/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs +++ b/kbn_pm/src/commands/bootstrap/bootstrap_command.mjs @@ -104,6 +104,28 @@ export const command = { } }); + const backgroundTasks = [ + validate + ? time('validate dependencies', async () => { + // now that deps are installed we can import `@kbn/yarn-lock-validator` + const { readYarnLock, validateDependencies } = External['@kbn/yarn-lock-validator'](); + await validateDependencies(log, await readYarnLock()); + log.success('yarn.lock analysis completed without any issues'); + }) + : undefined, + vscodeConfig + ? time('update vscode config', async () => { + // Update vscode settings + const moonArgs = ['run', 'kibana:update-vscode-config']; + if (forceInstall) { + moonArgs.push('--force', '--updateCache'); + } + await run('moon', moonArgs); + log.success('vscode config updated'); + }) + : undefined, + ]; + await time('pre-build webpack bundles for packages', async () => { log.info('pre-build webpack bundles for packages'); const moonArgs = ['run', ':build-webpack']; @@ -123,26 +145,7 @@ export const command = { await sortPackageJson(log); }); - await Promise.all([ - validate - ? time('validate dependencies', async () => { - // now that deps are installed we can import `@kbn/yarn-lock-validator` - const { readYarnLock, validateDependencies } = External['@kbn/yarn-lock-validator'](); - await validateDependencies(log, await readYarnLock()); - }) - : undefined, - vscodeConfig - ? time('update vscode config', async () => { - // Update vscode settings - const moonArgs = ['run', 'kibana:update-vscode-config']; - if (forceInstall) { - moonArgs.push('--force', '--updateCache'); - } - await run('moon', moonArgs); - log.success('vscode config updated'); - }) - : undefined, - ]); + await Promise.all(backgroundTasks); log.success('bootstrap complete'); }, diff --git a/packages/kbn-yarn-lock-validator/src/validate_yarn_lock.ts b/packages/kbn-yarn-lock-validator/src/validate_yarn_lock.ts index e2a840be3e06e..33b77d6be7fc0 100644 --- a/packages/kbn-yarn-lock-validator/src/validate_yarn_lock.ts +++ b/packages/kbn-yarn-lock-validator/src/validate_yarn_lock.ts @@ -113,6 +113,4 @@ export async function validateDependencies(log: SomeDevLog, yarnLock: YarnLock) process.exit(1); } - - log.success('yarn.lock analysis completed without any issues'); }