亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Argo 事件:在傳感器中使用數據過濾器來識別 mono-repo 中修改/添加/刪除的路徑

Argo 事件:在傳感器中使用數據過濾器來識別 mono-repo 中修改/添加/刪除的路徑

Go
千巷貓影 2022-10-24 16:53:41
我正在為我的 CI/CD 鏈使用 Argo Events 和 Argo Workflow,它工作得非常整潔。但是我在為我的 mono repo的GitHub webhook 有效負載設置數據過濾器時遇到了一些麻煩。如果文件在某個子路徑中發生更改,我試圖讓傳感器僅觸發定義的工作流程。有效負載包含添加、刪除、修改三個字段。那里列出了在此提交中更改的文件(webhook-events-and-payloads#push)。我正在尋找的路徑是service/jobs/*和service/common*/*。我定義的過濾器是:          - path: "[commits.#.modified.#(%\"*service*\")#,commits.#.added.#(%\"*service*\")#,commits.#.removed.#(%\"*service*\")#]"             type: string             value:               - "(\bservice/jobs\b)|(\bservice/common*)"我在一個很小的Go腳本中驗證了我的過濾器,因為Argo Events 使用gjson來應用數據過濾器。package mainimport (    "github.com/tidwall/gjson"    "regexp")const json = `{    "commits": [      {        "added": [          ],        "removed": [          ],        "modified": [          "service/job-manager/README.md"        ]      },      {        "added": [          ],        "removed": [            "service/joby/something.md"        ],        "modified": [          "service/job-manager/something.md"        ]      },      {        "added": [          ],        "removed": [            "service/joby/something.md"        ],        "modified": [          "service/joby/someother.md"        ]      }    ],    "head_commit": {      "added": [        "service/job-manager/something.md"      ],      "removed": [        "service/joby/something.md"      ],      "modified": [        "service/job-manager/README.md"      ]    }  }`func main() {    value := gjson.Get(json, "[commits.#.modified.#(%\"*service*\")#,commits.#.added.#(%\"*service*\")#,commits.#.removed.#(%\"*service*\")#]")    println(value.String())    matched, _ := regexp.MatchString(`(\bservice/job-manager\b)|(\bservice/common*)`, value.String())    println(matched) // string is contained?}該腳本給了我預期的結果。但是對于相同的 webhook 有效負載,在將數據過濾器添加到傳感器時不會觸發工作流。有人有什么想法嗎?
查看完整描述

1 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

  • 路徑應以body.

  • 值應添加轉義特殊字符\\

所以數據過濾器應該是

- path: "[body.commits.#.modified.#(%\"*service*\")#,body.commits.#.added.#(%\"*service*\")#,body.commits.#.removed.#(%\"*service*\")#]"
  type: string
  value:
    - "(\\bservice/jobs\\b)|(\\bservice/common*)"


查看完整回答
反對 回復 2022-10-24
  • 1 回答
  • 0 關注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號