mirror of https://github.com/grafana/grafana
Chore: Toolkit fixes to use toolkit for release (#24951)
* 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 imagespull/25012/head
parent
ff465396ab
commit
b7d5912ca8
@ -1,6 +1,6 @@ |
||||
FROM alpine |
||||
USER root |
||||
ADD scripts scripts |
||||
ADD install /usr/local/bin |
||||
ADD install /usr/local |
||||
WORKDIR scripts |
||||
RUN ./deploy.sh |
||||
|
||||
@ -0,0 +1,121 @@ |
||||
"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
|
||||
@ -1,5 +1,5 @@ |
||||
FROM debian:buster-slim |
||||
USER root |
||||
ADD scripts scripts |
||||
ADD install /usr/local/bin |
||||
ADD install /usr/local |
||||
RUN cd scripts && ./deploy.sh |
||||
|
||||
@ -1,7 +0,0 @@ |
||||
#!/bin/sh |
||||
|
||||
if [ "$1" == "-rn" ]; then |
||||
false | busybox cp -i -r "$2" "$3" 2>/dev/null |
||||
else |
||||
busybox cp $* |
||||
fi |
||||
Loading…
Reference in new issue