Compare commits

...

8 Commits

Author SHA1 Message Date
rgsubh
59d5057182 Merge branch 'releases/v1' into docfix 2020-05-14 10:08:41 +05:30
shigupt202
38fc288351 Merge pull request #13 from Azure/users/shigupt/fixingHelmLatestReleases
Updating the logic for downloading latest Helm version
2020-05-13 21:19:43 +05:30
Shivam Gupta
bdf9ba4fc5 Adding semver to package.json 2020-05-13 19:36:58 +05:30
Raghavendra S
d56b96d256 review comments fix 2020-05-13 09:00:19 +05:30
Raghavendra S
5801d81e70 append v to version incase it does not already include 2020-05-11 13:45:17 +05:30
Shivam Gupta
70e7df295a Updating the logic for downloading latest Helm version 2020-05-11 11:46:27 +05:30
Raghavendra S
1a980ffbb5 Chnaged the documentation to sepcify v before 'version' 2020-05-07 13:58:41 +05:30
Shashank Barsin
7a1bf8ea91 Merge pull request #6 from Azure/users/ansheno/helmfixv1
Users/ansheno/helmfixv1
2019-11-26 18:22:08 +05:30
4 changed files with 74 additions and 47 deletions

View File

@@ -1,7 +1,7 @@
# Setup Helm # Setup Helm
#### Install a specific version of helm binary on the runner. #### Install a specific version of helm binary on the runner.
Acceptable values are latest or any semantic version string like 1.15.0. Use this action in workflow to define which version of helm will be used. Acceptable values are latest or any semantic version string like v2.16.7 Use this action in workflow to define which version of helm will be used.
```yaml ```yaml
- uses: azure/setup-helm@v1 - uses: azure/setup-helm@v1

View File

