pull/310/head
Frostebite 2021-12-06 20:56:40 +00:00
parent e4f6734e21
commit e0f08a973c
10 changed files with 215 additions and 130 deletions

200
dist/index.js vendored
View File

@ -50,7 +50,7 @@ function run() {
switch (buildParameters.cloudRunnerCluster) { switch (buildParameters.cloudRunnerCluster) {
case 'aws': case 'aws':
case 'k8s': case 'k8s':
yield model_1.CloudRunner.run(buildParameters, baseImage); yield model_1.CloudRunner.run(buildParameters, baseImage.toString());
break; break;
// default and local case // default and local case
default: default:
@ -240,6 +240,7 @@ class BuildParameters {
postBuildSteps: input_1.default.postBuildSteps, postBuildSteps: input_1.default.postBuildSteps,
preBuildSteps: input_1.default.preBuildSteps, preBuildSteps: input_1.default.preBuildSteps,
customBuildSteps: input_1.default.customBuildSteps, customBuildSteps: input_1.default.customBuildSteps,
runNumber: input_1.default.runNumber,
}; };
}); });
} }
@ -882,8 +883,8 @@ class AWSJobStack {
setupCloudFormations(CF, buildGuid, image, entrypoint, commands, mountdir, workingdir, secrets) { setupCloudFormations(CF, buildGuid, image, entrypoint, commands, mountdir, workingdir, secrets) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const logGuid = nanoid_1.customAlphabet(cloud_runner_constants_1.default.alphabet, 9)(); const logGuid = nanoid_1.customAlphabet(cloud_runner_constants_1.default.alphabet, 9)();
commands[1] += ` commands[1] += `
echo "${logGuid}" echo "${logGuid}"
`; `;
yield new aws_base_stack_1.AWSBaseStack(this.baseStackName).setupBaseStack(CF); yield new aws_base_stack_1.AWSBaseStack(this.baseStackName).setupBaseStack(CF);
const taskDefStackName = `${this.baseStackName}-${buildGuid}`; const taskDefStackName = `${this.baseStackName}-${buildGuid}`;
@ -1047,25 +1048,25 @@ exports.AWSTemplates = void 0;
const fs = __importStar(__webpack_require__(35747)); const fs = __importStar(__webpack_require__(35747));
class AWSTemplates { class AWSTemplates {
static getParameterTemplate(p1) { static getParameterTemplate(p1) {
return ` return `
${p1}: ${p1}:
Type: String Type: String
Default: '' Default: ''
`; `;
} }
static getSecretTemplate(p1) { static getSecretTemplate(p1) {
return ` return `
${p1}Secret: ${p1}Secret:
Type: AWS::SecretsManager::Secret Type: AWS::SecretsManager::Secret
Properties: Properties:
Name: !Join [ "", [ '${p1}', !Ref BUILDID ] ] Name: !Join [ "", [ '${p1}', !Ref BUILDID ] ]
SecretString: !Ref ${p1} SecretString: !Ref ${p1}
`; `;
} }
static getSecretDefinitionTemplate(p1, p2) { static getSecretDefinitionTemplate(p1, p2) {
return ` return `
- Name: '${p1}' - Name: '${p1}'
ValueFrom: !Ref ${p2}Secret ValueFrom: !Ref ${p2}Secret
`; `;
} }
static insertAtTemplate(template, insertionKey, insertion) { static insertAtTemplate(template, insertionKey, insertion) {
@ -1111,8 +1112,8 @@ const cloud_runner_error_1 = __webpack_require__(2600);
class CloudRunner { class CloudRunner {
static setup(buildParameters) { static setup(buildParameters) {
cloud_runner_logger_1.default.setup(); cloud_runner_logger_1.default.setup();
cloud_runner_state_1.CloudRunnerState.buildGuid = cloud_runner_namespace_1.default.generateBuildName(cloud_runner_state_1.CloudRunnerState.readRunNumber(), buildParameters.platform);
cloud_runner_state_1.CloudRunnerState.buildParams = buildParameters; cloud_runner_state_1.CloudRunnerState.buildParams = buildParameters;
cloud_runner_state_1.CloudRunnerState.buildGuid = cloud_runner_namespace_1.default.generateBuildName(cloud_runner_state_1.CloudRunnerState.readRunNumber(), buildParameters.platform);
cloud_runner_state_1.CloudRunnerState.setupBranchName(); cloud_runner_state_1.CloudRunnerState.setupBranchName();
cloud_runner_state_1.CloudRunnerState.setupFolderVariables(); cloud_runner_state_1.CloudRunnerState.setupFolderVariables();
cloud_runner_state_1.CloudRunnerState.setupDefaultSecrets(); cloud_runner_state_1.CloudRunnerState.setupDefaultSecrets();
@ -1488,8 +1489,8 @@ class KubernetesJobSpecFactory {
command: [ command: [
'bin/bash', 'bin/bash',
'-c', '-c',
`cd /data/builder/action/steps; `cd /data/builder/action/steps;
chmod +x /return_license.sh; chmod +x /return_license.sh;
/return_license.sh;`, /return_license.sh;`,
], ],
}, },
@ -2068,7 +2069,7 @@ class CloudRunnerState {
return `git clone -q ${CloudRunnerState.CloudRunnerBranch} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`; return `git clone -q ${CloudRunnerState.CloudRunnerBranch} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`;
} }
static readRunNumber() { static readRunNumber() {
const runNumber = process.env.GITHUB_RUN_NUMBER; const runNumber = CloudRunnerState.buildParams.runNumber;
if (!runNumber || runNumber === '') { if (!runNumber || runNumber === '') {
throw new Error('no run number found, exiting'); throw new Error('no run number found, exiting');
} }
@ -2215,17 +2216,17 @@ class BuildStep {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log('Starting part 2/4 (build unity project)'); cloud_runner_logger_1.default.log('Starting part 2/4 (build unity project)');
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, image, [ yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, image, [
` `
printenv printenv
export GITHUB_WORKSPACE="${cloud_runner_state_1.CloudRunnerState.repoPathFull}" export GITHUB_WORKSPACE="${cloud_runner_state_1.CloudRunnerState.repoPathFull}"
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/default-build-script/" "/UnityBuilderAction" cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/default-build-script/" "/UnityBuilderAction"
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/entrypoint.sh" "/entrypoint.sh" cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/entrypoint.sh" "/entrypoint.sh"
cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/steps/" "/steps" cp -r "${cloud_runner_state_1.CloudRunnerState.builderPathFull}/dist/steps/" "/steps"
chmod -R +x "/entrypoint.sh" chmod -R +x "/entrypoint.sh"
chmod -R +x "/steps" chmod -R +x "/steps"
/entrypoint.sh /entrypoint.sh
${process.env.DEBUG ? '' : '#'}tree -L 4 "${cloud_runner_state_1.CloudRunnerState.buildPathFull}" ${process.env.DEBUG ? '' : '#'}tree -L 4 "${cloud_runner_state_1.CloudRunnerState.buildPathFull}"
${process.env.DEBUG ? '' : '#'}ls -lh "/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}" ${process.env.DEBUG ? '' : '#'}ls -lh "/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}"
`, `,
], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.projectPathFull}`, environmentVariables, secrets); ], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.projectPathFull}`, environmentVariables, secrets);
}); });
@ -2269,23 +2270,23 @@ class CompressionStep {
cloud_runner_logger_1.default.log('Starting step 3/4 build compression'); cloud_runner_logger_1.default.log('Starting step 3/4 build compression');
// Cleanup // Cleanup
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, 'alpine', [ yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, 'alpine', [
` `
printenv printenv
apk update -q apk update -q
apk add zip tree -q apk add zip tree -q
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull" ${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
cd "$libraryFolderFull/.." cd "$libraryFolderFull/.."
zip -r "lib-$BUILDID.zip" "./Library" zip -r "lib-$BUILDID.zip" "./Library"
mv "lib-$BUILDID.zip" "/$cacheFolderFull/lib" mv "lib-$BUILDID.zip" "/$cacheFolderFull/lib"
cd "$repoPathFull" cd "$repoPathFull"
ls -lh "$repoPathFull" ls -lh "$repoPathFull"
zip -r "build-$BUILDID.zip" "./${cloud_runner_state_1.CloudRunnerState.buildParams.buildPath}" zip -r "build-$BUILDID.zip" "./${cloud_runner_state_1.CloudRunnerState.buildParams.buildPath}"
mv "build-$BUILDID.zip" "/$cacheFolderFull/build-$BUILDID.zip" mv "build-$BUILDID.zip" "/$cacheFolderFull/build-$BUILDID.zip"
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull"
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull/.." ${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull/.."
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull" ${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
`, `,
], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, [ ], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, [
...environmentVariables, ...environmentVariables,
@ -2346,20 +2347,20 @@ class DownloadRepositoryStep {
try { try {
cloud_runner_logger_1.default.log('Starting step 1/4 clone and restore cache'); cloud_runner_logger_1.default.log('Starting step 1/4 clone and restore cache');
yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, image, [ yield cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform.runBuildTask(cloud_runner_state_1.CloudRunnerState.buildGuid, image, [
` printenv ` printenv
apk update -q apk update -q
apk add unzip zip git-lfs jq tree -q apk add unzip zip git-lfs jq tree -q
mkdir -p ${cloud_runner_state_1.CloudRunnerState.buildPathFull} mkdir -p ${cloud_runner_state_1.CloudRunnerState.buildPathFull}
mkdir -p ${cloud_runner_state_1.CloudRunnerState.builderPathFull} mkdir -p ${cloud_runner_state_1.CloudRunnerState.builderPathFull}
mkdir -p ${cloud_runner_state_1.CloudRunnerState.repoPathFull} mkdir -p ${cloud_runner_state_1.CloudRunnerState.repoPathFull}
${cloud_runner_state_1.CloudRunnerState.getCloneBuilder()} ${cloud_runner_state_1.CloudRunnerState.getCloneBuilder()}
echo ' ' echo ' '
echo 'Initializing source repository for cloning with caching of LFS files' echo 'Initializing source repository for cloning with caching of LFS files'
${cloud_runner_state_1.CloudRunnerState.getCloneNoLFSCommand()} ${cloud_runner_state_1.CloudRunnerState.getCloneNoLFSCommand()}
echo 'Source repository initialized' echo 'Source repository initialized'
echo ' ' echo ' '
echo 'Starting checks of cache for the Unity project Library and git LFS files' echo 'Starting checks of cache for the Unity project Library and git LFS files'
${cloud_runner_state_1.CloudRunnerState.getHandleCachingCommand()} ${cloud_runner_state_1.CloudRunnerState.getHandleCachingCommand()}
`, `,
], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}/`, environmentVariables, secrets); ], `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}`, `/${cloud_runner_state_1.CloudRunnerState.buildVolumeFolder}/`, environmentVariables, secrets);
} }
@ -2953,103 +2954,116 @@ const core = __webpack_require__(42186);
* Note that input is always passed as a string, even booleans. * Note that input is always passed as a string, even booleans.
*/ */
class Input { class Input {
static getInput(query) {
return Input.githubEnabled
? core.getInput(query)
: Input.cliOptions !== undefined
? Input.cliOptions[query]
: process.env[query] !== undefined
? process.env[query]
: false;
}
static get runNumber() {
return Input.getInput('GITHUB_RUN_NUMBER') || '0';
}
static get unityVersion() { static get unityVersion() {
return core.getInput('unityVersion') || 'auto'; return Input.getInput('unityVersion') || 'auto';
} }
static get customImage() { static get customImage() {
return core.getInput('customImage'); return Input.getInput('customImage');
} }
static get targetPlatform() { static get targetPlatform() {
return core.getInput('targetPlatform') || platform_1.default.default; return Input.getInput('targetPlatform') || platform_1.default.default;
} }
static get projectPath() { static get projectPath() {
const rawProjectPath = core.getInput('projectPath') || '.'; const rawProjectPath = Input.getInput('projectPath') || '.';
return rawProjectPath.replace(/\/$/, ''); return rawProjectPath.replace(/\/$/, '');
} }
static get buildName() { static get buildName() {
return core.getInput('buildName') || this.targetPlatform; return Input.getInput('buildName') || this.targetPlatform;
} }
static get buildsPath() { static get buildsPath() {
return core.getInput('buildsPath') || 'build'; return Input.getInput('buildsPath') || 'build';
} }
static get buildMethod() { static get buildMethod() {
return core.getInput('buildMethod'); // processed in docker file return Input.getInput('buildMethod'); // processed in docker file
} }
static get versioningStrategy() { static get versioningStrategy() {
return core.getInput('versioning') || 'Semantic'; return Input.getInput('versioning') || 'Semantic';
} }
static get specifiedVersion() { static get specifiedVersion() {
return core.getInput('version') || ''; return Input.getInput('version') || '';
} }
static get androidVersionCode() { static get androidVersionCode() {
return core.getInput('androidVersionCode'); return Input.getInput('androidVersionCode');
} }
static get androidAppBundle() { static get androidAppBundle() {
const input = core.getInput('androidAppBundle') || false; const input = Input.getInput('androidAppBundle') || false;
return input === 'true'; return input === 'true';
} }
static get androidKeystoreName() { static get androidKeystoreName() {
return core.getInput('androidKeystoreName') || ''; return Input.getInput('androidKeystoreName') || '';
} }
static get androidKeystoreBase64() { static get androidKeystoreBase64() {
return core.getInput('androidKeystoreBase64') || ''; return Input.getInput('androidKeystoreBase64') || '';
} }
static get androidKeystorePass() { static get androidKeystorePass() {
return core.getInput('androidKeystorePass') || ''; return Input.getInput('androidKeystorePass') || '';
} }
static get androidKeyaliasName() { static get androidKeyaliasName() {
return core.getInput('androidKeyaliasName') || ''; return Input.getInput('androidKeyaliasName') || '';
} }
static get androidKeyaliasPass() { static get androidKeyaliasPass() {
return core.getInput('androidKeyaliasPass') || ''; return Input.getInput('androidKeyaliasPass') || '';
} }
static get allowDirtyBuild() { static get allowDirtyBuild() {
const input = core.getInput('allowDirtyBuild') || false; const input = Input.getInput('allowDirtyBuild') || false;
return input === 'true'; return input === 'true';
} }
static get customParameters() { static get customParameters() {
return core.getInput('customParameters') || ''; return Input.getInput('customParameters') || '';
} }
static get sshAgent() { static get sshAgent() {
return core.getInput('sshAgent') || ''; return Input.getInput('sshAgent') || '';
} }
static get chownFilesTo() { static get chownFilesTo() {
return core.getInput('chownFilesTo') || ''; return Input.getInput('chownFilesTo') || '';
} }
static get postBuildSteps() { static get postBuildSteps() {
return core.getInput('postBuildSteps'); return Input.getInput('postBuildSteps');
} }
static get preBuildSteps() { static get preBuildSteps() {
return core.getInput('preBuildSteps'); return Input.getInput('preBuildSteps');
} }
static get customBuildSteps() { static get customBuildSteps() {
return core.getInput('customBuildSteps'); return Input.getInput('customBuildSteps');
} }
static get cloudRunnerCluster() { static get cloudRunnerCluster() {
return core.getInput('cloudRunnerCluster') || ''; return Input.getInput('cloudRunnerCluster') || '';
} }
static get awsBaseStackName() { static get awsBaseStackName() {
return core.getInput('awsBaseStackName') || ''; return Input.getInput('awsBaseStackName') || '';
} }
static get kubeConfig() { static get kubeConfig() {
return core.getInput('kubeConfig') || ''; return Input.getInput('kubeConfig') || '';
} }
static get githubToken() { static get githubToken() {
return core.getInput('githubToken') || ''; return Input.getInput('githubToken') || '';
} }
static get cloudRunnerMemory() { static get cloudRunnerMemory() {
return core.getInput('cloudRunnerMemory') || '750M'; return Input.getInput('cloudRunnerMemory') || '750M';
} }
static get cloudRunnerCpu() { static get cloudRunnerCpu() {
return core.getInput('cloudRunnerCpu') || '1.0'; return Input.getInput('cloudRunnerCpu') || '1.0';
} }
static get kubeVolumeSize() { static get kubeVolumeSize() {
return core.getInput('kubeVolumeSize') || '5Gi'; return Input.getInput('kubeVolumeSize') || '5Gi';
} }
static get kubeVolume() { static get kubeVolume() {
return core.getInput('kubeVolume') || ''; return Input.getInput('kubeVolume') || '';
} }
} }
Input.githubEnabled = true;
exports.default = Input; exports.default = Input;

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,8 @@
"build": "tsc && ncc build lib --source-map --license licenses.txt", "build": "tsc && ncc build lib --source-map --license licenses.txt",
"lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts", "lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts",
"format": "prettier --write \"src/**/*.{js,ts}\"", "format": "prettier --write \"src/**/*.{js,ts}\"",
"test": "jest" "test": "jest",
"cli": "npx ts-node src/cli.ts"
}, },
"dependencies": { "dependencies": {
"@actions/core": "^1.2.6", "@actions/core": "^1.2.6",
@ -21,7 +22,10 @@
"async-wait-until": "^2.0.7", "async-wait-until": "^2.0.7",
"aws-sdk": "^2.812.0", "aws-sdk": "^2.812.0",
"base-64": "^1.0.0", "base-64": "^1.0.0",
"commander": "^8.3.0",
"commander-ts": "^0.2.0",
"nanoid": "3.1.20", "nanoid": "3.1.20",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.4.0", "rxjs": "^7.4.0",
"semver": "^7.3.2", "semver": "^7.3.2",
"yaml": "^1.10.2" "yaml": "^1.10.2"

27
src/cli.ts 100644
View File

@ -0,0 +1,27 @@
import { BuildParameters, CloudRunner, Input } from './model';
import { Command } from 'commander-ts';
// eslint-disable-next-line no-console
console.log(`Created base image`);
const program = new Command();
program.version('0.0.1');
program.parse();
// eslint-disable-next-line no-console
console.log(`Created base image`);
const options = program.opts();
Input.githubEnabled = false;
// eslint-disable-next-line no-console
console.log(`Created base image`);
async function run() {
// eslint-disable-next-line no-console
console.log(`Created base image`);
options.projectPath = './test-project';
options.versioning = 'None';
Input.cliOptions = options;
const buildParameter = await BuildParameters.create();
await CloudRunner.run(buildParameter, ' ');
}
run();

View File

@ -15,7 +15,7 @@ async function run() {
switch (buildParameters.cloudRunnerCluster) { switch (buildParameters.cloudRunnerCluster) {
case 'aws': case 'aws':
case 'k8s': case 'k8s':
await CloudRunner.run(buildParameters, baseImage); await CloudRunner.run(buildParameters, baseImage.toString());
break; break;
// default and local case // default and local case

View File

@ -36,6 +36,7 @@ class BuildParameters {
public postBuildSteps; public postBuildSteps;
public preBuildSteps; public preBuildSteps;
public customBuildSteps; public customBuildSteps;
public runNumber;
static async create(): Promise<BuildParameters> { static async create(): Promise<BuildParameters> {
const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle); const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidAppBundle);
@ -77,6 +78,7 @@ class BuildParameters {
postBuildSteps: Input.postBuildSteps, postBuildSteps: Input.postBuildSteps,
preBuildSteps: Input.preBuildSteps, preBuildSteps: Input.preBuildSteps,
customBuildSteps: Input.customBuildSteps, customBuildSteps: Input.customBuildSteps,
runNumber: Input.runNumber,
}; };
} }

View File

@ -11,11 +11,11 @@ import { CloudRunnerError } from './error/cloud-runner-error';
class CloudRunner { class CloudRunner {
private static setup(buildParameters: BuildParameters) { private static setup(buildParameters: BuildParameters) {
CloudRunnerLogger.setup(); CloudRunnerLogger.setup();
CloudRunnerState.buildParams = buildParameters;
CloudRunnerState.buildGuid = CloudRunnerNamespace.generateBuildName( CloudRunnerState.buildGuid = CloudRunnerNamespace.generateBuildName(
CloudRunnerState.readRunNumber(), CloudRunnerState.readRunNumber(),
buildParameters.platform, buildParameters.platform,
); );
CloudRunnerState.buildParams = buildParameters;
CloudRunnerState.setupBranchName(); CloudRunnerState.setupBranchName();
CloudRunnerState.setupFolderVariables(); CloudRunnerState.setupFolderVariables();
CloudRunnerState.setupDefaultSecrets(); CloudRunnerState.setupDefaultSecrets();
@ -36,7 +36,7 @@ class CloudRunner {
} }
} }
static async run(buildParameters: BuildParameters, baseImage) { static async run(buildParameters: BuildParameters, baseImage: string) {
CloudRunner.setup(buildParameters); CloudRunner.setup(buildParameters);
try { try {
await CloudRunnerState.CloudRunnerProviderPlatform.setupSharedBuildResources( await CloudRunnerState.CloudRunnerProviderPlatform.setupSharedBuildResources(

View File

@ -102,7 +102,7 @@ export class CloudRunnerState {
} }
public static readRunNumber() { public static readRunNumber() {
const runNumber = process.env.GITHUB_RUN_NUMBER; const runNumber = CloudRunnerState.buildParams.runNumber;
if (!runNumber || runNumber === '') { if (!runNumber || runNumber === '') {
throw new Error('no run number found, exiting'); throw new Error('no run number found, exiting');
} }

View File

@ -8,133 +8,149 @@ const core = require('@actions/core');
* Note that input is always passed as a string, even booleans. * Note that input is always passed as a string, even booleans.
*/ */
class Input { class Input {
public static githubEnabled = true;
public static cliOptions;
private static getInput(query) {
return Input.githubEnabled
? core.getInput(query)
: Input.cliOptions !== undefined
? Input.cliOptions[query]
: process.env[query] !== undefined
? process.env[query]
: false;
}
static get runNumber() {
return Input.getInput('GITHUB_RUN_NUMBER') || '0';
}
static get unityVersion() { static get unityVersion() {
return core.getInput('unityVersion') || 'auto'; return Input.getInput('unityVersion') || 'auto';
} }
static get customImage() { static get customImage() {
return core.getInput('customImage'); return Input.getInput('customImage');
} }
static get targetPlatform() { static get targetPlatform() {
return core.getInput('targetPlatform') || Platform.default; return Input.getInput('targetPlatform') || Platform.default;
} }
static get projectPath() { static get projectPath() {
const rawProjectPath = core.getInput('projectPath') || '.'; const rawProjectPath = Input.getInput('projectPath') || '.';
return rawProjectPath.replace(/\/$/, ''); return rawProjectPath.replace(/\/$/, '');
} }
static get buildName() { static get buildName() {
return core.getInput('buildName') || this.targetPlatform; return Input.getInput('buildName') || this.targetPlatform;
} }
static get buildsPath() { static get buildsPath() {
return core.getInput('buildsPath') || 'build'; return Input.getInput('buildsPath') || 'build';
} }
static get buildMethod() { static get buildMethod() {
return core.getInput('buildMethod'); // processed in docker file return Input.getInput('buildMethod'); // processed in docker file
} }
static get versioningStrategy() { static get versioningStrategy() {
return core.getInput('versioning') || 'Semantic'; return Input.getInput('versioning') || 'Semantic';
} }
static get specifiedVersion() { static get specifiedVersion() {
return core.getInput('version') || ''; return Input.getInput('version') || '';
} }
static get androidVersionCode() { static get androidVersionCode() {
return core.getInput('androidVersionCode'); return Input.getInput('androidVersionCode');
} }
static get androidAppBundle() { static get androidAppBundle() {
const input = core.getInput('androidAppBundle') || false; const input = Input.getInput('androidAppBundle') || false;
return input === 'true'; return input === 'true';
} }
static get androidKeystoreName() { static get androidKeystoreName() {
return core.getInput('androidKeystoreName') || ''; return Input.getInput('androidKeystoreName') || '';
} }
static get androidKeystoreBase64() { static get androidKeystoreBase64() {
return core.getInput('androidKeystoreBase64') || ''; return Input.getInput('androidKeystoreBase64') || '';
} }
static get androidKeystorePass() { static get androidKeystorePass() {
return core.getInput('androidKeystorePass') || ''; return Input.getInput('androidKeystorePass') || '';
} }
static get androidKeyaliasName() { static get androidKeyaliasName() {
return core.getInput('androidKeyaliasName') || ''; return Input.getInput('androidKeyaliasName') || '';
} }
static get androidKeyaliasPass() { static get androidKeyaliasPass() {
return core.getInput('androidKeyaliasPass') || ''; return Input.getInput('androidKeyaliasPass') || '';
} }
static get allowDirtyBuild() { static get allowDirtyBuild() {
const input = core.getInput('allowDirtyBuild') || false; const input = Input.getInput('allowDirtyBuild') || false;
return input === 'true'; return input === 'true';
} }
static get customParameters() { static get customParameters() {
return core.getInput('customParameters') || ''; return Input.getInput('customParameters') || '';
} }
static get sshAgent() { static get sshAgent() {
return core.getInput('sshAgent') || ''; return Input.getInput('sshAgent') || '';
} }
static get chownFilesTo() { static get chownFilesTo() {
return core.getInput('chownFilesTo') || ''; return Input.getInput('chownFilesTo') || '';
} }
static get postBuildSteps() { static get postBuildSteps() {
return core.getInput('postBuildSteps'); return Input.getInput('postBuildSteps');
} }
static get preBuildSteps() { static get preBuildSteps() {
return core.getInput('preBuildSteps'); return Input.getInput('preBuildSteps');
} }
static get customBuildSteps() { static get customBuildSteps() {
return core.getInput('customBuildSteps'); return Input.getInput('customBuildSteps');
} }
static get cloudRunnerCluster() { static get cloudRunnerCluster() {
return core.getInput('cloudRunnerCluster') || ''; return Input.getInput('cloudRunnerCluster') || '';
} }
static get awsBaseStackName() { static get awsBaseStackName() {
return core.getInput('awsBaseStackName') || ''; return Input.getInput('awsBaseStackName') || '';
} }
static get kubeConfig() { static get kubeConfig() {
return core.getInput('kubeConfig') || ''; return Input.getInput('kubeConfig') || '';
} }
static get githubToken() { static get githubToken() {
return core.getInput('githubToken') || ''; return Input.getInput('githubToken') || '';
} }
static get cloudRunnerMemory() { static get cloudRunnerMemory() {
return core.getInput('cloudRunnerMemory') || '750M'; return Input.getInput('cloudRunnerMemory') || '750M';
} }
static get cloudRunnerCpu() { static get cloudRunnerCpu() {
return core.getInput('cloudRunnerCpu') || '1.0'; return Input.getInput('cloudRunnerCpu') || '1.0';
} }
static get kubeVolumeSize() { static get kubeVolumeSize() {
return core.getInput('kubeVolumeSize') || '5Gi'; return Input.getInput('kubeVolumeSize') || '5Gi';
} }
static get kubeVolume() { static get kubeVolume() {
return core.getInput('kubeVolume') || ''; return Input.getInput('kubeVolume') || '';
} }
} }

View File

@ -1659,11 +1659,28 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies: dependencies:
delayed-stream "~1.0.0" delayed-stream "~1.0.0"
commander-ts@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/commander-ts/-/commander-ts-0.2.0.tgz#14391337c1c725399cdfca5717da8e4fd0688eda"
integrity sha512-9XaUF3/3nmVtkDmAkijjhgEcwrMwKewaAJtN+GyTJBG3CJ5DfGB/JsXCVZcBW6SZB+QqiJxbK3e2/62tweMO8g==
dependencies:
commander "^7.2.0"
commander@^6.2.0: commander@^6.2.0:
version "6.2.1" version "6.2.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
commander@^8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
compare-versions@^3.6.0: compare-versions@^3.6.0:
version "3.6.0" version "3.6.0"
resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
@ -4611,6 +4628,11 @@ rechoir@^0.6.2:
dependencies: dependencies:
resolve "^1.1.6" resolve "^1.1.6"
reflect-metadata@^0.1.13:
version "0.1.13"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
regex-not@^1.0.0, regex-not@^1.0.2: regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"