mirror of
https://github.com/actions/setup-go
synced 2024-11-09 23:22:41 +00:00
Merge pull request #411 from galargh/fix/windows-hostedtoolcache
Fix hosted tool cache usage on windows
This commit is contained in:
commit
d085b4fe57
3 changed files with 38 additions and 1 deletions
24
.github/workflows/windows-validation.yml
vendored
24
.github/workflows/windows-validation.yml
vendored
|
@ -105,10 +105,32 @@ jobs:
|
||||||
fi
|
fi
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: 'Drive D: should not have Go installation, cache: ${{ matrix.cache}}'
|
- name: 'Drive D: should not have Go installation, cache: ${{ matrix.cache }}'
|
||||||
run: |
|
run: |
|
||||||
if [ -e 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64' ];then
|
if [ -e 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64' ];then
|
||||||
echo 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64 should not exist for hosted version of go';
|
echo 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64 should not exist for hosted version of go';
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
hostedtoolcache:
|
||||||
|
name: 'Validate if hostedtoolcache works as expected'
|
||||||
|
runs-on: windows-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
cache: [false]
|
||||||
|
go: [1.20.1]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}'
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go }}
|
||||||
|
cache: ${{ matrix.cache }}
|
||||||
|
|
||||||
|
- name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }} (from hostedtoolcache)'
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go }}
|
||||||
|
cache: ${{ matrix.cache }}
|
||||||
|
|
4
dist/setup/index.js
vendored
4
dist/setup/index.js
vendored
|
@ -61514,6 +61514,10 @@ function cacheWindowsDir(extPath, tool, version, arch) {
|
||||||
fs_1.default.mkdirSync(path.dirname(defaultToolCacheDir), { recursive: true });
|
fs_1.default.mkdirSync(path.dirname(defaultToolCacheDir), { recursive: true });
|
||||||
fs_1.default.symlinkSync(actualToolCacheDir, defaultToolCacheDir, 'junction');
|
fs_1.default.symlinkSync(actualToolCacheDir, defaultToolCacheDir, 'junction');
|
||||||
core.info(`Created link ${defaultToolCacheDir} => ${actualToolCacheDir}`);
|
core.info(`Created link ${defaultToolCacheDir} => ${actualToolCacheDir}`);
|
||||||
|
const actualToolCacheCompleteFile = `${actualToolCacheDir}.complete`;
|
||||||
|
const defaultToolCacheCompleteFile = `${defaultToolCacheDir}.complete`;
|
||||||
|
fs_1.default.symlinkSync(actualToolCacheCompleteFile, defaultToolCacheCompleteFile, 'file');
|
||||||
|
core.info(`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`);
|
||||||
// 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;
|
||||||
|
|
|
@ -203,6 +203,17 @@ async function cacheWindowsDir(
|
||||||
fs.symlinkSync(actualToolCacheDir, defaultToolCacheDir, 'junction');
|
fs.symlinkSync(actualToolCacheDir, defaultToolCacheDir, 'junction');
|
||||||
core.info(`Created link ${defaultToolCacheDir} => ${actualToolCacheDir}`);
|
core.info(`Created link ${defaultToolCacheDir} => ${actualToolCacheDir}`);
|
||||||
|
|
||||||
|
const actualToolCacheCompleteFile = `${actualToolCacheDir}.complete`;
|
||||||
|
const defaultToolCacheCompleteFile = `${defaultToolCacheDir}.complete`;
|
||||||
|
fs.symlinkSync(
|
||||||
|
actualToolCacheCompleteFile,
|
||||||
|
defaultToolCacheCompleteFile,
|
||||||
|
'file'
|
||||||
|
);
|
||||||
|
core.info(
|
||||||
|
`Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}`
|
||||||
|
);
|
||||||
|
|
||||||
// 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