Naming Conventions

Rules enforced by QAConfig.Validation and shared across every step.

Env names

Regex

^[a-z0-9][a-z0-9-]{2,49}$

Length

3–50 characters.

Allowed characters

lowercase ASCII letters, digits, hyphen.

Leading character

letter or digit — starting with a digit is allowed (commit 83b82f9; older docs may say "must start with a letter").

Reserved names

master, main, test, default, prod, null, built-in, all, temp, tmp, none — rejected by isReservedName.

Helpers:

  • QAConfig.Validation.isValidEnvName(name) — regex match only.

  • QAConfig.Validation.isReservedName(name) — reserved-list check.

  • utils.validateEnvName(name, checkExists = true) — combined validator used by pipeline steps. Fails fast with a human-readable message.

Container names

Containers are named ${ENV_NAME:-ft}_<service> in every Compose block. Consequences:

  • Host-wide container names are unique per env (given unique env names).

  • Cleanup / diagnostics can rely on this prefix: docker ps --filter "name=${ENV_NAME}_".

  • Never hard-code container names in Compose overrides — always use the ${ENV_NAME:-ft}_ prefix.

Network names

Each Compose bundle declares a top-level project via name: ft-services-mysql / name: ft-services-oracle. By default the services use the implicit project default network (<project>_default). QAConfig.Defaults.NETWORK_NAME_SUFFIX = '_net' is reserved for env-scoped networks if services later opt into per-env networking — today they do not.

If you need a per-env network, set networks.<name>: { driver: bridge } on the service block and use ${ENV_NAME}${QAConfig.Defaults.NETWORK_NAME_SUFFIX} — but this is not the current pattern and should be introduced deliberately.

Variable names in .env files

By convention across the bundles:

Prefix / suffix Use

*_IMAGE

Docker image reference, format registry/repo:tag.

*_PORT

Host port mapping.

*_HOST

Hostname or Compose service name.

*_USER, *_USERNAME

Account name.

*_PASSWORD, *_TOKEN, *_SECRET, *_API_KEY, *_KEY, *_CREDENTIAL

Sensitive value — masked by utils.maskSensitiveValues via Validation.SENSITIVE_PATTERN.

DATA_FOLDER

Base path for bind mounts; defaults to . (the env directory).

ENV_NAME

Current env name — consumed by every container_name: line.

FT_QOE_WEB_* (in root .env.<db> only)

Host-side tunables that need the FT_QOE_WEB_ prefix to coexist with other stacks. Inside the container, the variables are unprefixed — see ft-qoe-web section.

Jenkins job names

Under the QA-Environments/ folder in Jenkins (v2.6.0):

  • Create-Environment

  • Deploy-Environment

  • Update-Environment

  • Manage-Environment — dispatcher for start / stop / restart / delete / manage-owners

  • List-Environments

  • Cleanup-Environments

There are no separate Stop-Environment, Delete-Environment, or Restore-Environment jobs; the underlying shared-library steps (deleteEnvStep, restoreEnvStep) exist but are invoked from Manage-Environment actions. Stick to the names above — utils.logOperation and the audit log reference them verbatim.