GuidesAPI Reference
Log In

Application Configuration Reference

application:
  name: ""  # requried, unique Application name
  releaseChannels:  # required
  - name: ""  # required, Release Channel name
    group: ""  # if specified, this Release Channel is part of a group. This can affect how release channels are rendered on the Prodvana UI.
    runtimes:  # required, list of Runtimes that Services in this Release Channel can deploy to. A Service will pick only one Runtime on this list to deploy to, e.g. having an ECS Runtime and Kubernetes Runtime available in the same Release Channel for appropriate Services.
    - runtime: ""  # Runtime name
      name: ""  # optional, fill this in if the Release Channel has more than one Runtime capable of running the same kind of Services. Will be used by the Service's `runtimeConnection` setting.
      containerOrchestration:  # optional settings for certain kinds of Runtimes
        k8s:  # Kubernetes Runtime settings
          namespace: ""  # optional, what namespace to use for this Release Channel. If not specified, Prodvana will create one based on the Application and Release Channel names.
    preconditions:  # optional, what needs to be true before deploying to this Release Channel
    - # exactly one of these can be specified
      releaseChannelStable:  # wait for a Release Channel to be stable
        # one of `releaseChannel`, `selector` is required
        releaseChannel: ""  # Release Channel name that the Service must be stable in before deploying
        selector: ""  # a label selector query to wait on a group of Release Channels. @application=<app name> is added automatically.
        allowEmpty: false  # if using selector, allow selector to return an empty list (otherwise, doing so will result in an error).
      manualApproval:  # wait for an approval via Prodvana UI
        name: ""  # optional, approval name. will be autogenerated
        description: ""  # optional
        everyAction: false  # request approval before every deployment action, not just the first. Only works for Custom Runtimes, ignored otherwise.
      sharedManualApproval:  # like manualApproval, but have a single approval shared by many different Release Channels
        name: ""  # required, the name is what determines uniqueness.
    protections:  # Release-Channel-level protections
    - name: ""  # optional, defaults to Protection name. Useful if the same Protection is instantiated many times in the same Service/Release Channel
      ref:  # required, reference a Protection defined from `pvnctl configs apply`
      - name: ""  # required, Protection name
        parameters:
        - name: ""  # required, parameter name
          # one of the following is required and must match the parameter definition
          string: ""  # string parameter value
          int: 0  # int parameter value
          dockerImageTag: ""  # docker image tag parameter value
          commit: ""  # commit parameter value
          blob: ""  # blob parameter value, the content of the blob to pass as an ID
          secret:  # a Prodvana secret
            secretRef:
              key: ""
              version: ""
      lifecycle: # optional, if not specified, the Protection will run but not impact convergence
        # at least one of these is required
        preApproval: {}
        postApproval: {}
        deployment: {}
        postDeployment:
          checkDuration: 0s  # required, how long to check the Protection for after deployment is complete
          delayCheckDuration: 0s  # optional, how long to wait before checking the Protection. If specified, the total duration in this lifecycle is the sum of checkDuration and delayCheckDuration.
    serviceInstanceProtections: ...  # Service-Instance-level Protections to apply to every Service in this Release Channel. Same schema as `protections`.
    convergenceProtections: ...  # convergence-level Protections to apply to every Service in this Release Channel. Same schema as `protections`.
    policy:  # optional
      defaultEnv:  # optional, default env variables for all Services, only supported for Kubernetes or Prodvana-backend-agnostic config
        "key":
           # one of these is required
          value: ""  # string value
          secret:  # reference a secret stored on Prodvana
            key: ""  # required
            version: ""  # required
          kubernetesSecret:  # reference a Kubernetes secret. The secret must already exist on the same namespace as the Service.
            secretName: ""  # required, secret name
            key: ""  # required, map key inside the secret to use (Kubernetes secrets are stored as a map)
    constants:  # optional, constants to be made available to Services in template variables under {{.Constants.*}}
    - name: ""  # required, name of constant, also used as template variable name
      string:
        value: ""  # constant value
    labels:  # optional, custom Release Channel labels
    - label: ""  # required
      value: ""  # required
    deployAnnotations:  # optional, annotations used when pushing events to external systems
      honeycomb:  # optional
        environment: ""  # required, Honeycomb environment
        dataset: ""  # optional
    disableAllProtections: false  # optional, disable all Protections defined on this Release Channel. Useful for testing or spinning up new Release Channels quickly.
  releaseChannelGroups:  # optional, used to generate a large list of Release Channels from a Runtime label selector.
  - name: ""  # required, Release Channel group name
    runtimeSelector: ""  # required, label selector for runtimes to generate release channels for. One release channel will be generated for each runtime that matches this selector. The selector will automatically be intersected with "@type=runtime".
    allowEmpty: false  # required, allow selector to return an empty list (otherwise, doing so will result in an error).
    # optional, customize how the release channel will be generated.
    # Template variables .Builtins.Group an d.Builtins.Runtime are available.
    # Any value specified here will be merged with:
    # name: {{.Builtins.Group}}-{{.Builtins.Runtime.Name}}
    # group: {{.Builtins.Group}}
    # runtimes:
    # - runtime: {{Builtins.Runtime.Name}}
    template: ...
  notifications:  # optional
    slack:  # Slack notification for releases
      channel: ""  # Slack channel to send notifications to