mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-04 12:25:19 -04:00

* feat: streamline code styles * feat: spacing for comments and return statements * chore: enforce camelcase * fix: remove npm lock file * fix: add integrity test * fix: remove logfile * chore: update node in test workflow
290 lines
7.0 KiB
TypeScript
290 lines
7.0 KiB
TypeScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import { Cli } from './cli/cli';
|
|
import CloudRunnerQueryOverride from './cloud-runner/services/cloud-runner-query-override';
|
|
import Platform from './platform';
|
|
|
|
const core = require('@actions/core');
|
|
|
|
/**
|
|
* Input variables specified in workflows using "with" prop.
|
|
*
|
|
* Note that input is always passed as a string, even booleans.
|
|
*
|
|
* Todo: rename to UserInput and remove anything that is not direct input from the user / ci workflow
|
|
*/
|
|
class Input {
|
|
public static githubInputEnabled: boolean = true;
|
|
|
|
public static getInput(query) {
|
|
if (Input.githubInputEnabled) {
|
|
const coreInput = core.getInput(query);
|
|
if (coreInput && coreInput !== '') {
|
|
return coreInput;
|
|
}
|
|
}
|
|
const alternativeQuery = Input.ToEnvVarFormat(query);
|
|
|
|
// Query input sources
|
|
if (Cli.query(query, alternativeQuery)) {
|
|
return Cli.query(query, alternativeQuery);
|
|
}
|
|
|
|
if (CloudRunnerQueryOverride.query(query, alternativeQuery)) {
|
|
return CloudRunnerQueryOverride.query(query, alternativeQuery);
|
|
}
|
|
|
|
if (process.env[query] !== undefined) {
|
|
return process.env[query];
|
|
}
|
|
|
|
if (alternativeQuery !== query && process.env[alternativeQuery] !== undefined) {
|
|
return process.env[alternativeQuery];
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
static get region(): string {
|
|
return Input.getInput('region') || 'eu-west-2';
|
|
}
|
|
|
|
static get githubRepo() {
|
|
return Input.getInput('GITHUB_REPOSITORY') || Input.getInput('GITHUB_REPO') || undefined;
|
|
}
|
|
static get branch() {
|
|
if (Input.getInput(`GITHUB_REF`)) {
|
|
return Input.getInput(`GITHUB_REF`).replace('refs/', '').replace(`head/`, '').replace(`heads/`, '');
|
|
} else if (Input.getInput('branch')) {
|
|
return Input.getInput('branch');
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
static get cloudRunnerBuilderPlatform() {
|
|
const input = Input.getInput('cloudRunnerBuilderPlatform');
|
|
if (input) {
|
|
return input;
|
|
}
|
|
if (Input.cloudRunnerCluster !== 'local') {
|
|
return 'linux';
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
static get gitSha() {
|
|
if (Input.getInput(`GITHUB_SHA`)) {
|
|
return Input.getInput(`GITHUB_SHA`);
|
|
} else if (Input.getInput(`GitSHA`)) {
|
|
return Input.getInput(`GitSHA`);
|
|
}
|
|
}
|
|
|
|
static get runNumber() {
|
|
return Input.getInput('GITHUB_RUN_NUMBER') || '0';
|
|
}
|
|
|
|
static get targetPlatform() {
|
|
return Input.getInput('targetPlatform') || Platform.default;
|
|
}
|
|
|
|
static get unityVersion() {
|
|
return Input.getInput('unityVersion') || 'auto';
|
|
}
|
|
|
|
static get customImage() {
|
|
return Input.getInput('customImage') || '';
|
|
}
|
|
|
|
static get projectPath() {
|
|
const input = Input.getInput('projectPath');
|
|
const rawProjectPath = input
|
|
? input
|
|
: fs.existsSync(path.join('test-project', 'ProjectSettings', 'ProjectVersion.txt')) &&
|
|
!fs.existsSync(path.join('ProjectSettings', 'ProjectVersion.txt'))
|
|
? 'test-project'
|
|
: '.';
|
|
|
|
return rawProjectPath.replace(/\/$/, '');
|
|
}
|
|
|
|
static get buildName() {
|
|
return Input.getInput('buildName') || this.targetPlatform;
|
|
}
|
|
|
|
static get buildsPath() {
|
|
return Input.getInput('buildsPath') || 'build';
|
|
}
|
|
|
|
static get buildMethod() {
|
|
return Input.getInput('buildMethod') || ''; // Processed in docker file
|
|
}
|
|
|
|
static get customParameters() {
|
|
return Input.getInput('customParameters') || '';
|
|
}
|
|
|
|
static get versioningStrategy() {
|
|
return Input.getInput('versioning') || 'Semantic';
|
|
}
|
|
|
|
static get specifiedVersion() {
|
|
return Input.getInput('version') || '';
|
|
}
|
|
|
|
static get androidVersionCode() {
|
|
return Input.getInput('androidVersionCode');
|
|
}
|
|
|
|
static get androidAppBundle() {
|
|
const input = Input.getInput('androidAppBundle') || false;
|
|
|
|
return input === 'true';
|
|
}
|
|
|
|
static get androidKeystoreName() {
|
|
return Input.getInput('androidKeystoreName') || '';
|
|
}
|
|
|
|
static get androidKeystoreBase64() {
|
|
return Input.getInput('androidKeystoreBase64') || '';
|
|
}
|
|
|
|
static get androidKeystorePass() {
|
|
return Input.getInput('androidKeystorePass') || '';
|
|
}
|
|
|
|
static get androidKeyaliasName() {
|
|
return Input.getInput('androidKeyaliasName') || '';
|
|
}
|
|
|
|
static get androidKeyaliasPass() {
|
|
return Input.getInput('androidKeyaliasPass') || '';
|
|
}
|
|
|
|
static get androidTargetSdkVersion() {
|
|
return Input.getInput('androidTargetSdkVersion') || '';
|
|
}
|
|
|
|
static get sshAgent() {
|
|
return Input.getInput('sshAgent') || '';
|
|
}
|
|
|
|
static get gitPrivateToken() {
|
|
return core.getInput('gitPrivateToken') || false;
|
|
}
|
|
|
|
static get customJob() {
|
|
return Input.getInput('customJob') || '';
|
|
}
|
|
|
|
static customJobHooks() {
|
|
return Input.getInput('customJobHooks') || '';
|
|
}
|
|
|
|
static cachePushOverrideCommand() {
|
|
return Input.getInput('cachePushOverrideCommand') || '';
|
|
}
|
|
|
|
static cachePullOverrideCommand() {
|
|
return Input.getInput('cachePullOverrideCommand') || '';
|
|
}
|
|
|
|
static readInputFromOverrideList() {
|
|
return Input.getInput('readInputFromOverrideList') || '';
|
|
}
|
|
|
|
static readInputOverrideCommand() {
|
|
return Input.getInput('readInputOverrideCommand') || '';
|
|
}
|
|
|
|
static get cloudRunnerBranch() {
|
|
return Input.getInput('cloudRunnerBranch') || 'cloud-runner-develop';
|
|
}
|
|
|
|
static get chownFilesTo() {
|
|
return Input.getInput('chownFilesTo') || '';
|
|
}
|
|
|
|
static get allowDirtyBuild() {
|
|
const input = Input.getInput('allowDirtyBuild') || false;
|
|
|
|
return input === 'true';
|
|
}
|
|
|
|
static get postBuildSteps() {
|
|
return Input.getInput('postBuildSteps') || '';
|
|
}
|
|
|
|
static get preBuildSteps() {
|
|
return Input.getInput('preBuildSteps') || '';
|
|
}
|
|
|
|
static get awsBaseStackName() {
|
|
return Input.getInput('awsBaseStackName') || 'game-ci';
|
|
}
|
|
|
|
static get cloudRunnerCluster() {
|
|
if (Cli.isCliMode) {
|
|
return Input.getInput('cloudRunnerCluster') || 'aws';
|
|
}
|
|
|
|
return Input.getInput('cloudRunnerCluster') || 'local';
|
|
}
|
|
|
|
static get cloudRunnerCpu() {
|
|
return Input.getInput('cloudRunnerCpu') || '1.0';
|
|
}
|
|
|
|
static get cloudRunnerMemory() {
|
|
return Input.getInput('cloudRunnerMemory') || '750M';
|
|
}
|
|
|
|
static get kubeConfig() {
|
|
return Input.getInput('kubeConfig') || '';
|
|
}
|
|
|
|
static get kubeVolume() {
|
|
return Input.getInput('kubeVolume') || '';
|
|
}
|
|
|
|
static get kubeVolumeSize() {
|
|
return Input.getInput('kubeVolumeSize') || '5Gi';
|
|
}
|
|
|
|
static get kubeStorageClass(): string {
|
|
return Input.getInput('kubeStorageClass') || '';
|
|
}
|
|
|
|
static get checkDependencyHealthOverride(): string {
|
|
return Input.getInput('checkDependencyHealthOverride') || '';
|
|
}
|
|
|
|
static get startDependenciesOverride(): string {
|
|
return Input.getInput('startDependenciesOverride') || '';
|
|
}
|
|
|
|
static get cacheKey(): string {
|
|
return Input.getInput('cacheKey') || Input.branch;
|
|
}
|
|
|
|
static get cloudRunnerTests(): boolean {
|
|
return Input.getInput(`cloudRunnerTests`) || false;
|
|
}
|
|
|
|
public static ToEnvVarFormat(input: string) {
|
|
if (input.toUpperCase() === input) {
|
|
return input;
|
|
}
|
|
|
|
return input
|
|
.replace(/([A-Z])/g, ' $1')
|
|
.trim()
|
|
.toUpperCase()
|
|
.replace(/ /g, '_');
|
|
}
|
|
}
|
|
|
|
export default Input;
|