Dependency Resolution
togomak uses native dependency resolution, based on references within their attributes. Let's take a look at this example:
stage "alice" {
script = "echo hello world"
}
stage "bob" {
script = "echo waiting for ${stage.alice.id}"
}
In the above example, stage.alice
naturally becomes a dependency of stage.bob
.
However, you can also explicitly specify dependencies if you would like to:
stage "alice" {
script = "hello world"
}
stage "bob" {
depends_on = [stage.alice]
script = "hello bob"
}
Data evaluation
Data blocks are lazily evaluated. Data blocks will be only evaluated before the stage requiring them, gets executed.
stage "bob" {
script = "echo Hello World"
}
data "env" "bob_name" {
default = "Bob Ross"
}
stage "alice" {
script = "echo This is an environment variable: ${data.env.bob_name.value}"
}
In the above example, the order of execution would be stage.bob
and env.bob_name
in parallel, and then stage.alice
.
If you would like to disable concurrency, and let all the execution happen synchronously and linearly,
you can disable concurrency on togomak.pipeline.concurrency
options.