diff --git a/.github/workflows/windows-validation.yml b/.github/workflows/windows-validation.yml index 91e6e5f2c..b764d0cf8 100644 --- a/.github/workflows/windows-validation.yml +++ b/.github/workflows/windows-validation.yml @@ -1,4 +1,4 @@ -name: Basic validation +name: validate Windows installation on: push: @@ -16,7 +16,8 @@ jobs: strategy: matrix: cache: [false, true] - go: [1.20.1] + go: [1.20.1, 1.20.5] + name: 'Setup ${{ matrix.go }} cache: ${{ matrix.cache }}' steps: - uses: actions/checkout@v3 @@ -26,6 +27,23 @@ jobs: cache: ${{ matrix.cache }} name: v4-cache-${{ matrix.cache }} + - run: | + if [ -e 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' ];then + echo 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64 should not exist for hosted version of go'; + exit 1 + fi + + du -m -s 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' + # make sure drive c: contains the folder + size=$(du -m -s 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64'|cut -f1 -d$'\t') + if [ $size -eq 0 ];then + echo 'Size of the hosted go installed on drive c: must be above zero' + exit 1 + fi + shell: bash + name: Hosted go should not have link + if: ${{ matrix.go == '1.20.5' }} + - run: | du -m -s 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' size=$(du -m -s 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64'|cut -f1 -d$'\t') @@ -44,6 +62,7 @@ jobs: fi shell: bash name: Disk usage + if: ${{ matrix.go != '1.20.5' }} - run: | echo $PATH @@ -54,8 +73,8 @@ jobs: echo 'which go should return "/c/hostedtoolcache/windows/go/${{ matrix.go }}/x64/bin/go"' exit 1 fi - if [ $(go env GOROOT) != 'C:\hostedtoolcache\windows\go\1.20.1\x64' ];then - echo 'go env GOROOT should return "C:\hostedtoolcache\windows\go\1.20.1\x64"' + if [ $(go env GOROOT) != 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' ];then + echo 'go env GOROOT should return "C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64"' exit 1 fi shell: bash diff --git a/dist/setup/index.js b/dist/setup/index.js index 0e94fd132..c495bcd58 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -61466,8 +61466,8 @@ function installGoVersion(info, auth, arch) { } // for github hosted windows runner handle latency of OS drive // by avoiding write operations to C: - const isHosted = (process.env['RUNNER_ENVIRONMENT'] = 'github-hosted'); - if (isWindows && isHosted) { + const isHosted = process.env['RUNNER_ENVIRONMENT'] === 'github-hosted'; + if (isWindows && isHosted && fs_1.default.existsSync('c:\\') && fs_1.default.existsSync('d:\\')) { const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; const substitutedToolCacheRoot = defaultToolCacheRoot .replace('C:', 'D:') diff --git a/src/installer.ts b/src/installer.ts index bc39e79be..ea30780b2 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -189,7 +189,6 @@ async function installGoVersion( // Windows requires that we keep the extension (.zip) for extraction const isWindows = os.platform() === 'win32'; - const tempDir = process.env.RUNNER_TEMP || '.'; const fileName = isWindows ? path.join(tempDir, info.fileName) : undefined; @@ -204,8 +203,8 @@ async function installGoVersion( // for github hosted windows runner handle latency of OS drive // by avoiding write operations to C: - const isHosted = (process.env['RUNNER_ENVIRONMENT'] = 'github-hosted'); - if (isWindows && isHosted) { + const isHosted = process.env['RUNNER_ENVIRONMENT'] === 'github-hosted'; + if (isWindows && isHosted && fs.existsSync('d:\\') && fs.existsSync('c:\\')) { const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; const substitutedToolCacheRoot = defaultToolCacheRoot .replace('C:', 'D:')