Skip to main content

Phase Dependencies

Last updated on

Phase dependencies control the execution order of phases in a release process. Understanding and properly configuring dependencies is essential for ensuring releases execute in the correct sequence.

What are Phase Dependencies?

Phase dependencies define which phases must complete before another phase can start. They ensure:

  • Correct execution order
  • Prerequisites are met
  • Data and artifacts are available
  • Validation occurs before deployment

Dependency Types

Sequential Dependencies

One phase must complete before another starts:

process:
phases:
- phase:
id: build_phase
name: Build Phase
depends-on: []
- phase:
id: test_phase
name: Test Phase
depends-on:
- build_phase
- phase:
id: deploy_phase
name: Deploy Phase
depends-on:
- test_phase

Execution Flow:

Build → Test → Deploy

Multiple dependencies

One phase can depend on multiple phases. In the following example, PhasEnd1 depends on multiple phases:

process:
phases:
- phase:
id: PhasEnd1
name: PhasEnd1
depends-on:
- deploy_phase
- Phase000U
- test_phase
- build_phase

Dependency Configuration

Basic Dependency

Simple dependency declaration:

phase:
id: test_phase
name: Test Phase
depends-on:
- build_phase

Common Dependency Patterns

Linear Chain

Sequential phases in a chain:

Phase 1 → Phase 2 → Phase 3 → Phase 4

Best Practices

Minimize Dependencies

Only add necessary dependencies:

  • Recommended: Essential prerequisites
  • Avoid: Unnecessary blocking

Clear Dependency Logic

Make dependencies explicit and understandable:

  • Use descriptive phase names
  • Document dependency reasons
  • Avoid implicit dependencies

Optimize for Parallelism

Structure dependencies to enable parallel execution:

  • Identify independent phases
  • Minimize sequential bottlenecks
  • Group related dependencies

Validate Early

Check dependencies during process creation:

  • Validate dependency chains
  • Detect cycles
  • Identify unreachable phases

Troubleshooting

Phase Not Starting

Check:

  • All dependencies completed successfully
  • No blocking conditions
  • Phase is not skipped
  • No errors in dependencies

Unexpected Execution Order

Verify:

  • Dependency configuration
  • Conditional logic
  • Parallel execution settings
  • Phase status