@@ -22,11 +22,12 @@ const os = __importStar(require("os"));
const path = __importStar(require("path")); const path = __importStar(require("path"));
const util = __importStar(require("util")); const util = __importStar(require("util"));
const fs = __importStar(require("fs")); const fs = __importStar(require("fs"));
const semver = __importStar(require("semver"));
const toolCache = __importStar(require("@actions/tool-cache")); const toolCache = __importStar(require("@actions/tool-cache"));
const core = __importStar(require("@actions/core")); const core = __importStar(require("@actions/core"));
const helmToolName = 'helm'; const helmToolName = 'helm';
const stableHelmVersion = 'v2.14.1'; const stableHelmVersion = 'v3.2.1';
const helmLatestReleaseUrl = 'https://api.github.com/repos/helm/helm/releases/latest'; const helmAllReleasesUrl = 'https://api.github.com/repos/helm/helm/releases';
function getExecutableExtension() { function getExecutableExtension() {
if (os.type().match(/^Win/)) { if (os.type().match(/^Win/)) {
return '.exe'; return '.exe';
@@ -46,17 +47,28 @@ function getHelmDownloadURL(version) {
} }
function getStableHelmVersion() { function getStableHelmVersion() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
return toolCache.downloadTool(helmLatestReleaseUrl).then((downloadPath) => { try {
const response = JSON.parse(fs.readFileSync(downloadPath, 'utf8').toString().trim()); const downloadPath = yield toolCache.downloadTool(helmAllReleasesUrl);
if (!response.tag_name) { const responseArray = JSON.parse(fs.readFileSync(downloadPath, 'utf8').toString().trim());
return stableHelmVersion; let latestHelmVersion = semver.clean(stableHelmVersion);
responseArray.forEach(response => {
if (response && response.tag_name) {
let currentHelmVerison = semver.clean(response.tag_name.toString());
if (currentHelmVerison) {
if (currentHelmVerison.toString().indexOf('rc') == -1 && semver.gt(currentHelmVerison, latestHelmVersion)) {
//If current helm version is not a pre release and is greater than latest helm version
latestHelmVersion = currentHelmVerison;
}
}
} }
return response.tag_name;
}, (error) => {
core.debug(error);
core.warning(util.format("Failed to read latest kubectl version from stable.txt. From URL %s. Using default stable version %s", helmLatestReleaseUrl, stableHelmVersion));
return stableHelmVersion;
}); });
latestHelmVersion = "v" + latestHelmVersion;
return latestHelmVersion;
}
catch (error) {
core.warning(util.format("Cannot get the latest Helm info from %s. Error %s. Using default Helm version %s.", helmAllReleasesUrl, error, stableHelmVersion));
}
return stableHelmVersion;
}); });
} }
var walkSync = function (dir, filelist, fileToFind) { var walkSync = function (dir, filelist, fileToFind) {
@@ -118,6 +130,9 @@ function run() {
if (version.toLocaleLowerCase() === 'latest') { if (version.toLocaleLowerCase() === 'latest') {
version = yield getStableHelmVersion(); version = yield getStableHelmVersion();
} }
else if (!version.toLocaleLowerCase().startsWith('v')) {
version = 'v' + version;
}
let cachedPath = yield downloadHelm(version); let cachedPath = yield downloadHelm(version);
try { try {
if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) { if (!process.env['PATH'].startsWith(path.dirname(cachedPath))) {

View File

@@ -9,7 +9,8 @@
"@actions/tool-cache": "1.1.2", "@actions/tool-cache": "1.1.2",
"@actions/io": "^1.0.0", "@actions/io": "^1.0.0",
"@actions/core": "^1.0.0", "@actions/core": "^1.0.0",
"@actions/exec": "^1.0.0" "@actions/exec": "^1.0.0",
"semver": "^6.1.0"
}, },
"main": "lib/run.js", "main": "lib/run.js",
"scripts": { "scripts": {

View File

@@ -5,13 +5,14 @@ import * as os from 'os';
import * as path from 'path'; import * as path from 'path';
import * as util from 'util'; import * as util from 'util';
import * as fs from 'fs'; import * as fs from 'fs';
import * as semver from 'semver';
import * as toolCache from '@actions/tool-cache'; import * as toolCache from '@actions/tool-cache';
import * as core from '@actions/core'; import * as core from '@actions/core';
const helmToolName = 'helm'; const helmToolName = 'helm';
const stableHelmVersion = 'v2.14.1'; const stableHelmVersion = 'v3.2.1';
const helmLatestReleaseUrl = 'https://api.github.com/repos/helm/helm/releases/latest'; const helmAllReleasesUrl = 'https://api.github.com/repos/helm/helm/releases';
function getExecutableExtension(): string { function getExecutableExtension(): string {
if (os.type().match(/^Win/)) { if (os.type().match(/^Win/)) {
@@ -35,19 +36,28 @@ function getHelmDownloadURL(version: string): string {
} }
async function getStableHelmVersion(): Promise<string> { async function getStableHelmVersion(): Promise<string> {
return toolCache.downloadTool(helmLatestReleaseUrl).then((downloadPath) => { try {
const response = JSON.parse(fs.readFileSync(downloadPath, 'utf8').toString().trim()); const downloadPath = await toolCache.downloadTool(helmAllReleasesUrl);
if (!response.tag_name) const responseArray = JSON.parse(fs.readFileSync(downloadPath, 'utf8').toString().trim());
{ let latestHelmVersion = semver.clean(stableHelmVersion);
return stableHelmVersion; responseArray.forEach(response => {
if (response && response.tag_name) {
let currentHelmVerison = semver.clean(response.tag_name.toString());
if (currentHelmVerison) {
if (currentHelmVerison.toString().indexOf('rc') == -1 && semver.gt(currentHelmVerison, latestHelmVersion)) {
//If current helm version is not a pre release and is greater than latest helm version
latestHelmVersion = currentHelmVerison;
}
}
}
});
latestHelmVersion = "v" + latestHelmVersion;
return latestHelmVersion;
} catch (error) {
core.warning(util.format("Cannot get the latest Helm info from %s. Error %s. Using default Helm version %s.", helmAllReleasesUrl, error, stableHelmVersion));
} }
return response.tag_name;
}, (error) => {
core.debug(error);
core.warning(util.format("Failed to read latest kubectl version from stable.txt. From URL %s. Using default stable version %s", helmLatestReleaseUrl, stableHelmVersion));
return stableHelmVersion; return stableHelmVersion;
});
} }
@@ -60,8 +70,7 @@ var walkSync = function(dir, filelist, fileToFind) {
} }
else { else {
core.debug(file); core.debug(file);
if(file == fileToFind) if (file == fileToFind) {
{
filelist.push(path.join(dir, file)); filelist.push(path.join(dir, file));
} }
} }
@@ -110,6 +119,8 @@ async function run() {
let version = core.getInput('version', { 'required': true }); let version = core.getInput('version', { 'required': true });
if (version.toLocaleLowerCase() === 'latest') { if (version.toLocaleLowerCase() === 'latest') {
version = await getStableHelmVersion(); version = await getStableHelmVersion();
} else if (!version.toLocaleLowerCase().startsWith('v')) {
version = 'v' + version;
} }
let cachedPath = await downloadHelm(version); let cachedPath = await downloadHelm(version);