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** |
|
| **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_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_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*|
|
| 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:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
DOTNET_NOLOGO: true
|
DOTNET_INSTALL_DIR: "path/to/directory"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@main
|
- uses: actions/checkout@main
|
||||||
- uses: actions/setup-dotnet@v3
|
- uses: actions/setup-dotnet@v3
|
||||||
|
|
|
@ -333,8 +333,10 @@ class DotnetCoreInstaller {
|
||||||
if (process.env['no_proxy'] != null) {
|
if (process.env['no_proxy'] != null) {
|
||||||
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
||||||
}
|
}
|
||||||
scriptArguments.push('-InstallDir', `'${DotnetCoreInstaller.installationDirectoryWindows}'`);
|
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
process.env['DOTNET_INSTALL_DIR'] =
|
||||||
|
DotnetCoreInstaller.installationDirectoryWindows;
|
||||||
|
}
|
||||||
scriptPath =
|
scriptPath =
|
||||||
(yield io.which('pwsh', false)) || (yield io.which('powershell', true));
|
(yield io.which('pwsh', false)) || (yield io.which('powershell', true));
|
||||||
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
||||||
|
@ -349,18 +351,22 @@ class DotnetCoreInstaller {
|
||||||
if (this.quality) {
|
if (this.quality) {
|
||||||
this.setQuality(dotnetVersion, scriptArguments);
|
this.setQuality(dotnetVersion, scriptArguments);
|
||||||
}
|
}
|
||||||
if (utils_1.IS_LINUX) {
|
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||||
scriptArguments.push('--install-dir', DotnetCoreInstaller.installationDirectoryLinux);
|
process.env['DOTNET_INSTALL_DIR'] = utils_1.IS_LINUX
|
||||||
}
|
? DotnetCoreInstaller.installationDirectoryLinux
|
||||||
if (utils_1.IS_MAC) {
|
: DotnetCoreInstaller.installationDirectoryMac;
|
||||||
scriptArguments.push('--install-dir', 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) {
|
if (exitCode) {
|
||||||
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
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) {
|
outputDotnetVersion(version, installationPath) {
|
||||||
|
@ -523,10 +529,9 @@ run();
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
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_WINDOWS = process.platform === 'win32';
|
||||||
exports.IS_LINUX = process.platform === 'linux';
|
exports.IS_LINUX = process.platform === 'linux';
|
||||||
exports.IS_MAC = process.platform === 'darwin';
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "setup-dotnet",
|
"name": "setup-dotnet",
|
||||||
"version": "3.0.0",
|
"version": "3.0.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setup-dotnet",
|
"name": "setup-dotnet",
|
||||||
"version": "3.0.0",
|
"version": "3.0.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.9.1",
|
"@actions/core": "^1.9.1",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "setup-dotnet",
|
"name": "setup-dotnet",
|
||||||
"version": "3.0.0",
|
"version": "3.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "setup dotnet action",
|
"description": "setup dotnet action",
|
||||||
"main": "lib/setup-dotnet.js",
|
"main": "lib/setup-dotnet.js",
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {chmodSync} from 'fs';
|
||||||
import {readdir} from 'fs/promises';
|
import {readdir} from 'fs/promises';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import semver from 'semver';
|
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';
|
import {QualityOptions} from './setup-dotnet';
|
||||||
|
|
||||||
export interface DotnetVersion {
|
export interface DotnetVersion {
|
||||||
|
@ -208,11 +208,11 @@ export class DotnetCoreInstaller {
|
||||||
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
scriptArguments.push(
|
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||||
'-InstallDir',
|
process.env['DOTNET_INSTALL_DIR'] =
|
||||||
`'${DotnetCoreInstaller.installationDirectoryWindows}'`
|
DotnetCoreInstaller.installationDirectoryWindows;
|
||||||
);
|
}
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
|
||||||
scriptPath =
|
scriptPath =
|
||||||
(await io.which('pwsh', false)) || (await io.which('powershell', true));
|
(await io.which('pwsh', false)) || (await io.which('powershell', true));
|
||||||
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
scriptArguments = windowsDefaultOptions.concat(scriptArguments);
|
||||||
|
@ -229,24 +229,21 @@ export class DotnetCoreInstaller {
|
||||||
this.setQuality(dotnetVersion, scriptArguments);
|
this.setQuality(dotnetVersion, scriptArguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_LINUX) {
|
if (!process.env['DOTNET_INSTALL_DIR']) {
|
||||||
scriptArguments.push(
|
process.env['DOTNET_INSTALL_DIR'] = IS_LINUX
|
||||||
'--install-dir',
|
? DotnetCoreInstaller.installationDirectoryLinux
|
||||||
DotnetCoreInstaller.installationDirectoryLinux
|
: DotnetCoreInstaller.installationDirectoryMac;
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_MAC) {
|
|
||||||
scriptArguments.push(
|
|
||||||
'--install-dir',
|
|
||||||
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(
|
const {exitCode, stdout} = await exec.getExecOutput(
|
||||||
`"${scriptPath}"`,
|
`"${scriptPath}"`,
|
||||||
scriptArguments,
|
scriptArguments,
|
||||||
{ignoreReturnCode: true}
|
getExecOutputOptions
|
||||||
);
|
);
|
||||||
if (exitCode) {
|
if (exitCode) {
|
||||||
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
||||||
|
@ -254,7 +251,7 @@ export class DotnetCoreInstaller {
|
||||||
|
|
||||||
return this.outputDotnetVersion(
|
return this.outputDotnetVersion(
|
||||||
dotnetVersion.value,
|
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_WINDOWS = process.platform === 'win32';
|
||||||
export const IS_LINUX = process.platform === 'linux';
|
export const IS_LINUX = process.platform === 'linux';
|
||||||
export const IS_MAC = process.platform === 'darwin';
|
|
||||||
|
|
Loading…
Reference in New Issue