Create a New Workflow
To set up a Workflow, follow this simple guide:
env0 relies on a file named env0.workflow.yml to describe the dependencies and configuration of the sub environments in your workflow. Each environment definition in the file should contain:
- name: Will be displayed in the Workflow graph
- templateName(optional, conflicts with vcs): A name of a pre-defined template to deploy
Template Naming
While we don't enforce it, the best practice is to use unique template names.
Otherwise, the Workflow will randomly choose one of the templates, without considering any permission restrictions. - vcs(optional, conflict with templateName): Information to integrate with the VCS and all the information used to create a template
- needs (optional): An array of sub environments which all must be successfully deployed before this sub environment can start deploying
- revision: (optional) A revision for this specific environment's Template to deploy
- workspace (optional): A name for the terraform workspace for a new environment
Note: The Workspace attribute can not be set for an existing environment.Workspace for other IaCs
For Helm Templates - The
workspace
configuration sets therelease-name
.
For Pulumi and CloudFormation templates - The workspace configuration sets thestack-name
. - disabled (optional): Setting this to true will leave this particular environment out of this workflow. Combined with the ability to set environment variables, this is handy for allowing partial workflow deployments
- requiresApproval (optional): Setting this to true will force this particular environment to require approval in the Workflow, meaning that the Workflow will not proceed with the environments until the deployment is approved
Prioritization of Environment Approval
It is possible to define an environment in a workflow in multiple ways. Follow this order for prioritizing approval value:
- Using the ENV0_REQUIRES_APPROVAL environment variable to force approval
- Approval policy - If an approval policy is defined it will always be evaluated for the environment
- Value from the UI - Determines whether a value is defined in the UI or from an API request
- Value defined from the workflow
requiresApproval
field
Example configuration
environments:
vpc:
name: 'VPC and Network'
templateName: 'VPC'
db:
name: DB
templateName: 'DB'
requiresApproval: true
needs:
- vpc
eks:
name: EKS
templateName: 'EKS'
needs:
- vpc
service1:
name: 'Billing Service'
vcs:
type: 'terraform'
terraformVersion: '1.5.7'
repository: 'https://github.com/env0/templates'
path: 'aws/hello-world'
githubInstallationId: 123456789
# bitbucketClientKey for bitbucket
# gitlabProjectId for gitlab
disabled: ${DISABLE_SERVICE_1} # omit service1 deployment,
# if the interpolated env var DISABLE_SERVICE_1 is true
needs:
- db
- eks
service2:
name: 'Configuration Service'
templateName: 'Configuration Service'
revision: feature-branch
disabled: ${DISABLE_SERVICE_2}
needs:
- db
- eks
service3:
name: 'Notification Service'
templateName: 'Notification Service'
workspace: env0-workspace
disabled: ${DISABLE_SERVICE_3}
needs:
- db
- eks
Removing Environment
Please note that by default, removing an environment from the workflow file and redeploying it is not supported, as your environment will be left detached from the workflow.
If you would like env0 to destroy the removed environments, you need to add a Settings section to yourenv0.workflow.yml
Settings:
environments:
vpc:
name: 'VPC and Network'
templateName: 'VPC'
settings:
environmentRemovalStrategy: destroy | detach
By setting environmentRemovalStrategy to destroy env0 will automatically destroy the removed environments after deploying all environments
Creating a Workflow in the UI
- Create a new template and select env0 Workflow as the Template Type:
In the VCS step, fill in your VCS details and the directory that contains your env0.workflow.yml file:
- Create an Environment based on the Workflow template.
You can choose any of the workflow environments from the dropdown menu in the top right corner.
After choosing one of the workflow sub-environments, you can modify its variables, workspace, revision and auto-approval settings.
Remote Backend
The Remote Backend option will be applied to Terraform templates only. For further documentation about remote backend, follow this guide.
Overrides Note
The values you set here for workspace and revision will override the ones youâve defined in the workflow file for the corresponding environment.
If you would like to set the whole workflow to the same workspace name value, you can do so by setting the workflow workspace name, and leaving the sub environments blank.
Note that since Terragrunt uses a working directory instead of workspace name, the workspace name override won't apply to Terragrunt template type.
When marking the workflow as remote backend, you must provide unique names for each of the sub environments workspaces.
-
Deploy
Updated 3 months ago