320 lines
4.9 KiB
Markdown
320 lines
4.9 KiB
Markdown
---
|
|
title: Step Operations
|
|
---
|
|
|
|
This documentation will introduce the CUE operations provided in `vela/op` stdlib package that can be used in each workflow step.
|
|
|
|
> To learn the syntax of CUE, read [CUE Basic](../cue/basic)
|
|
|
|
## Apply
|
|
|
|
---
|
|
|
|
Create or update resource in Kubernetes cluster.
|
|
|
|
### Action Parameter
|
|
|
|
- value: the resource structure to be created or updated. And after successful execution, `value` will be updated with resource status.
|
|
- patch: the content support `Strategic Merge Patch`,let you can define the strategy of list merge through comments.
|
|
|
|
|
|
```
|
|
#Apply: {
|
|
value: {...}
|
|
patch: {
|
|
//patchKey=$key
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
import "vela/op"
|
|
stepName: op.#Apply & {
|
|
value: {
|
|
kind: "Deployment"
|
|
apiVersion: "apps/v1"
|
|
metadata: name: "test-app"
|
|
spec: {
|
|
replicas: 2
|
|
...
|
|
}
|
|
}
|
|
patch: {
|
|
spec: template: spec: {
|
|
//patchKey=name
|
|
containers: [{name: "sidecar"}]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## ConditionalWait
|
|
|
|
---
|
|
|
|
Step will be blocked until the condition is met.
|
|
### Action Parameter
|
|
|
|
- continue: Step will be blocked until the value becomes `true`.
|
|
|
|
```
|
|
#ConditionalWait: {
|
|
continue: bool
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
import "vela/op"
|
|
|
|
apply: op.#Apply
|
|
|
|
wait: op.#ConditionalWait: {
|
|
continue: apply.value.status.phase=="running"
|
|
}
|
|
```
|
|
|
|
## Load
|
|
|
|
---
|
|
|
|
Get all components in application.
|
|
|
|
### Action Parameter
|
|
No parameters.
|
|
|
|
|
|
```
|
|
#Load: {}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
import "vela/op"
|
|
|
|
// You can use `load.value.[componentName] after this action.
|
|
load: op.#Load & {}
|
|
```
|
|
|
|
## Read
|
|
|
|
---
|
|
|
|
Get resource in Kubernetes cluster.
|
|
|
|
### Action Parameter
|
|
|
|
- value: the resource metadata to be get. And after successful execution, `value` will be updated with resource definition in cluster.
|
|
- err: if an error occurs, the `err` will contain the error message.
|
|
|
|
|
|
```
|
|
#Read: {
|
|
value: {}
|
|
err?: string
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
// You can use configmap.value.data after this action.
|
|
configmap: op.#Read & {
|
|
value: {
|
|
kind: "ConfigMap"
|
|
apiVersion: "v1"
|
|
metadata: {
|
|
name: "configmap-name"
|
|
namespace: "configmap-ns"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## ApplyApplication
|
|
|
|
---
|
|
|
|
Create or update resources corresponding to the application in Kubernetes cluster.
|
|
|
|
### Action Parameter
|
|
|
|
No parameters.
|
|
|
|
```
|
|
#ApplyApplication: {}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
apply: op.#ApplyApplication & {}
|
|
```
|
|
|
|
## ApplyComponent
|
|
|
|
---
|
|
|
|
Create or update resources corresponding to the component in Kubernetes cluster. Note that need to use `Load` first to apply the resources.
|
|
|
|
### Action Parameter
|
|
|
|
- value: the load value of the resource.
|
|
- patch: the value to patch resource.
|
|
|
|
|
|
```
|
|
#ApplyComponent: {
|
|
value: {...}
|
|
patch: {...}
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
load: op.#Load & {}
|
|
|
|
apply: op.#ApplyComponent & {
|
|
value: load.value[parameter.component]
|
|
}
|
|
```
|
|
|
|
## ApplyRemaining
|
|
|
|
---
|
|
|
|
Create or update the resources corresponding to all components in the application in the Kubernetes cluster, and specify which components do not need to apply through `exceptions`, or skip some resources of the exceptional component.
|
|
|
|
### Action Parameter
|
|
|
|
- exceptions: indicates the name of the exceptional component.
|
|
|
|
|
|
```
|
|
#ApplyRemaining: {
|
|
exceptions?: [...string]
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
apply: op.#ApplyRemaining & {
|
|
exceptions: ["applied-component-name"]
|
|
}
|
|
```
|
|
|
|
## Slack
|
|
|
|
---
|
|
|
|
Send messages to Slack.
|
|
|
|
### Action Parameter
|
|
|
|
- url: The webhook address of Slack.
|
|
- message: The messages that you want to send, please refer to [Slack messaging](https://api.slack.com/reference/messaging/payload) 。
|
|
|
|
```
|
|
#Slack: {
|
|
url: string
|
|
message: {...}
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
apply: op.#Slack & {
|
|
url: webhook url
|
|
message:
|
|
text: Hello KubeVela
|
|
}
|
|
```
|
|
|
|
## DingTalk
|
|
|
|
---
|
|
|
|
Send messages to DingTalk.
|
|
|
|
### Action Parameter
|
|
|
|
- url: The webhook address of DingTalk.
|
|
- message: The messages that you want to send, please refer to [DingTalk messaging](https://developers.dingtalk.com/document/robots/custom-robot-access/title-72m-8ag-pqw) 。
|
|
|
|
```
|
|
#DingTalk: {
|
|
url: string
|
|
message: {...}
|
|
}
|
|
```
|
|
|
|
### Usage
|
|
|
|
```
|
|
apply: op.#DingTalk & {
|
|
url: webhook url
|
|
message:
|
|
msgtype: text
|
|
text:
|
|
context: Hello KubeVela
|
|
}
|
|
```
|
|
|
|
## Steps
|
|
|
|
---
|
|
|
|
Used to encapsulate a set of operations.
|
|
|
|
- In steps, you need to specify the execution order by tag.
|
|
|
|
|
|
### Usage
|
|
|
|
```
|
|
app: op.#Steps & {
|
|
load: op.#Load & {
|
|
component: "component-name"
|
|
} @step(1)
|
|
apply: op.#Apply & {
|
|
value: load.value.workload
|
|
} @step(2)
|
|
}
|
|
```
|
|
|
|
## DoVar
|
|
|
|
---
|
|
|
|
used to save or read user-defined data in the context of workflow
|
|
|
|
### Action Parameter
|
|
|
|
- method: The value is `get` or `put`, which indicates whether the action reads or saves data from workflow
|
|
- path: Path to save or read data
|
|
- value: Data content (in the format of cue). When the method is `get`, it indicates the read data, otherwise it indicates the data to be saved
|
|
|
|
### Usage
|
|
|
|
```
|
|
put: op.ws.#DoVar & {
|
|
method: "Put"
|
|
path: "foo.score"
|
|
value: 100
|
|
}
|
|
|
|
// The user can get the data saved above through get.value (100)
|
|
get: op.ws.#DoVar & {
|
|
method: "Get"
|
|
path: "foo.score"
|
|
}
|
|
|
|
``` |