Skip to content

外掛

Walis 的外掛只做一件事:把使用者填的參數變成一段 shell。Walis 把那段 shell 當成建置的一個步驟執行。

這個限制就是整個設計。外掛產出的是資料,不是行為——所以安裝之前, 你可以按預覽,讀到它到底會跑什麼。

為什麼不走 Jenkins 那條路

Jenkins 的外掛什麼都做得到:它們跟核心在同一個 JVM,沒有沙箱。這是它生態龐大的原因, 也是為什麼一個會洩漏記憶體的外掛可以拖垮 controller,以及為什麼那麼多安全公告的開頭是某個外掛的名字。

Walis 沒辦法同時給你那種能力,又讓你安裝陌生人寫的東西。它選了後者。

外掛碰得到什麼

只有 manifest 宣告過的:

json
"permissions": {
  "http": ["https://acme.atlassian.net"],
  "secrets": ["JIRA_TOKEN"]
}

機密是能用但讀不到——外掛要求 host 把值放進某個標頭,自己拿不到內容。 少了這條規則,任何有連外權限的外掛都能把你的權杖送去任何地方。

執行環境是 Jint(純 C# 的 JS 直譯器):沒有 requirefsprocess,執行期也沒有 npm。 上限是 10 秒、8 MB、50 萬語句、遞迴 64 層。

安裝是管理員的動作

外掛是會被執行的程式碼,所以 /api/plugins 需要管理員角色——operator 的金鑰裝不了。

接著看:開發外掛

以 MIT 授權釋出。