diff --git a/packages/grafana-toolkit/src/cli/index.ts b/packages/grafana-toolkit/src/cli/index.ts index 99b17e428b6..ad2fa7c1c1b 100644 --- a/packages/grafana-toolkit/src/cli/index.ts +++ b/packages/grafana-toolkit/src/cli/index.ts @@ -156,9 +156,13 @@ export const run = (includeInternalScripts = false) => { program .command('plugin:ci-build') - .option('--backend ', 'For backend task, which backend to run') - .description('Build the plugin, leaving artifacts in /dist') + .option('--backend', 'Run Makefile for backend task', false) + .description('Build the plugin, leaving results in /dist and /coverage') .action(async cmd => { + if (typeof cmd === 'string') { + console.error(`Invalid argument: ${cmd}\nSee --help for a list of available commands.`); + process.exit(1); + } await execTask(ciBuildPluginTask)({ backend: cmd.backend, }); diff --git a/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts b/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts index efef4cd549b..f8388df6381 100644 --- a/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts +++ b/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts @@ -35,7 +35,7 @@ import { runEndToEndTests } from '../../plugins/e2e/launcher'; import { getEndToEndSettings } from '../../plugins/index'; export interface PluginCIOptions { - backend?: string; + backend?: boolean; full?: boolean; upload?: boolean; } @@ -58,14 +58,14 @@ const buildPluginRunner: TaskRunner = async ({ backend }) => { fs.mkdirSync(workDir); if (backend) { - console.log('TODO, backend support?'); - fs.mkdirSync(path.resolve(process.cwd(), 'dist')); - const file = path.resolve(process.cwd(), 'dist', `README_${backend}.txt`); - fs.writeFile(file, `TODO... build bakend plugin: ${backend}!`, err => { - if (err) { - throw new Error('Unable to write: ' + file); - } - }); + const makefile = path.resolve(process.cwd(), 'Makefile'); + if (!fs.existsSync(makefile)) { + throw new Error(`Missing: ${makefile}. A Makefile is required for backend plugins.`); + } + + // Run plugin-ci task + const exe = await execa('make', ['backend-plugin-ci']); + console.log(exe.stdout); } else { // Do regular build process with coverage await pluginBuildRunner({ coverage: true });