Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rollr76518/31289fede3a87934cb411aa6dd66b77b to your computer and use it in GitHub Desktop.
Save rollr76518/31289fede3a87934cb411aa6dd66b77b to your computer and use it in GitHub Desktop.

因故敝公司使用 JANDI 這個通訊軟體,而非最流行的 slack,但其實 JANDI 還是可以做到一些 slack 常用的功能,像是 webhook 呼叫 Jenkins 執行 job。

JANDI 的 Webhook 分別 Outgoing Webhook 及 Incoming Webhooks,以下就來分享一下我實際上是怎麼使用的。

Outgoing Webhook 作法

到 JANDI Connect 的介面後,需要填寫2個必要的填位,分別是

  1. URL - 輸入所欲接受 Webhook 訊息的 URL
  2. 觸發的關鍵字 - 當訊息中出現關鍵字的時候會觸發此 Webhook,範例為:/compile

其中 URL 為要打到 Jenkins 的 URL,需要安裝 plugin

我使用 Generic Webhook Trigger Plugin

https://wiki.jenkins.io/display/JENKINS/Generic+Webhook+Trigger+Plugin

URL 填的內容大概如下

http://JENKINS_URL/generic-webhook-trigger/invoke

JANDI Connect 會給一個 用來檢查欄位是否來自 JANDI 的 Webhook

組合之後大概像是以下

http://92832de0.ngrok.io/generic-webhook-trigger/invoke?token=<AUTHTOKEN>

以上貼在 JANDI Connect 的設定。

至於 Jenkins 這邊只要在 Token 欄位貼上 即可。

Generic Webhook Trigger Plugin

Incoming Webhooks 作法

到 JANDI Connect 介面後,會看到原本就給你一個 Webhook URL 像是以下

https://wh.jandi.com/connect-api/webhook/11716082/<AUTHTOKEN>

將格式設定為要求的

https://gist.github.com/1e6c4b13b7f2ad3df687015e5fd65e95

然後以 RESTful API 的 POST HTTP 方式打出去即可

但在這邊會遇到問題,因為 Jenkins 預設的語系並不是中文,因此打出去的中文會變成亂碼,建議在 Content-Type 修改為以下。

https://gist.github.com/4f2bd2bcbd6753e259a0787e292ddec4

這樣 Incoming 的訊息就可以正確顯示了。

依文件指示, POST JSON 的內容範例如下

https://gist.github.com/bba53029b20f93cecfd57a5cdc0d2f6f

再將內容改成自己需要的即可,像我是寫

https://gist.github.com/8bde101b553472fd5cb8fa9316c6634c

btw. 我是使用 HTTP Request Plugin 這個 Jenkins plugin 來發 API Request

https://wiki.jenkins.io/display/JENKINS/HTTP+Request+Plugin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment