Schema URL

Type: object

Deployah configuration file, used to configure the deployment process.

Properties

apiVersion string required

Schema version, e.g. v1-alpha.1, v1-beta.2, v1-rc.1, v1

Examples: "v1-alpha.1", "v1-beta.2", "v1-rc.1", "v1"
pattern=^v[0-9]+(-(alpha|beta|rc)\.[0-9]+)?$
project string required

The project name used to identify deployments and prefix Kubernetes resources. Must be a valid DNS-1123 subdomain containing only lowercase alphanumeric characters or '-'. Must start and end with an alphanumeric character.

minLength=3maxLength=64pattern=^[a-z0-9]+(?:-[a-z0-9]+)*$
components object required

The components configuration, defining deployable units in the project.

environments object[]

List of environment definitions. If not specified or empty, Deployah will fall back to hardcoded conventions such as config.yaml and .env.

Examples

{
  "apiVersion": "v1-beta.2",
  "project": "demo-project",
  "environments": [
    {
      "name": "production",
      "envFile": ".env.production",
      "configFile": "config.production.yaml"
    },
    {
      "name": "staging",
      "envFile": ".env.staging",
      "configFile": "config.staging.yaml"
    }
  ],
  "components": {
    "web": {
      "role": "service",
      "kind": "stateless",
      "image": "nginx:latest",
      "port": 8080,
      "ingress": {
        "host": "example.com",
        "tls": true
      }
    },
    "api": {
      "role": "service",
      "kind": "stateless",
      "image": "api:latest",
      "port": 8080,
      "autoscaling": {
        "enabled": true,
        "minReplicas": 2,
        "maxReplicas": 5,
        "metrics": [
          {
            "type": "cpu",
            "target": 75
          },
          {
            "type": "memory",
            "target": 80
          }
        ]
      },
      "resources": {
        "cpu": "100m",
        "memory": "256Mi"
      }
    }
  }
}