github.com/oam-dev/kubevela@v1.9.11/docs/examples/workflow/Li-Auto-Inc/workflow-step-definitions.yaml (about)

     1  apiVersion: core.oam.dev/v1beta1
     2  kind: WorkflowStepDefinition
     3  metadata:
     4    name: apply-base
     5    namespace: vela-system
     6  spec:
     7    schematic:
     8      cue:
     9        template: |-
    10          import ("vela/op")
    11          parameter: {
    12             component: string
    13          }
    14          load: op.#Load
    15  
    16          apply: op.#ApplyComponent & {
    17             value: load.value[parameter.component]
    18          }
    19  
    20          workload: apply.output
    21          // wait until deployment ready
    22          wait: op.#ConditionalWait & {
    23             continue: workload.status.readyReplicas == workload.status.replicas && workload.status.observedGeneration == workload.metadata.generation
    24          }
    25  
    26          // export service ClusterIP
    27          clusterIP: apply.outputs["service"].value.spec.clusterIP
    28  ---
    29  apiVersion: core.oam.dev/v1beta1
    30  kind: WorkflowStepDefinition
    31  metadata:
    32    name: apply-helm
    33    namespace: vela-system
    34  spec:
    35    schematic:
    36      cue:
    37        template: |-
    38          import ("vela/op")
    39          parameter: {
    40             component: string
    41          }
    42          load: op.#Load
    43  
    44          apply: op.#ApplyComponent & {
    45             value: load.value[parameter.component]
    46          }
    47  
    48          // wait redis ready
    49          wait: op.#ConditionalWait & {
    50             // todo
    51             continue: true
    52          }
    53  ---
    54  apiVersion: core.oam.dev/v1beta1
    55  kind: WorkflowStepDefinition
    56  metadata:
    57    name: apply-proxy
    58    namespace: vela-system
    59  spec:
    60    schematic:
    61      cue:
    62        template: |-
    63          import (
    64             "vela/op"
    65             "encoding/json"
    66          )
    67          parameter: {
    68             component: string
    69             backendIP: string
    70          }
    71  
    72          // 往三方配置中心apollo读取配置
    73          // config: op.#HTTPGet
    74  
    75          load: op.#Load
    76  
    77          apply: op.#ApplyComponent & {
    78             value: load.value[parameter.component]
    79             // 给环境变量中注入BackendIP
    80             patch: workload: spec: template: spec: {
    81               containers: [{
    82                  // patchKey=name
    83                  env: [{name: "BackendIP",value: parameter.backendIP}]
    84               },...]
    85             }
    86          }
    87  
    88          workload: apply.output
    89          // wait until argo.rollout ready
    90          wait: op.#ConditionalWait & {
    91             continue: workload.status.readyReplicas == workload.status.replicas && workload.status.observedGeneration == workload.metadata.generation
    92          }
    93  
    94          message: {...}
    95          // 往三方配置中心apollo写配置
    96          notify: op.#HTTPPost & {
    97             url: "appolo-address"
    98             request: body: json.Marshal(message)
    99          }