Group steps using step groups
Steps can be added to pipelines individually or as a step group.
Individual steps and steps in step groups can be run serially or in parallel.
Unlike individual steps, a step group can apply conditional execution (skip conditions), failure strategy, and Rollback steps to all steps in the group.
You can also run pipeline stages in parallel. Deploy multiple services simultaneously and perform flow control using Barriers. Go to synchronize deployments using barriers for more information. This topic describes how to add a step group in a stage.
Review the following topics before you add step groups.
- Currently, Harness supports step groups in CD stages only. CI stage support is coming soon.
This short video walks through step groups:
Common parallel steps
Running steps in parallel can be beneficial in many ways, such as:
- Simulating load using multiple HTTP steps.
- Running multiple Verify steps for different providers (AppDynamics, Splunk, Prometheus, etc).
- Running independent steps that don't need to be run serially.
- Running multiple Kubernetes Apply steps to deploy multiple Kubernetes resources at once.
- Deleting multiple resources at once.
- Creating or updating multiple Jira issues using Jira Create and Jira Update steps.
- Provisioning multiple resources using Terraform. Go to provision with the Terraform Apply step for more details.
- Save time. You might have 5 steps but you can run steps 2 and 3 in parallel because they are independent. Step 4 is run once they have completed.
Add and name the step group
In your stage, in Execution, select Add Step and then select Step Group.
The step group setting appear.
Enter a name for the step group.
A step group can have its own conditional execution settings separate from the conditional execution settings for the stage. The conditional execution settings of the step group apply to all of its steps.
For more information, go to step skip condition settings.
The conditional execution settings of any step in a step group overrides the conditional execution settings of the step group.
If you do not use step group conditional execution settings, then the stage's conditional execution settings are used.
Step group failure strategy
A step group can have its own failure strategy separate from the failure strategy for the stage.
The failure strategy can execute the Rollback steps for the step group.
The step group Rollback steps are only run if the failure strategy for the step group has Rollback Step Group selected.
Go to step failure strategy settings for more information.
The failure strategy of any step in a step group overrides the Failure Strategy of the step group.
If you do not use a step group failure strategy, then the stage's failure strategy is used.
Add steps to the step group
Once the step group is added, in its Execution section, in the new step group, select Add Step.
Add any step and configure its Advanced settings.
A step's Advanced settings override the Advanced settings of the step group.
Add rollback steps
A step group can have its own rollback steps separate from the rollback steps for the stage.
The step group rollback steps are only run if the failure strategy for the step group has Rollback Step Group selected.
In the step group, click the Execution/Rollback toggle:
In the Rollback view, click Add Step to add a rollback step.
For example, you can use the Rolling Rollback step for a Kubernetes Rollback.
Reference step group steps
You reference steps in step groups using the step group Id.
The FQN format is:
<+pipeline.stages.[stage Id].spec.execution.steps.[step group Id].steps.[step Id].[step setting name]>
For example, to reference the URL setting in an HTTP step in a step group with the Id
Group1, the FQN would be:
- When you run steps in parallel you cannot reference the outputs of one step in another step. The output for one step might not be available when another step requests it.
- Delegate selectors can be configured for each step in the step group. You cannot configure a delegate selector at the group level.
- Step groups cannot have nested step groups, but you can put groups of steps next to each other in a step group:
The steps in each group run in parallel but each group runs serially.