mirror of
https://github.com/actions/setup-go.git
synced 2025-04-23 17:40:50 +00:00
Merge efdf435b25
into 883490dfd0
This commit is contained in:
commit
5cfefff9bb
9 changed files with 141 additions and 24 deletions
|
@ -3,6 +3,7 @@ import * as cache from '@actions/cache';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as cacheUtils from '../src/cache-utils';
|
import * as cacheUtils from '../src/cache-utils';
|
||||||
import {PackageManagerInfo} from '../src/package-managers';
|
import {PackageManagerInfo} from '../src/package-managers';
|
||||||
|
import * as utils from '../src/utils';
|
||||||
|
|
||||||
describe('getCommandOutput', () => {
|
describe('getCommandOutput', () => {
|
||||||
//Arrange
|
//Arrange
|
||||||
|
@ -209,3 +210,76 @@ describe('isCacheFeatureAvailable', () => {
|
||||||
expect(warningSpy).toHaveBeenCalledWith(warningMessage);
|
expect(warningSpy).toHaveBeenCalledWith(warningMessage);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Detect environment', () => {
|
||||||
|
it('"RUNNER_ENVIRONMENT" = "github-hosted" should be hosted environment', () => {
|
||||||
|
delete process.env['AGENT_ISSELFHOSTED'];
|
||||||
|
process.env['RUNNER_ENVIRONMENT'] = 'github-hosted';
|
||||||
|
expect(utils.isSelfHosted()).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('"RUNNER_ENVIRONMENT" = "hosted" should be self-hosted environment', () => {
|
||||||
|
delete process.env['AGENT_ISSELFHOSTED'];
|
||||||
|
process.env['RUNNER_ENVIRONMENT'] = 'hosted';
|
||||||
|
expect(utils.isSelfHosted()).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('"AGENT_ISSELFHOSTED" = "0" should be hosted environment', () => {
|
||||||
|
process.env['AGENT_ISSELFHOSTED'] = '0';
|
||||||
|
delete process.env['RUNNER_ENVIRONMENT'];
|
||||||
|
expect(utils.isSelfHosted()).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('"AGENT_ISSELFHOSTED" = "0" should be self-hosted environment', () => {
|
||||||
|
process.env['AGENT_ISSELFHOSTED'] = '1';
|
||||||
|
delete process.env['RUNNER_ENVIRONMENT'];
|
||||||
|
expect(utils.isSelfHosted()).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('unset "RUNNER_ENVIRONMENT" and "AGENT_ISSELFHOSTED" should be self-hosted environment', () => {
|
||||||
|
delete process.env['AGENT_ISSELFHOSTED'];
|
||||||
|
delete process.env['RUNNER_ENVIRONMENT'];
|
||||||
|
expect(utils.isSelfHosted()).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Default cache values', () => {
|
||||||
|
const inputSpy = jest.spyOn(utils, 'isSelfHosted');
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
delete process.env['INPUT_CACHE'];
|
||||||
|
});
|
||||||
|
|
||||||
|
it('default cache should be false in self-hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(true);
|
||||||
|
expect(cacheUtils.getCacheInput()).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cache should be false if set to false in self-hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(true);
|
||||||
|
process.env['INPUT_CACHE'] = 'false';
|
||||||
|
expect(cacheUtils.getCacheInput()).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cache should be tue if set to true in self-hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(true);
|
||||||
|
process.env['INPUT_CACHE'] = 'true';
|
||||||
|
expect(cacheUtils.getCacheInput()).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('default cache should be handled by action.yml default in hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(false);
|
||||||
|
expect(() => cacheUtils.getCacheInput()).toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cache should be false if set to false in hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(false);
|
||||||
|
process.env['INPUT_CACHE'] = 'true';
|
||||||
|
expect(cacheUtils.getCacheInput()).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('cache should be tue if set to true in hosted environment', () => {
|
||||||
|
inputSpy.mockReturnValueOnce(false);
|
||||||
|
process.env['INPUT_CACHE'] = 'false';
|
||||||
|
expect(cacheUtils.getCacheInput()).toBeFalsy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
33
dist/cache-save/index.js
vendored
33
dist/cache-save/index.js
vendored
|
@ -58521,10 +58521,8 @@ function run() {
|
||||||
}
|
}
|
||||||
exports.run = run;
|
exports.run = run;
|
||||||
const cachePackages = () => __awaiter(void 0, void 0, void 0, function* () {
|
const cachePackages = () => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
const cacheInput = core.getBooleanInput('cache');
|
if (!cache_utils_1.getCacheInput())
|
||||||
if (!cacheInput) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
const packageManager = 'default';
|
const packageManager = 'default';
|
||||||
const state = core.getState(constants_1.State.CacheMatchedKey);
|
const state = core.getState(constants_1.State.CacheMatchedKey);
|
||||||
const primaryKey = core.getState(constants_1.State.CachePrimaryKey);
|
const primaryKey = core.getState(constants_1.State.CachePrimaryKey);
|
||||||
|
@ -58595,11 +58593,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.isCacheFeatureAvailable = exports.isGhes = exports.getCacheDirectoryPath = exports.getPackageManagerInfo = exports.getCommandOutput = void 0;
|
exports.getCacheInput = exports.isCacheFeatureAvailable = exports.isGhes = exports.getCacheDirectoryPath = exports.getPackageManagerInfo = exports.getCommandOutput = void 0;
|
||||||
const cache = __importStar(__nccwpck_require__(7799));
|
const cache = __importStar(__nccwpck_require__(7799));
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const exec = __importStar(__nccwpck_require__(1514));
|
const exec = __importStar(__nccwpck_require__(1514));
|
||||||
const package_managers_1 = __nccwpck_require__(6663);
|
const package_managers_1 = __nccwpck_require__(6663);
|
||||||
|
const utils_1 = __nccwpck_require__(1314);
|
||||||
const getCommandOutput = (toolCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
const getCommandOutput = (toolCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
let { stdout, stderr, exitCode } = yield exec.getExecOutput(toolCommand, undefined, { ignoreReturnCode: true });
|
let { stdout, stderr, exitCode } = yield exec.getExecOutput(toolCommand, undefined, { ignoreReturnCode: true });
|
||||||
if (exitCode) {
|
if (exitCode) {
|
||||||
|
@ -58654,6 +58653,13 @@ function isCacheFeatureAvailable() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||||
|
const getCacheInput = () => {
|
||||||
|
// for self-hosted environment turn off cache by default
|
||||||
|
if (utils_1.isSelfHosted() && core.getInput('cache') === '')
|
||||||
|
return false;
|
||||||
|
return core.getBooleanInput('cache');
|
||||||
|
};
|
||||||
|
exports.getCacheInput = getCacheInput;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
@ -58693,6 +58699,25 @@ exports.supportedPackageManagers = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 1314:
|
||||||
|
/***/ ((__unused_webpack_module, exports) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
|
exports.isSelfHosted = exports.StableReleaseAlias = void 0;
|
||||||
|
var StableReleaseAlias;
|
||||||
|
(function (StableReleaseAlias) {
|
||||||
|
StableReleaseAlias["Stable"] = "stable";
|
||||||
|
StableReleaseAlias["OldStable"] = "oldstable";
|
||||||
|
})(StableReleaseAlias = exports.StableReleaseAlias || (exports.StableReleaseAlias = {}));
|
||||||
|
const isSelfHosted = () => process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
||||||
|
process.env['AGENT_ISSELFHOSTED'] !== '0';
|
||||||
|
exports.isSelfHosted = isSelfHosted;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 2877:
|
/***/ 2877:
|
||||||
|
|
20
dist/setup/index.js
vendored
20
dist/setup/index.js
vendored
|
@ -61265,11 +61265,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.isCacheFeatureAvailable = exports.isGhes = exports.getCacheDirectoryPath = exports.getPackageManagerInfo = exports.getCommandOutput = void 0;
|
exports.getCacheInput = exports.isCacheFeatureAvailable = exports.isGhes = exports.getCacheDirectoryPath = exports.getPackageManagerInfo = exports.getCommandOutput = void 0;
|
||||||
const cache = __importStar(__nccwpck_require__(7799));
|
const cache = __importStar(__nccwpck_require__(7799));
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const exec = __importStar(__nccwpck_require__(1514));
|
const exec = __importStar(__nccwpck_require__(1514));
|
||||||
const package_managers_1 = __nccwpck_require__(6663);
|
const package_managers_1 = __nccwpck_require__(6663);
|
||||||
|
const utils_1 = __nccwpck_require__(1314);
|
||||||
const getCommandOutput = (toolCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
const getCommandOutput = (toolCommand) => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
let { stdout, stderr, exitCode } = yield exec.getExecOutput(toolCommand, undefined, { ignoreReturnCode: true });
|
let { stdout, stderr, exitCode } = yield exec.getExecOutput(toolCommand, undefined, { ignoreReturnCode: true });
|
||||||
if (exitCode) {
|
if (exitCode) {
|
||||||
|
@ -61324,6 +61325,13 @@ function isCacheFeatureAvailable() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
exports.isCacheFeatureAvailable = isCacheFeatureAvailable;
|
||||||
|
const getCacheInput = () => {
|
||||||
|
// for self-hosted environment turn off cache by default
|
||||||
|
if (utils_1.isSelfHosted() && core.getInput('cache') === '')
|
||||||
|
return false;
|
||||||
|
return core.getBooleanInput('cache');
|
||||||
|
};
|
||||||
|
exports.getCacheInput = getCacheInput;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
@ -61495,8 +61503,7 @@ function cacheWindowsDir(extPath, tool, version, arch) {
|
||||||
if (os_1.default.platform() !== 'win32')
|
if (os_1.default.platform() !== 'win32')
|
||||||
return false;
|
return false;
|
||||||
// make sure the action runs in the hosted environment
|
// make sure the action runs in the hosted environment
|
||||||
if (process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
if (utils_1.isSelfHosted())
|
||||||
process.env['AGENT_ISSELFHOSTED'] === '1')
|
|
||||||
return false;
|
return false;
|
||||||
const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'];
|
const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'];
|
||||||
if (!defaultToolCacheRoot)
|
if (!defaultToolCacheRoot)
|
||||||
|
@ -61789,7 +61796,7 @@ function run() {
|
||||||
// If not supplied then problem matchers will still be setup. Useful for self-hosted.
|
// If not supplied then problem matchers will still be setup. Useful for self-hosted.
|
||||||
//
|
//
|
||||||
const versionSpec = resolveVersionInput();
|
const versionSpec = resolveVersionInput();
|
||||||
const cache = core.getBooleanInput('cache');
|
const cache = cache_utils_1.getCacheInput();
|
||||||
core.info(`Setup go version spec ${versionSpec}`);
|
core.info(`Setup go version spec ${versionSpec}`);
|
||||||
let arch = core.getInput('architecture');
|
let arch = core.getInput('architecture');
|
||||||
if (!arch) {
|
if (!arch) {
|
||||||
|
@ -61975,12 +61982,15 @@ exports.getArch = getArch;
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.StableReleaseAlias = void 0;
|
exports.isSelfHosted = exports.StableReleaseAlias = void 0;
|
||||||
var StableReleaseAlias;
|
var StableReleaseAlias;
|
||||||
(function (StableReleaseAlias) {
|
(function (StableReleaseAlias) {
|
||||||
StableReleaseAlias["Stable"] = "stable";
|
StableReleaseAlias["Stable"] = "stable";
|
||||||
StableReleaseAlias["OldStable"] = "oldstable";
|
StableReleaseAlias["OldStable"] = "oldstable";
|
||||||
})(StableReleaseAlias = exports.StableReleaseAlias || (exports.StableReleaseAlias = {}));
|
})(StableReleaseAlias = exports.StableReleaseAlias || (exports.StableReleaseAlias = {}));
|
||||||
|
const isSelfHosted = () => process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
||||||
|
process.env['AGENT_ISSELFHOSTED'] !== '0';
|
||||||
|
exports.isSelfHosted = isSelfHosted;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
|
@ -17,8 +17,8 @@ We don't pursue the goal to provide wide customization of caching in scope of `a
|
||||||
|
|
||||||
# Decision
|
# Decision
|
||||||
- Add `cache` input parameter to `actions/setup-go`. For now, input will accept the following values:
|
- Add `cache` input parameter to `actions/setup-go`. For now, input will accept the following values:
|
||||||
- `true` - enable caching for go dependencies
|
- `true` - enable caching for go dependencies. This value will be set as default value for hosted runners.
|
||||||
- `false`- disable caching for go dependencies. This value will be set as default value
|
- `false`- disable caching for go dependencies. This value will be set as default value for self-hosted runners.
|
||||||
- Cache feature will be disabled by default to make sure that we don't break existing customers. We will consider enabling cache by default in next major releases
|
- Cache feature will be disabled by default to make sure that we don't break existing customers. We will consider enabling cache by default in next major releases
|
||||||
- Action will try to search a go.sum files in the repository and throw error in the scenario that it was not found
|
- Action will try to search a go.sum files in the repository and throw error in the scenario that it was not found
|
||||||
- The hash of found file will be used as cache key (the same approach like [actions/cache](https://github.com/actions/cache/blob/main/examples.md#go---modules) recommends)
|
- The hash of found file will be used as cache key (the same approach like [actions/cache](https://github.com/actions/cache/blob/main/examples.md#go---modules) recommends)
|
||||||
|
|
|
@ -2,7 +2,11 @@ import * as core from '@actions/core';
|
||||||
import * as cache from '@actions/cache';
|
import * as cache from '@actions/cache';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import {State} from './constants';
|
import {State} from './constants';
|
||||||
import {getCacheDirectoryPath, getPackageManagerInfo} from './cache-utils';
|
import {
|
||||||
|
getCacheDirectoryPath,
|
||||||
|
getPackageManagerInfo,
|
||||||
|
getCacheInput
|
||||||
|
} from './cache-utils';
|
||||||
|
|
||||||
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
|
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
|
||||||
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to
|
// @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to
|
||||||
|
@ -28,10 +32,7 @@ export async function run() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const cachePackages = async () => {
|
const cachePackages = async () => {
|
||||||
const cacheInput = core.getBooleanInput('cache');
|
if (!getCacheInput()) return;
|
||||||
if (!cacheInput) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const packageManager = 'default';
|
const packageManager = 'default';
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ import * as cache from '@actions/cache';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
import {supportedPackageManagers, PackageManagerInfo} from './package-managers';
|
import {supportedPackageManagers, PackageManagerInfo} from './package-managers';
|
||||||
|
import {isSelfHosted} from './utils';
|
||||||
|
|
||||||
export const getCommandOutput = async (toolCommand: string) => {
|
export const getCommandOutput = async (toolCommand: string) => {
|
||||||
let {stdout, stderr, exitCode} = await exec.getExecOutput(
|
let {stdout, stderr, exitCode} = await exec.getExecOutput(
|
||||||
|
@ -83,3 +84,9 @@ export function isCacheFeatureAvailable(): boolean {
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
export const getCacheInput = (): boolean => {
|
||||||
|
// for self-hosted environment turn off cache by default
|
||||||
|
if (isSelfHosted() && core.getInput('cache') === '') return false;
|
||||||
|
|
||||||
|
return core.getBooleanInput('cache');
|
||||||
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@ import * as httpm from '@actions/http-client';
|
||||||
import * as sys from './system';
|
import * as sys from './system';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import {StableReleaseAlias} from './utils';
|
import {isSelfHosted, StableReleaseAlias} from './utils';
|
||||||
|
|
||||||
type InstallationType = 'dist' | 'manifest';
|
type InstallationType = 'dist' | 'manifest';
|
||||||
|
|
||||||
|
@ -175,11 +175,7 @@ async function cacheWindowsDir(
|
||||||
if (os.platform() !== 'win32') return false;
|
if (os.platform() !== 'win32') return false;
|
||||||
|
|
||||||
// make sure the action runs in the hosted environment
|
// make sure the action runs in the hosted environment
|
||||||
if (
|
if (isSelfHosted()) return false;
|
||||||
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
|
||||||
process.env['AGENT_ISSELFHOSTED'] === '1'
|
|
||||||
)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'];
|
const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'];
|
||||||
if (!defaultToolCacheRoot) return false;
|
if (!defaultToolCacheRoot) return false;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import * as installer from './installer';
|
||||||
import * as semver from 'semver';
|
import * as semver from 'semver';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import {restoreCache} from './cache-restore';
|
import {restoreCache} from './cache-restore';
|
||||||
import {isCacheFeatureAvailable} from './cache-utils';
|
import {isCacheFeatureAvailable, getCacheInput} from './cache-utils';
|
||||||
import cp from 'child_process';
|
import cp from 'child_process';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
|
@ -17,7 +17,7 @@ export async function run() {
|
||||||
//
|
//
|
||||||
const versionSpec = resolveVersionInput();
|
const versionSpec = resolveVersionInput();
|
||||||
|
|
||||||
const cache = core.getBooleanInput('cache');
|
const cache = getCacheInput();
|
||||||
core.info(`Setup go version spec ${versionSpec}`);
|
core.info(`Setup go version spec ${versionSpec}`);
|
||||||
|
|
||||||
let arch = core.getInput('architecture');
|
let arch = core.getInput('architecture');
|
||||||
|
|
|
@ -2,3 +2,7 @@ export enum StableReleaseAlias {
|
||||||
Stable = 'stable',
|
Stable = 'stable',
|
||||||
OldStable = 'oldstable'
|
OldStable = 'oldstable'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const isSelfHosted = (): boolean =>
|
||||||
|
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
||||||
|
process.env['AGENT_ISSELFHOSTED'] !== '0';
|
||||||
|
|
Loading…
Add table
Reference in a new issue