Skip to content

Commit

Permalink
Explicity set installation path
Browse files Browse the repository at this point in the history
Github actions tool guidelines, is to use the worker tool cache, instead of system-wide install path.
  • Loading branch information
jasoncouture committed Jan 13, 2024
1 parent 4d6c8fc commit 15d0f91
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 8 deletions.
24 changes: 21 additions & 3 deletions dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -93164,6 +93164,13 @@ class DotnetInstallScript {
this.scriptArguments.push(...args);
return this;
}
useInstallPath(installPath) {
if (installPath == null) {
installPath = DotnetInstallDir.dirPath;
}
this.useArguments(utils_1.IS_WINDOWS ? '-Install-Dir' : '--install-dir', installPath);
return this;
}
useVersion(dotnetVersion, quality) {
if (dotnetVersion.type) {
this.useArguments(dotnetVersion.type, dotnetVersion.value);
Expand All @@ -93189,6 +93196,15 @@ class DotnetInstallScript {
}
exports.DotnetInstallScript = DotnetInstallScript;
class DotnetInstallDir {
static getInstallDirectory() {
if (process.env['DOTNET_INSTALL_DIR'] != null) {
return process.env['DOTNET_INSTALL_DIR'];
}
if (process.env['RUNNER_TOOL_CACHE'] != null) {
return path_1.default.join(process.env['RUNNER_TOOL_CACHE'], 'dotnet');
}
return DotnetInstallDir.default[utils_1.PLATFORM];
}
static convertInstallPathToAbsolute(installDir) {
if (path_1.default.isAbsolute(installDir))
return path_1.default.normalize(installDir);
Expand All @@ -93211,9 +93227,7 @@ DotnetInstallDir.default = {
mac: path_1.default.join(process.env['HOME'] + '', '.dotnet'),
windows: path_1.default.join(process.env['PROGRAMFILES'] + '', 'dotnet')
};
DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR'])
: DotnetInstallDir.default[utils_1.PLATFORM];
DotnetInstallDir.dirPath = DotnetInstallDir.convertInstallPathToAbsolute(DotnetInstallDir.getInstallDirectory());
class DotnetCoreInstaller {
constructor(version, quality) {
this.version = version;
Expand All @@ -93234,6 +93248,8 @@ class DotnetCoreInstaller {
.useArguments(utils_1.IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet')
// Use latest stable version
.useArguments(utils_1.IS_WINDOWS ? '-Channel' : '--channel', 'LTS')
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();
if (runtimeInstallOutput.exitCode) {
/**
Expand All @@ -93251,6 +93267,8 @@ class DotnetCoreInstaller {
.useArguments(utils_1.IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files')
// Use version provided by user
.useVersion(dotnetVersion, this.quality)
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();
if (dotnetInstallOutput.exitCode) {
throw new Error(`Failed to install dotnet, exit code: ${dotnetInstallOutput.exitCode}. ${dotnetInstallOutput.stderr}`);
Expand Down
34 changes: 29 additions & 5 deletions src/installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,17 @@ export class DotnetInstallScript {
return this;
}

public useInstallPath(installPath: string) {
if (installPath == null) {
installPath = DotnetInstallDir.dirPath;
}
this.useArguments(
IS_WINDOWS ? '-Install-Dir' : '--install-dir',
installPath
);
return this;
}

public useVersion(dotnetVersion: DotnetVersion, quality?: QualityOptions) {
if (dotnetVersion.type) {
this.useArguments(dotnetVersion.type, dotnetVersion.value);
Expand Down Expand Up @@ -222,11 +233,20 @@ export abstract class DotnetInstallDir {
windows: path.join(process.env['PROGRAMFILES'] + '', 'dotnet')
};

public static readonly dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(
process.env['DOTNET_INSTALL_DIR']
)
: DotnetInstallDir.default[PLATFORM];
private static getInstallDirectory() {
if (process.env['DOTNET_INSTALL_DIR'] != null) {
return process.env['DOTNET_INSTALL_DIR'];
}
if (process.env['RUNNER_TOOL_CACHE'] != null) {
return path.join(process.env['RUNNER_TOOL_CACHE'], 'dotnet');
}
return DotnetInstallDir.default[PLATFORM];
}

public static readonly dirPath =
DotnetInstallDir.convertInstallPathToAbsolute(
DotnetInstallDir.getInstallDirectory()
);

private static convertInstallPathToAbsolute(installDir: string): string {
if (path.isAbsolute(installDir)) return path.normalize(installDir);
Expand Down Expand Up @@ -275,6 +295,8 @@ export class DotnetCoreInstaller {
.useArguments(IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet')
// Use latest stable version
.useArguments(IS_WINDOWS ? '-Channel' : '--channel', 'LTS')
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();

if (runtimeInstallOutput.exitCode) {
Expand All @@ -298,6 +320,8 @@ export class DotnetCoreInstaller {
)
// Use version provided by user
.useVersion(dotnetVersion, this.quality)
// Explicitly set the install path (see https://github.com/actions/setup-dotnet/issues/360)
.useInstallPath(DotnetInstallDir.dirPath)
.execute();

if (dotnetInstallOutput.exitCode) {
Expand Down

0 comments on commit 15d0f91

Please sign in to comment.