Add option to install runtime only

This commit is contained in:
Nikolai Laevskii 2023-09-04 06:58:36 +02:00
parent 174ee99b90
commit 44d36ccab9
4 changed files with 28 additions and 10 deletions

View File

@ -9,6 +9,10 @@ inputs:
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x, 6.0.2xx' description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x, 6.0.2xx'
dotnet-quality: dotnet-quality:
description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.' description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.'
runtime-only:
description: 'Optional input to install only the runtime, not the SDK.'
required: false
default: false
global-json-file: global-json-file:
description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.' description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.'
source-url: source-url:

14
dist/setup/index.js vendored
View File

@ -72993,9 +72993,10 @@ DotnetInstallDir.dirPath = process.env['DOTNET_INSTALL_DIR']
? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR']) ? DotnetInstallDir.convertInstallPathToAbsolute(process.env['DOTNET_INSTALL_DIR'])
: DotnetInstallDir.default[utils_1.PLATFORM]; : DotnetInstallDir.default[utils_1.PLATFORM];
class DotnetCoreInstaller { class DotnetCoreInstaller {
constructor(dotnetVersion, quality) { constructor(dotnetVersion, quality, runtimeOnly = false) {
this.dotnetVersion = dotnetVersion; this.dotnetVersion = dotnetVersion;
this.quality = quality; this.quality = quality;
this.runtimeOnly = runtimeOnly;
} }
installDotnet() { installDotnet() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
@ -73022,12 +73023,15 @@ class DotnetCoreInstaller {
* Install dotnet over the latest version of * Install dotnet over the latest version of
* dotnet CLI * dotnet CLI
*/ */
const dotnetInstallOutput = yield new DotnetInstallScript() const dotnetInstallScript = new DotnetInstallScript()
// Don't overwrite CLI because it should be already installed // Don't overwrite CLI because it should be already installed
.useArguments(utils_1.IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files') .useArguments(utils_1.IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files')
// Use version provided by user // Use version provided by user
.useVersion(this.dotnetVersion, this.quality) .useVersion(this.dotnetVersion, this.quality);
.execute(); if (this.runtimeOnly) {
dotnetInstallScript.useArguments(utils_1.IS_WINDOWS ? '-Runtime' : '--runtime', 'dotnet');
}
const dotnetInstallOutput = yield dotnetInstallScript.execute();
if (dotnetInstallOutput.exitCode) { if (dotnetInstallOutput.exitCode) {
throw new Error(`Failed to install dotnet, exit code: ${dotnetInstallOutput.exitCode}. ${dotnetInstallOutput.stderr}`); throw new Error(`Failed to install dotnet, exit code: ${dotnetInstallOutput.exitCode}. ${dotnetInstallOutput.stderr}`);
} }
@ -73154,7 +73158,7 @@ function run() {
const uniqueVersions = new Set(versions); const uniqueVersions = new Set(versions);
for (const version of uniqueVersions) { for (const version of uniqueVersions) {
dotnetVersionResolver = new installer_1.DotnetVersionResolver(version); dotnetVersionResolver = new installer_1.DotnetVersionResolver(version);
dotnetInstaller = new installer_1.DotnetCoreInstaller(yield dotnetVersionResolver.createDotnetVersion(), quality); dotnetInstaller = new installer_1.DotnetCoreInstaller(yield dotnetVersionResolver.createDotnetVersion(), quality, core.getBooleanInput('runtime-only'));
const installedVersion = yield dotnetInstaller.installDotnet(); const installedVersion = yield dotnetInstaller.installDotnet();
installedDotnetVersions.push(installedVersion); installedDotnetVersions.push(installedVersion);
} }

View File

@ -255,7 +255,8 @@ export class DotnetCoreInstaller {
constructor( constructor(
private readonly dotnetVersion: DotnetVersion, private readonly dotnetVersion: DotnetVersion,
private readonly quality: QualityOptions private readonly quality: QualityOptions,
private readonly runtimeOnly = false
) {} ) {}
public async installDotnet(): Promise<string | null> { public async installDotnet(): Promise<string | null> {
@ -288,14 +289,22 @@ export class DotnetCoreInstaller {
* Install dotnet over the latest version of * Install dotnet over the latest version of
* dotnet CLI * dotnet CLI
*/ */
const dotnetInstallOutput = await new DotnetInstallScript() const dotnetInstallScript = new DotnetInstallScript()
// Don't overwrite CLI because it should be already installed // Don't overwrite CLI because it should be already installed
.useArguments( .useArguments(
IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files' IS_WINDOWS ? '-SkipNonVersionedFiles' : '--skip-non-versioned-files'
) )
// Use version provided by user // Use version provided by user
.useVersion(this.dotnetVersion, this.quality) .useVersion(this.dotnetVersion, this.quality);
.execute();
if (this.runtimeOnly) {
dotnetInstallScript.useArguments(
IS_WINDOWS ? '-Runtime' : '--runtime',
'dotnet'
);
}
const dotnetInstallOutput = await dotnetInstallScript.execute();
if (dotnetInstallOutput.exitCode) { if (dotnetInstallOutput.exitCode) {
throw new Error( throw new Error(

View File

@ -78,7 +78,8 @@ export async function run() {
dotnetVersionResolver = new DotnetVersionResolver(version); dotnetVersionResolver = new DotnetVersionResolver(version);
dotnetInstaller = new DotnetCoreInstaller( dotnetInstaller = new DotnetCoreInstaller(
await dotnetVersionResolver.createDotnetVersion(), await dotnetVersionResolver.createDotnetVersion(),
quality quality,
core.getBooleanInput('runtime-only')
); );
const installedVersion = await dotnetInstaller.installDotnet(); const installedVersion = await dotnetInstaller.installDotnet();
installedDotnetVersions.push(installedVersion); installedDotnetVersions.push(installedVersion);