Skip to main content

Overview

The version: 2 env0.yaml schema introduces a change to how custom flow steps are configured and shown on env zero UI. These changes are reflected by:
  1. A new step schema, described here.
  2. Each custom step configured will be presented as a separate deployment step in env zero UI.
For example this env0.yaml:
version: 2
deploy:
  steps:
    terraformPlan:
      after:
        - name: Enforce Networking Policies  
          run: ./enforce-networking-policies-script.sh
          env:
            FOO: bar
Would yield this deployment step list:
A new Enforce Networking Policies custom deployment step
V1 String-Only Steps Backward CompatibilityAs the version: 1 schema steps used to be a list of strings, the new version: 2 schema keeps this syntax as backward compatible. The only difference is that now string-only steps will have their name originated by the command they execute. For example, if a step is configured as:
version: 2
deploy:
  steps:
    terraformPlan:
      after:
        - echo foo
then his custom deployment step name would be echo foo in env zero UI.

New Step Schema

The version: 2 steps are now configured as an object, rather than a string. This object includes the following attributes:
  1. name(Required) - The name of the step that would be shown in env zero UI.
  2. run (Exactly one of run or use is required) - The bash command/s to execute.
  3. use (Exactly one of run or use is required) - The GIT URL of the env zero plugin in the form of <url>@<tag> (for e.g https://github.com/env0/env0-opa-plugin@1.0.0)
  4. env - An object containing a map of environment variables by key and value that will be available to the step. A reference to another environment variable value thatโ€™s available to the deployment is achievable by prefixing the value with the $ sign.
  5. input(Relevant for plugins only) - An object of attributes that are required as inputs to the env zero plugin. Read more about it here.
  6. executeAfterChild (Relevant for project level custom flows only) - Defaults to false. When set to true the step will run after all the childrenโ€™s (sub projects and environments under that project) similar hooks finished to run.
๐Ÿ‘ Support for Multiline StringsIn case youโ€™d like to include multiple bash commands under a single step, you can use the supported YAML multiline string syntax. Hereโ€™s an example:
version: 2
deploy:
  steps:
    terraformPlan:
      after:
        - name: An Example of Multiline string
          run: |
            echo foo
            echo bar
            echo baz

Migrating from v1 Schema

In order to migrate from the version: 1 schema and keep the same deployments step structure in env zero UI, youโ€™ll need to include minor changes to your env0.yaml file. Hereโ€™s an example of how to migrate such a file to version: 2:

Before

version: 1
deploy:
  steps:
   terraformPlan:
     after:
       - pip install jq
       - echo "Installed jq"
       - jq --help

After

version: 2
deploy:
  steps:
   terraformPlan:
     after:
       - name: "Terraform Plan: After"
         run: |
           pip install jq
           echo "Installed jq"
      	   jq --help

โŒ˜I