Enable ability to change .NET SDK installation directory by `DOTNET_INSTALL_DIR` environment variable (#329)
This commit is contained in:
parent
c7e7147fd3
commit
45c9f236cf
|
@ -195,6 +195,7 @@ Some environment variables may be necessary for your particular case or to impro
|
|||
|
||||
| **Env.variable** | **Description** | **Default value** |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| DOTNET_INSTALL_DIR |Specifies a directory where .NET SDKs should be installed by the action|*isn't set*|
|
||||
| DOTNET_NOLOGO |Removes logo and telemetry message from first run of dotnet cli|*false*|
|
||||
| DOTNET_CLI_TELEMETRY_OPTOUT |Opt-out of telemetry being sent to Microsoft|*false*|
|
||||
| DOTNET_MULTILEVEL_LOOKUP |Configures whether the global install location is used as a fall-back|*true*|
|
||||
|
@ -204,7 +205,7 @@ Some environment variables may be necessary for your particular case or to impro
|
|||
build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
DOTNET_NOLOGO: true
|
||||
DOTNET_INSTALL_DIR: "path/to/directory"
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- uses: actions/setup-dotnet@v3
|
||||
|
|
|
@ -333,8 +333,10 @@ class DotnetCoreInstaller {
|
|||
if (process.env['no_proxy'] != null) {
|
||||
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
||||
}
|
||||
scriptArguments.push('-InstallDir', `'${DotnetCoreInstaller.installationDirectoryWindows}'`);
|
||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||
process.env['DOTNET_INSTALL_DIR'] =
|
||||
DotnetCoreInstaller.installationDirectoryWindows;
|
||||
}
|
||||
scriptPath =
|
||||
(yield io.which('pwsh', false)) || (yield io.which('powershell', true));
|
||||
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
||||
|
@ -349,18 +351,22 @@ class DotnetCoreInstaller {
|
|||
if (this.quality) {
|
||||
this.setQuality(dotnetVersion, scriptArguments);
|
||||
}
|
||||
if (utils_1.IS_LINUX) {
|
||||
scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryLinux);
|
||||
}
|
||||
if (utils_1.IS_MAC) {
|
||||
scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryMac);
|
||||
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||
process.env['DOTNET_INSTALL_DIR'] = utils_1.IS_LINUX
|
||||
? DotnetCoreInstaller.installationDirectoryLinux
|
||||
: DotnetCoreInstaller.installationDirectoryMac;
|
||||
}
|
||||
}
|
||||
const { exitCode, stdout } = yield exec.getExecOutput(`"${scriptPath}"`, scriptArguments, { ignoreReturnCode: true });
|
||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||
const getExecOutputOptions = {
|
||||
ignoreReturnCode: true,
|
||||
env: process.env
|
||||
};
|
||||
const { exitCode, stdout } = yield exec.getExecOutput(`"${scriptPath}"`, scriptArguments, getExecOutputOptions);
|
||||
if (exitCode) {
|
||||
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
||||
}
|
||||
return this.outputDotnetVersion(dotnetVersion.value, scriptArguments[scriptArguments.length - 1]);
|
||||
return this.outputDotnetVersion(dotnetVersion.value, process.env['DOTNET_INSTALL_DIR']);
|
||||
});
|
||||
}
|
||||
outputDotnetVersion(version, installationPath) {
|
||||
|
@ -523,10 +529,9 @@ run();
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0;
|
||||
exports.IS_LINUX = exports.IS_WINDOWS = void 0;
|
||||
exports.IS_WINDOWS = process.platform === 'win32';
|
||||
exports.IS_LINUX = process.platform === 'linux';
|
||||
exports.IS_MAC = process.platform === 'darwin';
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "setup-dotnet",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "setup-dotnet",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.1",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.9.1",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "setup-dotnet",
|
||||
"version": "3.0.0",
|
||||
"version": "3.0.1",
|
||||
"private": true,
|
||||
"description": "setup dotnet action",
|
||||
"main": "lib/setup-dotnet.js",
|
||||
|
|
|
@ -7,7 +7,7 @@ import {chmodSync} from 'fs';
|
|||
import {readdir} from 'fs/promises';
|
||||
import path from 'path';
|
||||
import semver from 'semver';
|
||||
import {IS_LINUX, IS_WINDOWS, IS_MAC} from './utils';
|
||||
import {IS_LINUX, IS_WINDOWS} from './utils';
|
||||
import {QualityOptions} from './setup-dotnet';
|
||||
|
||||
export interface DotnetVersion {
|
||||
|
@ -208,11 +208,11 @@ export class DotnetCoreInstaller {
|
|||
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
||||
}
|
||||
|
||||
scriptArguments.push(
|
||||
'-InstallDir',
|
||||
`'${DotnetCoreInstaller.installationDirectoryWindows}'`
|
||||
);
|
||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||
process.env['DOTNET_INSTALL_DIR'] =
|
||||
DotnetCoreInstaller.installationDirectoryWindows;
|
||||
}
|
||||
|
||||
scriptPath =
|
||||
(await io.which('pwsh', false)) || (await io.which('powershell', true));
|
||||
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
||||
|
@ -229,24 +229,21 @@ export class DotnetCoreInstaller {
|
|||
this.setQuality(dotnetVersion, scriptArguments);
|
||||
}
|
||||
|
||||
if (IS_LINUX) {
|
||||
scriptArguments.push(
|
||||
'--install-dir',
|
||||
DotnetCoreInstaller.installationDirectoryLinux
|
||||
);
|
||||
}
|
||||
|
||||
if (IS_MAC) {
|
||||
scriptArguments.push(
|
||||
'--install-dir',
|
||||
DotnetCoreInstaller.installationDirectoryMac
|
||||
);
|
||||
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||
process.env['DOTNET_INSTALL_DIR'] = IS_LINUX
|
||||
? DotnetCoreInstaller.installationDirectoryLinux
|
||||
: DotnetCoreInstaller.installationDirectoryMac;
|
||||
}
|
||||
}
|
||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||
const getExecOutputOptions = {
|
||||
ignoreReturnCode: true,
|
||||
env: process.env as {string: string}
|
||||
};
|
||||
const {exitCode, stdout} = await exec.getExecOutput(
|
||||
`"${scriptPath}"`,
|
||||
scriptArguments,
|
||||
{ignoreReturnCode: true}
|
||||
getExecOutputOptions
|
||||
);
|
||||
if (exitCode) {
|
||||
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
||||
|
@ -254,7 +251,7 @@ export class DotnetCoreInstaller {
|
|||
|
||||
return this.outputDotnetVersion(
|
||||
dotnetVersion.value,
|
||||
scriptArguments[scriptArguments.length - 1]
|
||||
process.env['DOTNET_INSTALL_DIR']
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
export const IS_WINDOWS = process.platform === 'win32';
|
||||
export const IS_LINUX = process.platform === 'linux';
|
||||
export const IS_MAC = process.platform === 'darwin';
|
||||
|
|
Loading…
Reference in New Issue