diff --git a/docs/en/farm-config-json.md b/docs/en/farm-config-json.md index 6b1afa2..090bb73 100644 --- a/docs/en/farm-config-json.md +++ b/docs/en/farm-config-json.md @@ -51,6 +51,11 @@ Git repository format: `https://@github.com/.git`. - *Optional* > Maximum number of running instances. No limit by default. When limit is reached, new builds will be rejected. +### `instanceHashLength` +- *Number* +- *Optional* +> Maximum length of instance hash. If set, the hash is truncated to this length. Minimum value is 4; when not set, no truncation is applied. + ### `defaultBranch` - *String* - *Required* diff --git a/docs/ru/farm-config-json.md b/docs/ru/farm-config-json.md index 0f623b0..ddb30db 100644 --- a/docs/ru/farm-config-json.md +++ b/docs/ru/farm-config-json.md @@ -51,6 +51,11 @@ - *Optional* > Максимальное количество запущенных инстансов. По умолчанию без ограничения. Когда лимит достигнут, новые сборки будут отклонены. +### `instanceHashLength` +- *Number* +- *Optional* +> Максимальная длина хэша инстанса. Если задано, хэш обрезается до этой длины. Минимальное значение — 4; если не задано, обрезка не применяется. + ### `defaultBranch` - *String* - *Required* diff --git a/src/server/utils/common.ts b/src/server/utils/common.ts index 3bcb69b..33de362 100644 --- a/src/server/utils/common.ts +++ b/src/server/utils/common.ts @@ -15,6 +15,8 @@ export function getProviderConfig() { return envConfig.farmProvider; } +const INSTANCE_HASH_LENGTH = getGlobalFarmConfig().instanceHashLength; + export function generateInstanceHash( // required to ensure passing all props info: Required> & { @@ -47,7 +49,13 @@ export function generateInstanceHash( runEnvVariables: additionalRunEnvVariables, }); // replace first number with alphabet symbol for support most domain's standard implementation - return hash.replace(/^[0-9]{1}/, 'x'); + let result = hash.replace(/^[0-9]{1}/, 'x'); + + if (INSTANCE_HASH_LENGTH) { + result = result.slice(0, Math.max(INSTANCE_HASH_LENGTH, 4)); + } + + return result; } /** @deprecated */ diff --git a/src/server/utils/instance/index.ts b/src/server/utils/instance/index.ts index 897268f..03c4c70 100644 --- a/src/server/utils/instance/index.ts +++ b/src/server/utils/instance/index.ts @@ -87,7 +87,6 @@ const restartInstance = async (instance: Instance) => { /** * Get all projects with instances - * * @returns Array of projects with instances */ const getProjectsWithInstances = async () => { diff --git a/src/shared/common.ts b/src/shared/common.ts index c84a811..90b572e 100644 --- a/src/shared/common.ts +++ b/src/shared/common.ts @@ -76,6 +76,7 @@ export interface FarmConfigBase { urlTemplate?: string; defaultBranch?: string; vcs?: string; + instanceHashLength?: number; vcsCredentials?: { [key: string]: VcsCredentialsConfig | undefined;