Skip to content

動作參考 ​

動作是純資料:參數宣告加上一段 shell 樣板。執行路徑上沒有任何東西認識動作——流程在你儲存任務時就編譯成一段純腳本,這也是遠端執行器完全不需要知道動作存在的原因。

內建動作共 33 個,分成九類。

通用 ​

動作識別字作用
執行命令shell.run在工作目錄執行一段 shell,最常用的萬用動作。
輸出訊息shell.echo把一段文字寫進建置日誌,方便標記進度。
等待shell.sleep暫停指定秒數,常用在等待服務啟動。
設定環境變數shell.env往 $WALIS_ENV_FILE 追加,為後續步驟設定變數。
設定輸出shell.outputs把 name=value 寫成這一步的輸出,後面的步驟用 ${{ steps.識別字.名稱 }} 引用。
切換目錄shell.cd切換目錄,後續步驟都會在這裡執行。

檔案 ​

動作識別字作用
建立目錄file.mkdir已存在時不會失敗。
複製檔案file.copy檔案或目錄皆可。
移動檔案file.move移動或改名。
刪除檔案file.remove路徑不存在時不會失敗。
壓縮成 zipfile.zip把目錄或檔案壓成 zip。

Git ​

動作識別字作用
Git Clonegit.clone可指定分支與深度。
Git Checkoutgit.checkout切換到指定分支或提交。
Git Pullgit.pull拉取最新的提交。

Node ​

動作識別字作用
安裝相依套件node.install依 lock 檔安裝。
執行 npm scriptnode.script執行 package.json 裡的 script。
執行 npx 指令node.npx用 npx 執行套件提供的指令。

.NET ​

動作識別字作用
dotnet restoredotnet.restore還原 NuGet 相依套件。
dotnet builddotnet.build建置專案或方案。
dotnet testdotnet.test執行測試專案。
dotnet publishdotnet.publish產生發行輸出。

容器 ​

動作識別字作用
Docker Builddocker.build建置映像檔。
Docker Pushdocker.push推送映像檔到 registry。
Docker Composedocker.compose以 compose 啟動或更新服務。
在容器中執行container.run把工作目錄掛進指定映像,在裡面跑一段腳本——等同 Jenkins 的 agent { docker }。

部署 ​

動作識別字作用
SSH 遠端執行deploy.ssh透過 SSH 在遠端主機執行命令,常用於重啟服務或跑部署腳本。
rsync 同步deploy.rsync把目錄同步到遠端主機。
scp 上傳deploy.scp把檔案複製到遠端主機。
HTTP 請求deploy.http呼叫一個端點,例如觸發部署或送出通知。

資料 ​

動作ID做什麼
HTTP 請求http.request用 curl 送請求,把回應碼與內容當成這一步的輸出(status、body)。4xx/5xx 不會讓這一步失敗——那要交給執行條件判斷。
取出 JSON 欄位data.json-get從一段 JSON(通常是前一步 http.request 的 body)取出欄位,輸出成 value。路徑用點分隔、陣列用數字。執行器要有 python3 或 node。

這兩個動作有宣告輸出,所以會出現在插入前面步驟的輸出選單裡。搭配執行條件,流程就能「呼叫 API、取欄位、依結果分支」。

檢查 ​

動作識別字作用
檢查檔案存在check.file檔案不存在時讓建置失敗。
檢查指令可用check.command指令不在 PATH 上時讓建置失敗。

每個步驟的設定 ​

流程中的每個步驟都帶這些設定,與它用哪個動作無關:

  • 啟用這個步驟——關掉就略過,不會讓建置失敗。
  • 失敗時繼續往下執行——越過非零結束碼繼續。
  • 依賴步驟——哪幾步跑完才輪到這一步。什麼都不依賴的步驟會一起開始,見流程是一張圖。
  • 識別字——一個流程內唯一的短名字,後面的步驟才引用得到這一步的輸出。
  • 執行條件(運算式)——執行時拿前面步驟的輸出求值。不成立是略過,不是失敗。
  • 執行條件——「前面都成功才執行」(預設)、「總是執行」或「只在前面失敗時執行」。 這就是 Jenkins 的 post { always / failure }:出事之後收尾或通知的步驟照樣會跑, 一般步驟則標記為 Skipped。建置結果仍算失敗。
  • 重試次數——第一次之外再試 0 到 10 次。每次都是全新的 shell,前幾次的輸出留在上面。 重試不會延長任務逾時。

腳本模式沒有這些開關:一段編譯好的腳本沒有地方放它們。

自訂動作 ​

自訂動作跟內建動作結構相同,以 JSON 存在資料庫。你宣告參數、寫一段 shell 樣板;樣板語法記在專案的 Docs/actions.md。自訂動作會跟著匯出與匯入一起走。

如果你要的是行為而不是樣板——邏輯、分支、呼叫 API——那應該寫外掛。

動作套件 ​

管理動作視窗有一個動作套件區塊與重新載入按鈕。套件是放在儲存庫裡的共用動作定義——公開的那份是 walisayu/walis-actions——以檔案的形式拉進來,不是安裝一段程式碼。它們仍然只是參數宣告加 shell 樣板,所以跟任何動作一樣:用之前你讀得到它會跑什麼。

以 MIT 授權釋出。