mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Various fixes and requests for toolkit: 1) Added toolkit to the alpine docker image, so we can get latest fixes without having to re-release 2) Removed cp from e2d docker image 3) Change github client to allow to specify an owner so it's not "grafana" only 4) Toolkit refers to grafana-ui and grafana-data "next", rather than canary * added toolkit to e2e docker image * Added tools to the e2e image for building/deploying oracle * added shasum * removing toolkit from images
122 lines
5.8 KiB
JavaScript
122 lines
5.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var tslib_1 = require("tslib");
|
|
var getPluginId_1 = require("../../config/utils/getPluginId");
|
|
var pluginValidation_1 = require("../../config/utils/pluginValidation");
|
|
var env_1 = require("../../plugins/env");
|
|
var path = require("path");
|
|
var fs = require("fs");
|
|
// @ts-ignore
|
|
// import execa = require('execa');
|
|
var githubClient_1 = tslib_1.__importDefault(require("./githubClient"));
|
|
var resolveContentType = function (extension) {
|
|
if (extension.startsWith('.')) {
|
|
extension = extension.substr(1);
|
|
}
|
|
switch (extension) {
|
|
case 'zip':
|
|
return 'application/zip';
|
|
case 'json':
|
|
return 'application/json';
|
|
case 'sha1':
|
|
return 'text/plain';
|
|
default:
|
|
return 'application/octet-stream';
|
|
}
|
|
};
|
|
var GitHubRelease = /** @class */ (function () {
|
|
function GitHubRelease(token, username, repository, releaseNotes, commitHash) {
|
|
this.token = token;
|
|
this.username = username;
|
|
this.repository = repository;
|
|
this.releaseNotes = releaseNotes;
|
|
this.commitHash = commitHash;
|
|
this.git = new githubClient_1.default({
|
|
required: true,
|
|
repo: repository,
|
|
});
|
|
}
|
|
GitHubRelease.prototype.publishAssets = function (srcLocation, destUrl) {
|
|
var _this = this;
|
|
// Add the assets. Loop through files in the ci/dist folder and upload each asset.
|
|
var files = fs.readdirSync(srcLocation);
|
|
return files.map(function (file) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
var fileStat, fileData;
|
|
return tslib_1.__generator(this, function (_a) {
|
|
fileStat = fs.statSync(srcLocation + "/" + file);
|
|
fileData = fs.readFileSync(srcLocation + "/" + file);
|
|
return [2 /*return*/, this.git.client.post(destUrl + "?name=" + file, fileData, {
|
|
headers: {
|
|
'Content-Type': resolveContentType(path.extname(file)),
|
|
'Content-Length': fileStat.size,
|
|
},
|
|
maxContentLength: fileStat.size * 2 * 1024 * 1024,
|
|
})];
|
|
});
|
|
}); });
|
|
};
|
|
GitHubRelease.prototype.release = function () {
|
|
var _a, _b, _c, _d;
|
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
var ciDir, distDir, distContentDir, pluginJsonFile, pluginInfo, PUBLISH_DIR, commitHash, latestRelease, reason_1, newReleaseResponse, publishPromises, reason_2;
|
|
return tslib_1.__generator(this, function (_e) {
|
|
switch (_e.label) {
|
|
case 0:
|
|
ciDir = env_1.getCiFolder();
|
|
distDir = path.resolve(ciDir, 'dist');
|
|
distContentDir = path.resolve(distDir, getPluginId_1.getPluginId());
|
|
pluginJsonFile = path.resolve(distContentDir, 'plugin.json');
|
|
pluginInfo = pluginValidation_1.getPluginJson(pluginJsonFile).info;
|
|
PUBLISH_DIR = path.resolve(env_1.getCiFolder(), 'packages');
|
|
commitHash = this.commitHash || ((_a = pluginInfo.build) === null || _a === void 0 ? void 0 : _a.hash);
|
|
_e.label = 1;
|
|
case 1:
|
|
_e.trys.push([1, 5, , 6]);
|
|
return [4 /*yield*/, this.git.client.get("releases/tags/v" + pluginInfo.version)];
|
|
case 2:
|
|
latestRelease = _e.sent();
|
|
if (!(latestRelease.data.tag_name === "v" + pluginInfo.version)) return [3 /*break*/, 4];
|
|
return [4 /*yield*/, this.git.client.delete("releases/" + latestRelease.data.id)];
|
|
case 3:
|
|
_e.sent();
|
|
_e.label = 4;
|
|
case 4: return [3 /*break*/, 6];
|
|
case 5:
|
|
reason_1 = _e.sent();
|
|
if (reason_1.response.status !== 404) {
|
|
// 404 just means no release found. Not an error. Anything else though, re throw the error
|
|
throw reason_1;
|
|
}
|
|
return [3 /*break*/, 6];
|
|
case 6:
|
|
_e.trys.push([6, 9, , 10]);
|
|
return [4 /*yield*/, this.git.client.post('releases', {
|
|
tag_name: "v" + pluginInfo.version,
|
|
target_commitish: commitHash,
|
|
name: "v" + pluginInfo.version,
|
|
body: this.releaseNotes,
|
|
draft: false,
|
|
prerelease: false,
|
|
})];
|
|
case 7:
|
|
newReleaseResponse = _e.sent();
|
|
publishPromises = this.publishAssets(PUBLISH_DIR, "https://uploads.github.com/repos/" + this.username + "/" + this.repository + "/releases/" + newReleaseResponse.data.id + "/assets");
|
|
return [4 /*yield*/, Promise.all(publishPromises)];
|
|
case 8:
|
|
_e.sent();
|
|
return [3 /*break*/, 10];
|
|
case 9:
|
|
reason_2 = _e.sent();
|
|
console.log(reason_2);
|
|
// Rethrow the error so that we can trigger a non-zero exit code to circle-ci
|
|
throw reason_2;
|
|
case 10: return [2 /*return*/];
|
|
}
|
|
});
|
|
});
|
|
};
|
|
return GitHubRelease;
|
|
}());
|
|
exports.GitHubRelease = GitHubRelease;
|
|
//# sourceMappingURL=githubRelease.js.map7027e10521e9
|