mirror of
https://github.com/hashicorp/setup-terraform.git
synced 2025-12-16 16:42:35 +00:00
Document pre-release behavior (#73)
* Add user agent reporting to terraform download * Upgrade js-releases dependency
This commit is contained in:
parent
32c4f59108
commit
5d2ec201a9
5 changed files with 21 additions and 18 deletions
|
|
@ -147,8 +147,8 @@ The action supports the following inputs:
|
||||||
- `terraform_version` - (optional) The version of Terraform CLI to install. Instead of a full version string,
|
- `terraform_version` - (optional) The version of Terraform CLI to install. Instead of a full version string,
|
||||||
you can also specify a constraint string (see [Semver Ranges](https://www.npmjs.com/package/semver#ranges)
|
you can also specify a constraint string (see [Semver Ranges](https://www.npmjs.com/package/semver#ranges)
|
||||||
for available range specifications). Examples are: `<0.14.0`, `~0.13.0`, `0.13.x` (all three installing
|
for available range specifications). Examples are: `<0.14.0`, `~0.13.0`, `0.13.x` (all three installing
|
||||||
the latest available 0.13 version). Prerelease versions are always ignored. The special value of `latest`
|
the latest available 0.13 version). Prerelease versions can be specified and a range will stay within the
|
||||||
installs the latest version of Terraform CLI. Defaults to `latest`.
|
given tag such as `beta` or `rc`. If no version is given, it will default to `latest`.
|
||||||
|
|
||||||
- `terraform_wrapper` - (optional) Whether to install a wrapper to wrap subsequent calls of
|
- `terraform_wrapper` - (optional) Whether to install a wrapper to wrap subsequent calls of
|
||||||
the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs
|
the `terraform` binary and expose its STDOUT, STDERR, and exit code as outputs
|
||||||
|
|
|
||||||
19
dist/index.js
vendored
19
dist/index.js
vendored
|
|
@ -2347,7 +2347,7 @@ async function run () {
|
||||||
const osArch = os.arch();
|
const osArch = os.arch();
|
||||||
|
|
||||||
core.debug(`Finding releases for Terraform version ${version}`);
|
core.debug(`Finding releases for Terraform version ${version}`);
|
||||||
const release = await releases.getRelease('terraform', version);
|
const release = await releases.getRelease('terraform', version, 'GitHub Action: Setup Terraform');
|
||||||
const platform = mapOS(osPlatform);
|
const platform = mapOS(osPlatform);
|
||||||
const arch = mapArch(osArch);
|
const arch = mapArch(osArch);
|
||||||
core.debug(`Getting build for Terraform version ${release.version}: ${platform} ${arch}`);
|
core.debug(`Getting build for Terraform version ${release.version}: ${platform} ${arch}`);
|
||||||
|
|
@ -52497,27 +52497,30 @@ class Release {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Release = Release;
|
exports.Release = Release;
|
||||||
function getRelease(product, version, userAgent) {
|
function getRelease(product, version, userAgent, includePrerelease) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const validVersion = semver.validRange(version); // "latest" will return invalid but that's ok because we'll select it by default
|
const validVersion = semver.validRange(version, { includePrerelease, loose: true }); // "latest" will return invalid but that's ok because we'll select it by default
|
||||||
const indexUrl = `${releasesUrl}/${product}/index.json`;
|
const indexUrl = `${releasesUrl}/${product}/index.json`;
|
||||||
const headers = userAgent ? { 'User-Agent': userAgent } : null;
|
const headers = userAgent ? { 'User-Agent': userAgent } : null;
|
||||||
const body = yield utils_1.httpsRequest(indexUrl, { headers });
|
const body = yield utils_1.httpsRequest(indexUrl, { headers });
|
||||||
const response = JSON.parse(body);
|
const response = JSON.parse(body);
|
||||||
let release;
|
let release;
|
||||||
if (!validVersion) { // pick the latest release
|
if (!validVersion) { // pick the latest release (prereleases will be skipped for safety, set an explicit version instead)
|
||||||
version = Object.keys(response.versions).sort(semver.rcompare)[0];
|
const releaseVersions = Object.keys(response.versions).filter(v => !semver.prerelease(v));
|
||||||
|
version = releaseVersions.sort((a, b) => semver.rcompare(a, b))[0];
|
||||||
release = new Release(response.versions[version]);
|
release = new Release(response.versions[version]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
release = matchVersion(response.versions, validVersion);
|
release = matchVersion(response.versions, validVersion, includePrerelease);
|
||||||
}
|
}
|
||||||
return release;
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.getRelease = getRelease;
|
exports.getRelease = getRelease;
|
||||||
function matchVersion(versions, range) {
|
function matchVersion(versions, range, includePrerelease) {
|
||||||
const version = semver.maxSatisfying(Object.keys(versions), range);
|
// If a prerelease version range is given, it will match in that series (0.14-rc0, 0.14-rc1)
|
||||||
|
// https://www.npmjs.com/package/semver#prerelease-tags
|
||||||
|
const version = semver.maxSatisfying(Object.keys(versions), range, { includePrerelease });
|
||||||
if (version) {
|
if (version) {
|
||||||
return new Release(versions[version]);
|
return new Release(versions[version]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ async function run () {
|
||||||
const osArch = os.arch();
|
const osArch = os.arch();
|
||||||
|
|
||||||
core.debug(`Finding releases for Terraform version ${version}`);
|
core.debug(`Finding releases for Terraform version ${version}`);
|
||||||
const release = await releases.getRelease('terraform', version);
|
const release = await releases.getRelease('terraform', version, 'GitHub Action: Setup Terraform');
|
||||||
const platform = mapOS(osPlatform);
|
const platform = mapOS(osPlatform);
|
||||||
const arch = mapArch(osArch);
|
const arch = mapArch(osArch);
|
||||||
core.debug(`Getting build for Terraform version ${release.version}: ${platform} ${arch}`);
|
core.debug(`Getting build for Terraform version ${release.version}: ${platform} ${arch}`);
|
||||||
|
|
|
||||||
12
package-lock.json
generated
12
package-lock.json
generated
|
|
@ -808,9 +808,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@hashicorp/js-releases": {
|
"@hashicorp/js-releases": {
|
||||||
"version": "1.1.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@hashicorp/js-releases/-/js-releases-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@hashicorp/js-releases/-/js-releases-1.2.0.tgz",
|
||||||
"integrity": "sha512-Dk6k9nuAZUwRbtLcUFXDSPECuK9Xh6QPt2x2qv8m2DKz7ksY1jv7YnZAYk/H195Eq2Puxd4UK83XSA9PnWdQKg==",
|
"integrity": "sha512-SXMzKOVdLKHRGSpCVowKC2vUAsvc/cZm0WRd5mOiDn/7SkTC9hFIuGUo/e8yXriJj/FbZepm/30cTKBWY/qH5w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/semver": "^7.3.1",
|
"@types/semver": "^7.3.1",
|
||||||
"del": "^5.1.0",
|
"del": "^5.1.0",
|
||||||
|
|
@ -5968,9 +5968,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"run-parallel": {
|
"run-parallel": {
|
||||||
"version": "1.1.9",
|
"version": "1.1.10",
|
||||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
|
||||||
"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q=="
|
"integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw=="
|
||||||
},
|
},
|
||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
"@actions/github": "^4.0.0",
|
"@actions/github": "^4.0.0",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^1.6.1",
|
"@actions/tool-cache": "^1.6.1",
|
||||||
"@hashicorp/js-releases": "^1.1.0"
|
"@hashicorp/js-releases": "^1.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@zeit/ncc": "0.22.1",
|
"@zeit/ncc": "0.22.1",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue