監察管線執行
這一頁涵蓋執行開始之後的一切:找到它、閱讀每個步驟做了甚麼,以及讓失敗的執行 重新動起來。如要開始一次執行,請參閱手動執行管線。
尋找一次執行
標題為「尋找一次執行」的章節- 在工作區側邊欄點擊管線。這個畫面就是工作區的執行佇列 —— 每次 執行,最新的排在最前。
- 使用左側導軌來篩選。篩選器恰好有三個,每個都有即時計數:全部、 執行中、已失敗。
- 用 ↑/↓(或 j/k)在表格中 移動,然後按 Enter 開啟目前聚焦的執行。點擊資料列也有同樣效果。
每個資料列都會顯示一個圖示,代表該次執行是如何開始的(手動是播放圖示;程式碼圖
監看是檔案圖示;其他情況則是自動觸發器)。工具提示會寫出觸發器名稱 ——
手動、PR 發布、檔案變更 等等 —— 而對於監看型執行,還會列出哪些檔案
有變更。接着是管線名稱、狀態徽章、活動時長(若是 queued 執行則為佇列位置),
以及這次嘗試是多久之前開始的。活動時長不計入閒置的停止與重新開始空檔,因此它
並不是實際流逝的時間。
沒有針對已完成、已暫停或已取消執行的篩選器,沒有逐範本的篩選器,沒有時間範圍, 也沒有逐範本的執行歷史檢視。要比較同一個範本的多個執行,只能掃視佇列找出它的 名稱。
閱讀執行詳情
標題為「閱讀執行詳情」的章節一次執行的頁面由上而下分為三個部分。
中繼資訊列 載有開始時間、活動時長、步驟進度(「3 / 7 個步驟」)、指出哪個 步驟出錯與原因的失敗摘要,以及重試與刪除操作。
時間瀑布圖 為每個步驟給出一條長條,附上其時長,而代理步驟還有以美分計的
成本。曾被重試的步驟會在時長後面顯示 ×N 後綴;該後綴是唯一會出現嘗試次數的
地方。
圖形畫布 會繪出範本,並顯示每個節點的即時狀態。選取節點會開啟它的步驟面板。
執行與步驟狀態
標題為「執行與步驟狀態」的章節| 狀態 | 含義 |
|---|---|
| 等待中 | 已建立,尚未開始 |
| 排隊中 | 已獲准但被擱置:此範本的最大並行上限已滿;尚無步驟資料列 |
| 執行中 | 正在執行 |
| 已暫停 | 正在等待外部事物 —— 屬正常,不是卡住 |
| 已完成 | 成功結束 |
| 已失敗 | 以錯誤結束 |
| 已取消 | 由使用者或系統停止 |
步驟具備上述狀態,但少了排隊中,另外多了已跳過,用於路由器未有採納的 分支(及其現在已無法觸及的下游步驟)。
代理步驟大半生都處於已暫停:已派發的代理或核准閘門會扣住該步驟,直到它的
工作完成為止。兩道引擎防線會令整次執行失敗,而不是恢復它:步驟暫停超過 24 小時
(extras.awaitApproval —— 即 orchestration.awaitApproval 主體 —— 可獲豁免;
human.gate 則不獲豁免),以及伺服器停止時仍在執行中途的非冪等步驟。
檢視步驟
標題為「檢視步驟」的章節在畫布上選取節點。步驟面板會依次顯示:
- 步驟失敗時的錯誤提示框,或步驟被略過時附有原因的已跳過提示框。
- 已開始、已結束與時長。
- 分支 —— 並行分支的分支索引。
- 檢視對話 —— 跳至該步驟所執行所在的對話。管線對話會從側邊欄隱藏,所以 這是唯一的進入途徑。
- 輸入與輸出,以可摺疊的 JSON 呈現。
- 代理活動 —— 該步驟所派發的每次代理執行各有一張卡片,顯示其狀態、摘要、 時長與成本。
對於代理步驟,輸出是代理以 submit_output 提交的結構化載荷,而不是它的
文字敘述。推理追蹤則位於代理活動,以及檢視對話背後的對話之中。
對於 bash 步驟,輸出是指令碼在退出碼 0 時所寫入、經過修剪的標準輸出。非零 退出碼會令該步驟失敗,並以標準錯誤的末段作為錯誤訊息。
復原失敗的執行
標題為「復原失敗的執行」的章節- 閱讀中繼資訊列上的失敗摘要;它會指出失敗的步驟。步驟面板的錯誤提示框則 載有訊息。
- 檢查步驟的輸入 —— 狀態鍵缺失或拼寫錯誤是最常見的原因。提示代理步驟會 直接失敗並指出未解析的佔位符;bash 步驟則會把它們呈現為空字串並照樣執行, 問題通常會在下一步才浮現。
- 對於代理步驟,開啟檢視對話,閱讀代理實際做了甚麼。
- 在中繼資訊列上按重試。已完成與已跳過的步驟會保留其輸出;其餘全部都會被 刪除並重新執行,而該次執行會切回執行中。這次嘗試的時長計時會重新開始。
值得先檢查的常見原因:
- 逾時 —— 步驟超出了它的逾時(毫秒)。請記住這個欄位是毫秒。
- 指令碼錯誤 —— bash 指令以非零退出碼結束,或伺服器主機的
PATH上沒有bash。 - Schema 驗證 —— 代理的
submit_output載荷不符合步驟的輸出 schema。 - 未解析的佔位符 —— 提示代理步驟所參照的
{{key}}從未在上游寫入。錯誤 訊息會列出每一個未解析的鍵。 - 未註冊的主體 —— 主體鍵未註冊的步驟會在載入範本時發出警告,之後就永遠 不會執行。
停止卡住的步驟
標題為「停止卡住的步驟」的章節選取執行中的步驟,然後按步驟面板標題列中的終止執行中按鈕。這會終止該步驟的 行程、將該步驟標記為已失敗,因此令整次執行失敗 —— 每個仍開啟的兄弟分支都會隨之 一併結束。
這個畫面上沒有取消整次執行的控制項。pipeline.cancel 是一項 RPC 操作,引擎也有
實作它,但管線介面中沒有任何地方會呼叫它;在步驟上使用 Kill running,或在執行
上使用 Delete,是唯一可用的停止手勢。
追蹤成本
標題為「追蹤成本」的章節成本按步驟回報,顯示在瀑布圖最右側的欄位,以及代理活動下每張卡片上。詳情頁 上沒有整次執行的總額,執行佇列中也沒有成本欄,因此要比較兩次執行的成本,就只能 把它們各步驟的成本加起來。