mirror of
https://github.com/actions/setup-dotnet.git
synced 2025-08-20 23:50:19 +00:00
Add a way to force the architecture
This commit is contained in:
parent
c0d4ad69d8
commit
90312b694f
10
README.md
10
README.md
@ -51,6 +51,16 @@ steps:
|
|||||||
include-prerelease: true
|
include-prerelease: true
|
||||||
- run: dotnet build <my project>
|
- run: dotnet build <my project>
|
||||||
```
|
```
|
||||||
|
Specific architecture:
|
||||||
|
```yml
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/setup-dotnet@v2
|
||||||
|
with:
|
||||||
|
dotnet-version: '6.0.x'
|
||||||
|
architecture: 'x86'
|
||||||
|
- run: dotnet build <my project>
|
||||||
|
```
|
||||||
global.json in a subdirectory:
|
global.json in a subdirectory:
|
||||||
```yml
|
```yml
|
||||||
steps:
|
steps:
|
||||||
|
@ -86,6 +86,26 @@ describe('installer tests', () => {
|
|||||||
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
||||||
}, 600000); //This needs some time to download on "slower" internet connections
|
}, 600000); //This needs some time to download on "slower" internet connections
|
||||||
|
|
||||||
|
|
||||||
|
it('Acquires architecture-specific version of dotnet if no matching version is installed', async () => {
|
||||||
|
await getDotnet('3.1', 'x86');
|
||||||
|
var directory = fs
|
||||||
|
.readdirSync(path.join(toolDir, 'sdk'))
|
||||||
|
.filter(fn => fn.startsWith('3.1.'));
|
||||||
|
expect(directory.length > 0).toBe(true);
|
||||||
|
if (IS_WINDOWS) {
|
||||||
|
expect(fs.existsSync(path.join(toolDir, 'dotnet.exe'))).toBe(true);
|
||||||
|
} else {
|
||||||
|
expect(fs.existsSync(path.join(toolDir, 'dotnet'))).toBe(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(process.env.DOTNET_ROOT).toBeDefined;
|
||||||
|
expect(process.env.PATH).toBeDefined;
|
||||||
|
expect(process.env.DOTNET_ROOT).toBe(toolDir);
|
||||||
|
expect(process.env.PATH?.startsWith(toolDir)).toBe(true);
|
||||||
|
}, 600000); //This needs some time to download on "slower" internet connections
|
||||||
|
|
||||||
|
|
||||||
it('Throws if no location contains correct dotnet version', async () => {
|
it('Throws if no location contains correct dotnet version', async () => {
|
||||||
let thrown = false;
|
let thrown = false;
|
||||||
try {
|
try {
|
||||||
@ -144,8 +164,8 @@ function normalizeFileContents(contents: string): string {
|
|||||||
.replace(new RegExp('\r', 'g'), '\n');
|
.replace(new RegExp('\r', 'g'), '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getDotnet(version: string): Promise<void> {
|
async function getDotnet(version: string, architecture: string = ''): Promise<void> {
|
||||||
const dotnetInstaller = new installer.DotnetCoreInstaller(version);
|
const dotnetInstaller = new installer.DotnetCoreInstaller(version, architecture);
|
||||||
await dotnetInstaller.installDotnet();
|
await dotnetInstaller.installDotnet();
|
||||||
installer.DotnetCoreInstaller.addToPath();
|
installer.DotnetCoreInstaller.addToPath();
|
||||||
}
|
}
|
||||||
|
@ -79,8 +79,9 @@ export class DotNetVersionInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class DotnetCoreInstaller {
|
export class DotnetCoreInstaller {
|
||||||
constructor(version: string, includePrerelease: boolean = false) {
|
constructor(version: string, architecture:string = '', includePrerelease: boolean = false) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
this.architecture = architecture;
|
||||||
this.includePrerelease = includePrerelease;
|
this.includePrerelease = includePrerelease;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,6 +116,10 @@ export class DotnetCoreInstaller {
|
|||||||
command += ` -ProxyBypassList ${process.env['no_proxy']}`;
|
command += ` -ProxyBypassList ${process.env['no_proxy']}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.architecture != ''){
|
||||||
|
command += ` -Architecture ${this.architecture}`;
|
||||||
|
}
|
||||||
|
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||||
const powershellPath = await io.which('powershell', true);
|
const powershellPath = await io.which('powershell', true);
|
||||||
|
|
||||||
@ -154,6 +159,10 @@ export class DotnetCoreInstaller {
|
|||||||
scriptArguments.push('--version', calculatedVersion);
|
scriptArguments.push('--version', calculatedVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.architecture != '') {
|
||||||
|
scriptArguments.push('--architecture', this.architecture);
|
||||||
|
}
|
||||||
|
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||||
resultCode = await exec.exec(`"${scriptPath}"`, scriptArguments, {
|
resultCode = await exec.exec(`"${scriptPath}"`, scriptArguments, {
|
||||||
listeners: {
|
listeners: {
|
||||||
@ -296,6 +305,7 @@ export class DotnetCoreInstaller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private version: string;
|
private version: string;
|
||||||
|
private architecture: string;
|
||||||
private includePrerelease: boolean;
|
private includePrerelease: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,11 @@ export async function run() {
|
|||||||
// Proxy, auth, (etc) are still set up, even if no version is identified
|
// Proxy, auth, (etc) are still set up, even if no version is identified
|
||||||
//
|
//
|
||||||
let versions = core.getMultilineInput('dotnet-version');
|
let versions = core.getMultilineInput('dotnet-version');
|
||||||
|
let architecture = core.getInput('architecture');
|
||||||
|
|
||||||
|
if (!architecture){
|
||||||
|
architecture = '';
|
||||||
|
}
|
||||||
|
|
||||||
const globalJsonFileInput = core.getInput('global-json-file');
|
const globalJsonFileInput = core.getInput('global-json-file');
|
||||||
if (globalJsonFileInput) {
|
if (globalJsonFileInput) {
|
||||||
@ -45,6 +50,7 @@ export async function run() {
|
|||||||
for (const version of new Set<string>(versions)) {
|
for (const version of new Set<string>(versions)) {
|
||||||
dotnetInstaller = new installer.DotnetCoreInstaller(
|
dotnetInstaller = new installer.DotnetCoreInstaller(
|
||||||
version,
|
version,
|
||||||
|
architecture,
|
||||||
includePrerelease
|
includePrerelease
|
||||||
);
|
);
|
||||||
await dotnetInstaller.installDotnet();
|
await dotnetInstaller.installDotnet();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user