我有一个资源传感器来触发一个工作流,该工作流报告导致事件的原始工作流 - 一种记录器。在传感器的参数中,我想获取原始工作流的主体以便从中提取某些值——目前我打算简单地将整个 JSON 作为输入字符串传递。当工作流很重要并且包含变量文件时,就会出现问题,例如:apiVersion: argoproj.io/v1alpha1kind: Workflowmetadata: generateName: test-es-workflow- labels: class: dummy-inspec: entrypoint: whalesay arguments: parameters: - name: message value: hello world templates: - name: whalesay inputs: parameters: - name: message container: image: docker/whalesay:latest command: [cowsay] args: ["{{inputs.parameters.message}}"]发生这种情况时触发的工作流程:apiVersion: argoproj.io/v1alpha1kind: Sensormetadata: name: demo-sensorspec: template: serviceAccountName: operate-workflow-sa dependencies: - name: test-dep-sensor eventSourceName: demo-wf-submit eventName: demo-log triggers: - template: name: argo-workflow k8s: operation: create source: resource: apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: demo-log- spec: entrypoint: demolog arguments: parameters: - name: body value: hello world templates: - name: demolog inputs: parameters: - name: body container: image: demolog:latest imagePullPolicy: "Always" command: [/app/demoapp.py] args: ["-j", "{{inputs.parameters.body}}"] 消息失败Message: invalid spec: templates.demolog: failed to resolve {{inputs.parameters.message}}如果工作流不包含任何变量({{}} 中没有包含任何变量),则触发的工作流将按预期执行。我很乐意弄清楚如何获得以下任何或所有解决方案:警告变量无法解析并替换为 null不要解析事件主体内的变量,即将其呈现为纯字符串在创建事件时解析变量,以便可以解析正文
1 回答

神不在的星期二
TA贡献1963条经验 获得超6个赞
我开发了类型 2 的答案,即渲染包含在双花括号中的变量。它并不优雅,但它似乎有效:
使用 jq 修补传感器的依赖项部分,用其他东西替换双花括号(我选择“%%”)
dependencies:
- name: test-dep-sensor
eventSourceName: demo-wf-submit
eventName: demo-log
transform:
jq: 'walk( if type=="string" then gsub("{{";"%%") else . end ) | walk( if type=="string" then gsub("}}";"%%") else . end )'
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消