@grafana/toolkit: add package versions to the ci report (#18751)

This commit is contained in:
Ryan McKinley 2019-08-28 07:01:28 -07:00 committed by GitHub
parent 5fcbc33710
commit e9c1b8b3f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 4 deletions

View File

@ -9,7 +9,7 @@ import { PluginMeta } from '@grafana/ui';
import execa = require('execa'); import execa = require('execa');
import path = require('path'); import path = require('path');
import fs from 'fs'; import fs from 'fs';
import { getPackageDetails, findImagesInFolder, appendPluginHistory } from '../../plugins/utils'; import { getPackageDetails, findImagesInFolder, appendPluginHistory, getGrafanaVersions } from '../../plugins/utils';
import { import {
job, job,
getJobFolder, getJobFolder,
@ -318,6 +318,7 @@ const pluginReportRunner: TaskRunner<PluginCIOptions> = async ({ upload }) => {
const pluginJsonFile = path.resolve(ciDir, 'dist', 'plugin.json'); const pluginJsonFile = path.resolve(ciDir, 'dist', 'plugin.json');
console.log('Load info from: ' + pluginJsonFile); console.log('Load info from: ' + pluginJsonFile);
const pluginMeta = getPluginJson(pluginJsonFile); const pluginMeta = getPluginJson(pluginJsonFile);
const report: PluginBuildReport = { const report: PluginBuildReport = {
plugin: pluginMeta, plugin: pluginMeta,
@ -326,6 +327,7 @@ const pluginReportRunner: TaskRunner<PluginCIOptions> = async ({ upload }) => {
coverage: agregateCoverageInfo(), coverage: agregateCoverageInfo(),
tests: agregateTestInfo(), tests: agregateTestInfo(),
artifactsBaseURL: await getCircleDownloadBaseURL(), artifactsBaseURL: await getCircleDownloadBaseURL(),
grafanaVersion: getGrafanaVersions(),
}; };
const pr = getPullRequestNumber(); const pr = getPullRequestNumber();
if (pr) { if (pr) {

View File

@ -23,12 +23,21 @@ export const job = process.env.CIRCLE_JOB || getJobFromProcessArgv();
export const getPluginBuildInfo = async (): Promise<PluginBuildInfo> => { export const getPluginBuildInfo = async (): Promise<PluginBuildInfo> => {
if (process.env.CIRCLE_SHA1) { if (process.env.CIRCLE_SHA1) {
return Promise.resolve({ const info: PluginBuildInfo = {
time: Date.now(), time: Date.now(),
repo: process.env.CIRCLE_REPOSITORY_URL, repo: process.env.CIRCLE_REPOSITORY_URL,
branch: process.env.CIRCLE_BRANCH, branch: process.env.CIRCLE_BRANCH,
hash: process.env.CIRCLE_SHA1, hash: process.env.CIRCLE_SHA1,
}); };
const pr = getPullRequestNumber();
const build = getBuildNumber();
if (pr) {
info.pr = pr;
}
if (build) {
info.number = build;
}
return Promise.resolve(info);
} }
const branch = await execa('git', ['rev-parse', '--abbrev-ref', 'HEAD']); const branch = await execa('git', ['rev-parse', '--abbrev-ref', 'HEAD']);
const hash = await execa('git', ['rev-parse', 'HEAD']); const hash = await execa('git', ['rev-parse', 'HEAD']);

View File

@ -1,5 +1,5 @@
import { PluginMeta, PluginBuildInfo } from '@grafana/ui'; import { PluginMeta, PluginBuildInfo } from '@grafana/ui';
import { DataFrame } from '@grafana/data'; import { DataFrame, KeyValue } from '@grafana/data';
export interface PluginPackageDetails { export interface PluginPackageDetails {
plugin: ZipFileInfo; plugin: ZipFileInfo;
@ -14,6 +14,7 @@ export interface PluginBuildReport {
tests: TestResultsInfo[]; tests: TestResultsInfo[];
pullRequest?: number; pullRequest?: number;
artifactsBaseURL?: string; artifactsBaseURL?: string;
grafanaVersion?: KeyValue<string>;
} }
export interface JobInfo { export interface JobInfo {

View File

@ -1,10 +1,25 @@
import execa from 'execa'; import execa from 'execa';
import path from 'path'; import path from 'path';
import fs from 'fs'; import fs from 'fs';
import { KeyValue } from '@grafana/data';
import { PluginDevInfo, ExtensionSize, ZipFileInfo, PluginBuildReport, PluginHistory } from './types'; import { PluginDevInfo, ExtensionSize, ZipFileInfo, PluginBuildReport, PluginHistory } from './types';
const md5File = require('md5-file'); const md5File = require('md5-file');
export function getGrafanaVersions(): KeyValue<string> {
const dir = path.resolve(process.cwd(), 'node_modules', '@grafana');
const versions: KeyValue = {};
try {
fs.readdirSync(dir).forEach(file => {
const json = require(path.resolve(dir, file, 'package.json'));
versions[file] = json.version;
});
} catch (err) {
console.warn('Error reading toolkit versions', err);
}
return versions;
}
export function getFileSizeReportInFolder(dir: string, info?: ExtensionSize): ExtensionSize { export function getFileSizeReportInFolder(dir: string, info?: ExtensionSize): ExtensionSize {
const acc: ExtensionSize = info ? info : {}; const acc: ExtensionSize = info ? info : {};