Jelajahi Sumber

toolkit: run make for backend plugins (#19029)

Ryan McKinley 6 tahun lalu
induk
melakukan
e4e7719428

+ 6 - 2
packages/grafana-toolkit/src/cli/index.ts

@@ -156,9 +156,13 @@ export const run = (includeInternalScripts = false) => {
 
 
   program
   program
     .command('plugin:ci-build')
     .command('plugin:ci-build')
-    .option('--backend <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 => {
     .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)({
       await execTask(ciBuildPluginTask)({
         backend: cmd.backend,
         backend: cmd.backend,
       });
       });

+ 9 - 9
packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts

@@ -35,7 +35,7 @@ import { runEndToEndTests } from '../../plugins/e2e/launcher';
 import { getEndToEndSettings } from '../../plugins/index';
 import { getEndToEndSettings } from '../../plugins/index';
 
 
 export interface PluginCIOptions {
 export interface PluginCIOptions {
-  backend?: string;
+  backend?: boolean;
   full?: boolean;
   full?: boolean;
   upload?: boolean;
   upload?: boolean;
 }
 }
@@ -58,14 +58,14 @@ const buildPluginRunner: TaskRunner<PluginCIOptions> = async ({ backend }) => {
   fs.mkdirSync(workDir);
   fs.mkdirSync(workDir);
 
 
   if (backend) {
   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 {
   } else {
     // Do regular build process with coverage
     // Do regular build process with coverage
     await pluginBuildRunner({ coverage: true });
     await pluginBuildRunner({ coverage: true });