`errorWhenMissingUnityBuildResults` exposed as with parameter

pull/575/head
Toby Harris 2023-09-20 13:52:28 +01:00
parent 2190fd5667
commit bc748ab851
10 changed files with 97 additions and 32 deletions

View File

@ -217,6 +217,12 @@ inputs:
description:
'The path to mount the workspace inside the docker container. For windows, leave out the drive letter. For example
c:/github/workspace should be defined as /github/workspace'
errorWhenMissingUnityBuildResults:
default: true
required: false
description:
'Check if Unity build product is present after build, and error if not. Set to false to not check, useful if
producing alternative build products.'
outputs:
volume:

36
dist/index.js generated vendored
View File

@ -56,7 +56,9 @@ async function runMain() {
mac_builder_1.default.run(actionFolder);
}
else {
await model_1.Docker.run(baseImage.toString(), { workspace, actionFolder, ...buildParameters });
await model_1.Docker.run(baseImage.toString(), { workspace, actionFolder, ...buildParameters }, {
errorWhenMissingUnityBuildResults: buildParameters.errorWhenMissingUnityBuildResults,
});
}
}
else {
@ -318,6 +320,7 @@ class BuildParameters {
cacheUnityInstallationOnMac: input_1.default.cacheUnityInstallationOnMac,
unityHubVersionOnMac: input_1.default.unityHubVersionOnMac,
dockerWorkspacePath: input_1.default.dockerWorkspacePath,
errorWhenMissingUnityBuildResults: input_1.default.errorWhenMissingUnityBuildResults,
};
}
static parseBuildFile(filename, platform, androidExportType) {
@ -3254,16 +3257,23 @@ cp -a ${sharedFolder}. /github/workspace/cloud-runner-cache/
if (fs.existsSync(`${workspace}/cloud-runner-cache`)) {
await cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${workspace}/cloud-runner-cache && du -sh ${workspace}/cloud-runner-cache`);
}
await docker_1.default.run(image, { workspace, actionFolder, ...this.buildParameters }, false, `chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`, content, {
listeners: {
stdout: (data) => {
myOutput += data.toString();
},
stderr: (data) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
await docker_1.default.run(image, { workspace, actionFolder, ...this.buildParameters }, {
silent: false,
overrideCommands: `chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`,
additionalVariables: content,
options: {
listeners: {
stdout: (data) => {
myOutput += data.toString();
},
stderr: (data) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
},
},
},
}, true, false);
entrypointBash: true,
errorWhenMissingUnityBuildResults: false,
});
return myOutput;
}
}
@ -5861,9 +5871,9 @@ const image_environment_factory_1 = __importDefault(__nccwpck_require__(25145));
const node_fs_1 = __nccwpck_require__(87561);
const node_path_1 = __importDefault(__nccwpck_require__(49411));
class Docker {
static async run(image, parameters, silent = false, overrideCommands = '', additionalVariables = [],
static async run(image, parameters, { silent = false, overrideCommands = '', additionalVariables = [],
// eslint-disable-next-line unicorn/no-useless-undefined
options = undefined, entrypointBash = false, errorWhenMissingUnityBuildResults = true) {
options = undefined, entrypointBash = false, errorWhenMissingUnityBuildResults = true, }) {
let runCommand = '';
switch (process.platform) {
case 'linux':
@ -6897,6 +6907,10 @@ class Input {
static get dockerWorkspacePath() {
return Input.getInput('dockerWorkspacePath') || '/github/workspace';
}
static get errorWhenMissingUnityBuildResults() {
const input = Input.getInput('errorWhenMissingUnityBuildResults') || false;
return input === 'true';
}
static ToEnvVarFormat(input) {
if (input.toUpperCase() === input) {
return input;

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,13 @@ async function runMain() {
if (process.platform === 'darwin') {
MacBuilder.run(actionFolder);
} else {
await Docker.run(baseImage.toString(), { workspace, actionFolder, ...buildParameters });
await Docker.run(
baseImage.toString(),
{ workspace, actionFolder, ...buildParameters },
{
errorWhenMissingUnityBuildResults: buildParameters.errorWhenMissingUnityBuildResults,
},
);
}
} else {
await CloudRunner.run(buildParameters, baseImage.toString());

View File

@ -84,6 +84,7 @@ class BuildParameters {
public cacheUnityInstallationOnMac!: boolean;
public unityHubVersionOnMac!: string;
public dockerWorkspacePath!: string;
public errorWhenMissingUnityBuildResults!: boolean;
public static shouldUseRetainedWorkspaceMode(buildParameters: BuildParameters) {
return buildParameters.maxRetainedWorkspaces > 0 && CloudRunner.lockedWorkspace !== ``;
@ -192,6 +193,7 @@ class BuildParameters {
cacheUnityInstallationOnMac: Input.cacheUnityInstallationOnMac,
unityHubVersionOnMac: Input.unityHubVersionOnMac,
dockerWorkspacePath: Input.dockerWorkspacePath,
errorWhenMissingUnityBuildResults: Input.errorWhenMissingUnityBuildResults,
};
}

View File

@ -136,21 +136,23 @@ cp -a ${sharedFolder}. /github/workspace/cloud-runner-cache/
await Docker.run(
image,
{ workspace, actionFolder, ...this.buildParameters },
false,
`chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`,
content,
{
listeners: {
stdout: (data: Buffer) => {
myOutput += data.toString();
},
stderr: (data: Buffer) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
silent: false,
overrideCommands: `chmod +x /github/workspace/${entrypointFilePath} && /github/workspace/${entrypointFilePath}`,
additionalVariables: content,
options: {
listeners: {
stdout: (data: Buffer) => {
myOutput += data.toString();
},
stderr: (data: Buffer) => {
myOutput += `[LOCAL-DOCKER-ERROR]${data.toString()}`;
},
},
},
entrypointBash: true,
errorWhenMissingUnityBuildResults: false,
},
true,
false,
);
return myOutput;

View File

@ -11,6 +11,6 @@ describe('Docker', () => {
buildsPath: 'build',
method: '',
};
await Docker.run(image, parameters);
await Docker.run(image, parameters, {});
});
});

View File

@ -5,17 +5,28 @@ import path from 'node:path';
import { ExecOptions } from '@actions/exec';
import { DockerParameters, StringKeyValuePair } from './shared-types';
interface IDockerOptions {
silent?: boolean;
overrideCommands?: string;
additionalVariables?: StringKeyValuePair[];
options?: ExecOptions | undefined;
entrypointBash?: boolean;
errorWhenMissingUnityBuildResults?: boolean;
}
class Docker {
static async run(
image: string,
parameters: DockerParameters,
silent: boolean = false,
overrideCommands: string = '',
additionalVariables: StringKeyValuePair[] = [],
// eslint-disable-next-line unicorn/no-useless-undefined
options: ExecOptions | undefined = undefined,
entrypointBash: boolean = false,
errorWhenMissingUnityBuildResults: boolean = true,
{
silent = false,
overrideCommands = '',
additionalVariables = [],
// eslint-disable-next-line unicorn/no-useless-undefined
options = undefined,
entrypointBash = false,
errorWhenMissingUnityBuildResults = true,
}: IDockerOptions,
) {
let runCommand = '';
switch (process.platform) {

View File

@ -285,4 +285,22 @@ describe('Input', () => {
expect(spy).toHaveBeenCalledTimes(1);
});
});
describe('errorWhenMissingUnityBuildResults', () => {
it('returns the default value', () => {
expect(Input.errorWhenMissingUnityBuildResults).toStrictEqual(false);
});
it('returns true when string true is passed', () => {
const spy = jest.spyOn(core, 'getInput').mockReturnValue('true');
expect(Input.errorWhenMissingUnityBuildResults).toStrictEqual(true);
expect(spy).toHaveBeenCalledTimes(1);
});
it('returns false when string false is passed', () => {
const spy = jest.spyOn(core, 'getInput').mockReturnValue('false');
expect(Input.errorWhenMissingUnityBuildResults).toStrictEqual(false);
expect(spy).toHaveBeenCalledTimes(1);
});
});
});

View File

@ -220,6 +220,12 @@ class Input {
return Input.getInput('dockerWorkspacePath') || '/github/workspace';
}
static get errorWhenMissingUnityBuildResults(): boolean {
const input = Input.getInput('errorWhenMissingUnityBuildResults') || false;
return input === 'true';
}
public static ToEnvVarFormat(input: string) {
if (input.toUpperCase() === input) {
return input;