-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
96 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# Procedures and Actions | ||
|
||
For orchestrations involving multiple Resources, Komodo offers the `Procedure` and `Action` resource types. | ||
|
||
## Procedures | ||
|
||
`Procedures` are compositions of many executions, such as `RunBuild` and `DeployStack`. | ||
The executions are grouped into a series of `Stages`, where each `Stage` contains one or more executions | ||
to run **_all at once_**. The Procedure will wait until all of the executions in a `Stage` are complete before moving | ||
on to the next stage. In short, the executions in a `Stage` are run **_in parallel_**, and the stages themselves are | ||
executed **_sequentially_**. | ||
|
||
### Batch Executions | ||
|
||
Many executions have a `Batch` version you can select, for example [**BatchDeployStackIfChanged**](https://docs.rs/komodo_client/latest/komodo_client/api/execute/struct.BatchDeployStackIfChanged.html). With this, you can match multiple Stacks by name | ||
using [**wildcard syntax**](https://docs.rs/wildcard/latest/wildcard) and [**regex**](https://docs.rs/regex/latest/regex). | ||
|
||
### TOML Example | ||
|
||
Like all Resources, `Procedures` have a TOML representation, and can be managed in `ResourceSyncs`. | ||
|
||
```toml | ||
[[procedure]] | ||
name = "pull-deploy" | ||
description = "Pulls stack-repo, deploys stacks" | ||
|
||
[[procedure.config.stage]] | ||
name = "Pull Repo" | ||
executions = [ | ||
{ execution.type = "PullRepo", execution.params.pattern = "stack-repo" }, | ||
] | ||
|
||
[[procedure.config.stage]] | ||
name = "Deploy if changed" | ||
executions = [ | ||
# Uses the Batch version, witch matches many stacks by pattern | ||
# This one matches all stacks prefixed with `foo-` (wildcard) and `bar-` (regex). | ||
{ execution.type = "BatchDeployStackIfChanged", execution.params.pattern = "foo-* , \\^bar-.*$\\" }, | ||
] | ||
``` | ||
|
||
## Actions | ||
|
||
`Actions` give users the power of Typescript to write calls to the Komodo API. | ||
|
||
For example, an `Action` script like this will align the versions and branches of many `Builds`. | ||
|
||
```ts | ||
const VERSION = "1.16.5"; | ||
const BRANCH = "dev/" + VERSION; | ||
const APPS = ["core", "periphery"]; | ||
const ARCHS = ["x86", "aarch64"]; | ||
|
||
await komodo.write("UpdateVariableValue", { | ||
name: "KOMODO_DEV_VERSION", | ||
value: VERSION, | ||
}); | ||
console.log("Updated KOMODO_DEV_VERSION to " + VERSION); | ||
|
||
for (const app of APPS) { | ||
for (const arch of ARCHS) { | ||
const name = `komodo-${app}-${arch}-dev`; | ||
await komodo.write("UpdateBuild", { | ||
id: name, | ||
config: { | ||
version: VERSION as any, | ||
branch: BRANCH, | ||
}, | ||
}); | ||
console.log( | ||
`Updated Build ${name} to version ${VERSION} and branch ${BRANCH}`, | ||
); | ||
} | ||
} | ||
|
||
for (const arch of ARCHS) { | ||
const name = `periphery-bin-${arch}-dev`; | ||
await komodo.write("UpdateRepo", { | ||
id: name, | ||
config: { | ||
branch: BRANCH, | ||
}, | ||
}); | ||
console.log(`Updated Repo ${name} to branch ${BRANCH}`); | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters