Profiles: Activation
The activation
option is optional and allows you to activate a profile using regular expression matching of either Devspace or environment variables. An activation is configured with the profile it activates in devspace.yaml
.
Example: Defining a Profile Activation using vars
vars:
- name: ENV
default: development
profiles:
- name: production
activation:
- vars:
ENV: production
patches:
- op: replace
path: images.backend.image
value: john/prodbackend
The production
profile would be activated when the Devspace variable ENV
has value production
. In this example, it has a default value of development
, so it is not activated unless you override the value using --var ENV=production
Example: Defining a Profile Activation using Environment Variables
profiles:
- name: production
activation:
- env:
ENV: "production"
patches:
- op: replace
path: images.backend.image
value: john/prodbackend
The production
profile would be activated when the environment variable ENV
has value production
:
Example: Regular Expression Activation
profiles:
- name: production
activation:
- env:
ENV: "prod-\d+"
patches:
- op: replace
path: images.backend.image
value: john/prodbackend
The profile production
would be activated when the environment variable ENV
matches the regular expression prod-\d+
. This can be useful for matching environment variables that have dynamic values. Regular expressions will have start of string (^
) and end of string ($
) anchors added automatically to avoid unexpected substring matching.
Example: Matching All
When multiple env
or vars
name/expression pairs are specified in the same activation, all expressions must match to activate the profile. For example, the production
profile is activated when the environment variable CI
is true
and the Devspace variable ENV
is development
:
profiles:
- name: production
activation:
- env:
CI: "true"
vars:
ENV: "development"
patches:
- op: replace
path: images.backend.image
value: john/devbackend
env
and vars
While possible to activate profiles using environment variables and Devspace variables, vars
can also be populated through environment variables. In the above example, we could have also defined CI
as a Devspace variable with source: env
and only used vars
in the activation.
Example: Matching Any
When env
or vars
are used in multiple activations, the profile is activated when any expression matches. In this example, the production
profile is activated when either match their expressions:
profiles:
- name: production
activation:
- env:
CI: "true"
- vars:
ENV: "development"
patches:
- op: replace
path: images.backend.image
value: john/devbackend
Dependency Activations
When dependencies
are referenced from a devspace.yaml
, the dependency's profile activations will also be evaluated. In this example, any profile activations in ./component-1/devspace.yaml
or ./component-2/devspace.yaml
would be evaluated.
dependencies:
- name: component-1
source:
path: ./component-1
- name: component-2
source:
path: ./component-2
Example: Disable Activations by Dependency
The disableProfileActivation
option can be used to disable profile activations for specific dependencies. In the following example, the activations for ./component-1/devspace.yaml
would be ignored, while the activations in ./component-2/devspace.yaml
would be evaluated:
dependencies:
- name: component-1
source:
path: ./component-1
disableProfileActivation: true
- name: component-2
source:
path: ./component-2
Disable Activations Globally
The --disable-profile-activation
flag can be used to disable all profile activations, including those specifed within each dependency's devspace.yaml
.