我有一個資源傳感器來觸發一個工作流,該工作流報告導致事件的原始工作流 - 一種記錄器。在傳感器的參數中,我想獲取原始工作流的主體以便從中提取某些值——目前我打算簡單地將整個 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 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消