mirror of
https://github.com/actions/setup-go
synced 2025-01-03 18:52:40 +00:00
Add GOCACHE AND GOMODCACHE symlink on Windows
Use D drive for faster cache restore Signed-off-by: Anton Troshin <anton@diagrid.io>
This commit is contained in:
parent
41dfa10bad
commit
28b19b8019
2 changed files with 50 additions and 0 deletions
22
dist/setup/index.js
vendored
22
dist/setup/index.js
vendored
|
@ -88259,6 +88259,7 @@ const sys = __importStar(__nccwpck_require__(5632));
|
||||||
const fs_1 = __importDefault(__nccwpck_require__(7147));
|
const fs_1 = __importDefault(__nccwpck_require__(7147));
|
||||||
const os_1 = __importDefault(__nccwpck_require__(2037));
|
const os_1 = __importDefault(__nccwpck_require__(2037));
|
||||||
const utils_1 = __nccwpck_require__(1314);
|
const utils_1 = __nccwpck_require__(1314);
|
||||||
|
const cache_utils_1 = __nccwpck_require__(1678);
|
||||||
function getGo(versionSpec_1, checkLatest_1, auth_1) {
|
function getGo(versionSpec_1, checkLatest_1, auth_1) {
|
||||||
return __awaiter(this, arguments, void 0, function* (versionSpec, checkLatest, auth, arch = os_1.default.arch()) {
|
return __awaiter(this, arguments, void 0, function* (versionSpec, checkLatest, auth, arch = os_1.default.arch()) {
|
||||||
var _a;
|
var _a;
|
||||||
|
@ -88383,6 +88384,27 @@ function cacheWindowsDir(extPath, tool, version, arch) {
|
||||||
const defaultToolCacheCompleteFile = `${defaultToolCacheDir}.complete`;
|
const defaultToolCacheCompleteFile = `${defaultToolCacheDir}.complete`;
|
||||||
fs_1.default.symlinkSync(actualToolCacheCompleteFile, defaultToolCacheCompleteFile, 'file');
|
fs_1.default.symlinkSync(actualToolCacheCompleteFile, defaultToolCacheCompleteFile, 'file');
|
||||||
core.info(`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`);
|
core.info(`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`);
|
||||||
|
const packageManager = 'default';
|
||||||
|
const packageManagerInfo = yield (0, cache_utils_1.getPackageManagerInfo)(packageManager);
|
||||||
|
const cacheDirectoryPaths = yield (0, cache_utils_1.getCacheDirectoryPath)(packageManagerInfo);
|
||||||
|
if (!cacheDirectoryPaths) {
|
||||||
|
throw new Error(`Could not get cache folder paths.`);
|
||||||
|
}
|
||||||
|
// replace cache directory path with actual cache directory path
|
||||||
|
const actualCacheDirectoryPaths = cacheDirectoryPaths.map(path => {
|
||||||
|
return {
|
||||||
|
defaultPath: path,
|
||||||
|
actualPath: path.replace('D:', 'C:').replace('d:', 'c:')
|
||||||
|
};
|
||||||
|
});
|
||||||
|
// iterate through actual cache directory paths and make links
|
||||||
|
for (const cachePath of actualCacheDirectoryPaths) {
|
||||||
|
if (!fs_1.default.existsSync(cachePath.actualPath)) {
|
||||||
|
fs_1.default.mkdirSync(path.dirname(cachePath.actualPath), { recursive: true });
|
||||||
|
}
|
||||||
|
fs_1.default.symlinkSync(cachePath.actualPath, cachePath.defaultPath, 'junction');
|
||||||
|
core.info(`Created link ${cachePath.defaultPath} => ${cachePath.actualPath}`);
|
||||||
|
}
|
||||||
// make outer code to continue using toolcache as if it were installed on c:
|
// make outer code to continue using toolcache as if it were installed on c:
|
||||||
// restore toolcache root to default drive c:
|
// restore toolcache root to default drive c:
|
||||||
process.env['RUNNER_TOOL_CACHE'] = defaultToolCacheRoot;
|
process.env['RUNNER_TOOL_CACHE'] = defaultToolCacheRoot;
|
||||||
|
|
|
@ -7,6 +7,7 @@ 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 {StableReleaseAlias} from './utils';
|
||||||
|
import {getCacheDirectoryPath, getPackageManagerInfo} from './cache-utils';
|
||||||
|
|
||||||
type InstallationType = 'dist' | 'manifest';
|
type InstallationType = 'dist' | 'manifest';
|
||||||
|
|
||||||
|
@ -214,6 +215,33 @@ async function cacheWindowsDir(
|
||||||
`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`
|
`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const packageManager = 'default';
|
||||||
|
const packageManagerInfo = await getPackageManagerInfo(packageManager);
|
||||||
|
const cacheDirectoryPaths = await getCacheDirectoryPath(packageManagerInfo);
|
||||||
|
if (!cacheDirectoryPaths) {
|
||||||
|
throw new Error(`Could not get cache folder paths.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// replace cache directory path with actual cache directory path
|
||||||
|
const actualCacheDirectoryPaths = cacheDirectoryPaths.map(path => {
|
||||||
|
return {
|
||||||
|
defaultPath: path,
|
||||||
|
actualPath: path.replace('D:', 'C:').replace('d:', 'c:')
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// iterate through actual cache directory paths and make links
|
||||||
|
for (const cachePath of actualCacheDirectoryPaths) {
|
||||||
|
if (!fs.existsSync(cachePath.actualPath)) {
|
||||||
|
fs.mkdirSync(path.dirname(cachePath.actualPath), {recursive: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.symlinkSync(cachePath.actualPath, cachePath.defaultPath, 'junction');
|
||||||
|
core.info(
|
||||||
|
`Created link ${cachePath.defaultPath} => ${cachePath.actualPath}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// make outer code to continue using toolcache as if it were installed on c:
|
// make outer code to continue using toolcache as if it were installed on c:
|
||||||
// restore toolcache root to default drive c:
|
// restore toolcache root to default drive c:
|
||||||
process.env['RUNNER_TOOL_CACHE'] = defaultToolCacheRoot;
|
process.env['RUNNER_TOOL_CACHE'] = defaultToolCacheRoot;
|
||||||
|
|
Loading…
Reference in a new issue