Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows performance install dir #480

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/windos-fix.yml
@@ -0,0 +1,54 @@
name: Windows fix validation

on:
pull_request:
paths-ignore:
- '**.md'
push:
branches:
- main
- releases/*
paths-ignore:
- '**.md'
-
jobs:
setup-version:
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
matrix:
operating-system: [windows-2019, windows-2022]
dotnet-version: ['2.1', '2.2', '3.0', '3.1', '5.0', '6.0', '7.0', '8.0']
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Clear toolcache
shell: pwsh
run: __tests__/clear-toolcache.ps1 ${{ runner.os }}

- name: Take note of the current time
run: Get-Date | Out-File -FilePath "timestamp.txt"

- name: Setup dotnet ${{ matrix.dotnet-version }}
uses: ./
with:
dotnet-version: ${{ matrix.dotnet-version }}

- name: Verify the action took less than 1 minute
run: |
$timestampContent = Get-Content -Path "timestamp.txt"
$timestamp = [DateTime]::Parse($timestampContent)
$now = Get-Date

$diff = New-TimeSpan -Start $timestamp -End $now
if ($diff.Minutes -gt 1) {
throw "The action took longer than 1 minute to run"
}

- name: Verify dotnet was installed on drive D
run: |
$dotnetPath = Get-ChildItem -Path "D:\Program Files\dotnet" -Directory -Name
if ($dotnetPath -eq $null) {
throw "dotnet was not installed on drive D"
}
20 changes: 17 additions & 3 deletions dist/setup/index.js
Expand Up @@ -72836,7 +72836,7 @@ const core = __importStar(__nccwpck_require__(2186));
const exec = __importStar(__nccwpck_require__(1514));
const io = __importStar(__nccwpck_require__(7436));
const hc = __importStar(__nccwpck_require__(6255));
const fs_1 = __nccwpck_require__(7147);
const fs_1 = __importStar(__nccwpck_require__(7147));
const path_1 = __importDefault(__nccwpck_require__(1017));
const os_1 = __importDefault(__nccwpck_require__(2037));
const semver_1 = __importDefault(__nccwpck_require__(5911));
Expand Down Expand Up @@ -73008,6 +73008,16 @@ class DotnetInstallScript {
}
}
exports.DotnetInstallScript = DotnetInstallScript;
// Workaround for slow installation on Windows with network attached C: drive
// see https://github.com/actions/setup-dotnet/issues/260
const fixWindowsInstallDir = (installDir) => {
if (!(0, utils_1.isSelfHosted)() && fs_1.default.existsSync('d:\\')) {
return installDir.replace(/^[cC]:\\/, 'd:\\');
}
else {
return installDir;
}
};
class DotnetInstallDir {
static convertInstallPathToAbsolute(installDir) {
if (path_1.default.isAbsolute(installDir))
Expand All @@ -73029,7 +73039,7 @@ exports.DotnetInstallDir = DotnetInstallDir;
DotnetInstallDir.default = {
linux: '/usr/share/dotnet',
mac: path_1.default.join(process.env['HOME'] + '', '.dotnet'),
windows: path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet')
windows: fixWindowsInstallDir(path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet'))
};
DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR'])
Expand Down Expand Up @@ -73272,7 +73282,7 @@ run();
"use strict";

Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PLATFORM = exports.IS_WINDOWS = void 0;
exports.isSelfHosted = exports.PLATFORM = exports.IS_WINDOWS = void 0;
exports.IS_WINDOWS = process.platform === 'win32';
exports.PLATFORM = (() => {
if (process.platform === 'win32')
Expand All @@ -73281,6 +73291,10 @@ exports.PLATFORM = (() => {
return 'linux';
return 'mac';
})();
const isSelfHosted = () => process.env['AGENT_ISSELFHOSTED'] === '1' ||
(process.env['AGENT_ISSELFHOSTED'] === undefined &&
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted');
exports.isSelfHosted = isSelfHosted;


/***/ }),
Expand Down