mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Toolkit: Provide update plugin to allow plugins configuration to normalize (#23540)
* Toolkit: Update plugin added - To normalize an bring a plugins "managed" config up to date * Added changes for filter only release * changed name * updated test for checking files in manifest
This commit is contained in:
committed by
GitHub
parent
32390c1c39
commit
c5f21bdae9
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
entrypoint = () => {
|
const entrypoint = () => {
|
||||||
const defaultEntryPoint = '../src/cli/index.js';
|
const defaultEntryPoint = '../src/cli/index.js';
|
||||||
const toolkitDirectory = `${process.env['PWD']}/node_modules/@grafana/toolkit`;
|
const toolkitDirectory = `${process.env['PWD']}/node_modules/@grafana/toolkit`;
|
||||||
|
|
||||||
@@ -25,4 +25,4 @@ entrypoint = () => {
|
|||||||
return defaultEntryPoint;
|
return defaultEntryPoint;
|
||||||
};
|
};
|
||||||
|
|
||||||
require(entrypoint()).run();
|
require(entrypoint());
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
var path = require('path') ;
|
var path = require('path');
|
||||||
|
|
||||||
// This bin is used for cli executed internally
|
// This bin is used for cli executed internally
|
||||||
|
|
||||||
var tsProjectPath = path.resolve(__dirname, '../tsconfig.json');
|
var tsProjectPath = path.resolve(__dirname, '../tsconfig.json');
|
||||||
|
|
||||||
require('ts-node').register({
|
require('ts-node').register({
|
||||||
project: tsProjectPath,
|
project: tsProjectPath,
|
||||||
transpileOnly: true
|
transpileOnly: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
require('../src/cli/index.ts').run(true);
|
require('../src/cli/index.ts').run(true);
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ aliases:
|
|||||||
- &filter-only-master
|
- &filter-only-master
|
||||||
branches:
|
branches:
|
||||||
only: master
|
only: master
|
||||||
|
- &filter-only-release
|
||||||
|
branches:
|
||||||
|
only: /^v[1-9]*[0-9]+\.[1-9]*[0-9]+\.x$/
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
@@ -24,11 +27,11 @@ workflows:
|
|||||||
type: approval
|
type: approval
|
||||||
requires:
|
requires:
|
||||||
- test_integration
|
- test_integration
|
||||||
filters: *filter-only-master
|
filters: *filter-only-release
|
||||||
- publish_github_release:
|
- publish_github_release:
|
||||||
requires:
|
requires:
|
||||||
- approve_release
|
- approve_release
|
||||||
filters: *filter-only-master
|
filters: *filter-only-release
|
||||||
|
|
||||||
executors:
|
executors:
|
||||||
default_exec: # declares a reusable executor
|
default_exec: # declares a reusable executor
|
||||||
@@ -15,6 +15,7 @@ import { searchTestDataSetupTask } from './tasks/searchTestDataSetup';
|
|||||||
import { closeMilestoneTask } from './tasks/closeMilestone';
|
import { closeMilestoneTask } from './tasks/closeMilestone';
|
||||||
import { pluginDevTask } from './tasks/plugin.dev';
|
import { pluginDevTask } from './tasks/plugin.dev';
|
||||||
import { githubPublishTask } from './tasks/plugin.utils';
|
import { githubPublishTask } from './tasks/plugin.utils';
|
||||||
|
import { pluginUpdateTask } from './tasks/plugin.update';
|
||||||
import { ciBuildPluginTask, ciBuildPluginDocsTask, ciPackagePluginTask, ciPluginReportTask } from './tasks/plugin.ci';
|
import { ciBuildPluginTask, ciBuildPluginDocsTask, ciPackagePluginTask, ciPluginReportTask } from './tasks/plugin.ci';
|
||||||
import { buildPackageTask } from './tasks/package.build';
|
import { buildPackageTask } from './tasks/package.build';
|
||||||
import { pluginCreateTask } from './tasks/plugin.create';
|
import { pluginCreateTask } from './tasks/plugin.create';
|
||||||
@@ -228,6 +229,13 @@ export const run = (includeInternalScripts = false) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
program
|
||||||
|
.command('plugin:update-circleci')
|
||||||
|
.description('Update plugin')
|
||||||
|
.action(async cmd => {
|
||||||
|
await execTask(pluginUpdateTask)({});
|
||||||
|
});
|
||||||
|
|
||||||
// Test the manifest creation
|
// Test the manifest creation
|
||||||
program
|
program
|
||||||
.command('manifest')
|
.command('manifest')
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ describe('Manifest', () => {
|
|||||||
"plugin.create.ts",
|
"plugin.create.ts",
|
||||||
"plugin.dev.ts",
|
"plugin.dev.ts",
|
||||||
"plugin.tests.ts",
|
"plugin.tests.ts",
|
||||||
|
"plugin.update.ts",
|
||||||
"plugin.utils.ts",
|
"plugin.utils.ts",
|
||||||
"precommit.ts",
|
"precommit.ts",
|
||||||
"searchTestDataSetup.ts",
|
"searchTestDataSetup.ts",
|
||||||
|
|||||||
23
packages/grafana-toolkit/src/cli/tasks/plugin.update.ts
Normal file
23
packages/grafana-toolkit/src/cli/tasks/plugin.update.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { Task, TaskRunner } from './task';
|
||||||
|
import { useSpinner } from '../utils/useSpinner';
|
||||||
|
import fs = require('fs');
|
||||||
|
import path = require('path');
|
||||||
|
|
||||||
|
interface UpdatePluginTask {}
|
||||||
|
|
||||||
|
const updateCiConfig = useSpinner<any>('Updating CircleCI config', async () => {
|
||||||
|
const ciConfigPath = path.join(process.cwd(), '.circleci');
|
||||||
|
if (!fs.existsSync(ciConfigPath)) {
|
||||||
|
fs.mkdirSync(ciConfigPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sourceFile = path.join('node_modules/@grafana/toolkit/config/circleci', 'config.yml');
|
||||||
|
const destFile = path.join(ciConfigPath, 'config.yml');
|
||||||
|
fs.copyFileSync(sourceFile, destFile);
|
||||||
|
});
|
||||||
|
|
||||||
|
const pluginUpdateRunner: TaskRunner<UpdatePluginTask> = async () => {
|
||||||
|
await updateCiConfig({});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const pluginUpdateTask = new Task<UpdatePluginTask>('Update Plugin', pluginUpdateRunner);
|
||||||
Reference in New Issue
Block a user