diff --git a/packages/grafana-toolkit/src/cli/index.ts b/packages/grafana-toolkit/src/cli/index.ts index 4b28ee9ba21..8d683c2eb34 100644 --- a/packages/grafana-toolkit/src/cli/index.ts +++ b/packages/grafana-toolkit/src/cli/index.ts @@ -194,9 +194,12 @@ export const run = (includeInternalScripts = false) => { program .command('plugin:ci-package') + .option('--signing-admin', 'Use the admin API endpoint for signing the manifest.', false) .description('Create a zip packages for the plugin') .action(async cmd => { - await execTask(ciPackagePluginTask)({}); + await execTask(ciPackagePluginTask)({ + signingAdmin: cmd.signingAdmin, + }); }); program diff --git a/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts b/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts index 317c409c6e5..29b09c65055 100644 --- a/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts +++ b/packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts @@ -26,6 +26,7 @@ const rimraf = promisify(rimrafCallback); export interface PluginCIOptions { finish?: boolean; upload?: boolean; + signingAdmin?: boolean; } /** @@ -106,7 +107,7 @@ export const ciBuildPluginDocsTask = new Task('Build Plugin Doc * 2. zip it into packages in `~/ci/packages` * 3. prepare grafana environment in: `~/ci/grafana-test-env` */ -const packagePluginRunner: TaskRunner = async () => { +const packagePluginRunner: TaskRunner = async ({ signingAdmin }) => { const start = Date.now(); const ciDir = getCiFolder(); const packagesDir = path.resolve(ciDir, 'packages'); @@ -161,9 +162,12 @@ const packagePluginRunner: TaskRunner = async () => { } }); - // Write a manifest.txt file in the dist folder + // Write a MANIFEST.txt file in the dist folder + // By using the --signing-admin flag the plugin doesn't need to be in the plugins database to be signed, + // however it requires an Admin API key. try { - await execa('grabpl', ['build-plugin-manifest', distContentDir]); + const grabplCommandFlags = signingAdmin ? ['build-plugin-manifest', '--signing-admin'] : ['build-plugin-manifest']; + await execa('grabpl', [...grabplCommandFlags, distContentDir]); } catch (err) { console.warn(`Error signing manifest: ${distContentDir}`, err); }