釋出:排程條目把 PATH 一起快照進去 #31

Merged
admin merged 2 commits from develop into master 2026-09-04 06:58:38 +00:00
Member

摘要

  • 需求描述:把 develop 累積的變更釋出到 master。助理第一次在無人值守的輪次真的執行內建檢查項,結果印出 clis=0——帶 CLI 代入點的那幾筆全部代不出目標。根因是 cron 給的 PATH 只有 /usr/bin 與 /bin,而這台機器的 CLI 執行檔裝在家目錄底下。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

這一批的內容

排程條目的環境快照清單補上 PATH。

版號 0.2.4 到 0.2.5。

這一類又出現一次

偵測 CLI 那一支在有人的 shell 裡回五支,在 cron 裡回零支,而且結束碼是 0。它不是失敗,是成功地回報了「什麼都沒有」。輸出看起來像「這台機器沒裝 CLI」,實際上是 PATH 上找不到——兩件事在報告上長得一模一樣。

為什麼修在條目這一層

另一條路是讓偵測那一支自己去找常見安裝路徑。那要維護一份路徑清單,而清單會過期,過期的方式跟先前修掉的那幾個一模一樣:寫死的一份靜態名單,環境變了沒有人會知道。

條目本來就快照十個環境變數。多這一個,等於把「這台機器的執行檔裝在哪」交給安裝當下的環境回答。

界線講明:巡檢那一輪要跑的指令本身走的是字面絕對路徑、不靠 PATH;靠 PATH 的是那幾支腳本自己呼叫的外部程式。

那一輪本身沒有壞

這件事是被正確擋下來的,不是釀成事故才發現的。執行那一支的規則是「代不出目標不算失敗」,所以那一筆的執行紀錄與失敗次數一個字都沒動。要是當初寫成「代不出來就記失敗」,那個計數現在已經在往上爬,而且沒有人修得動——因為問題不在那一筆。

同一輪另一筆沒有代入點的內建項正常跑完、回 0、算出下次到期。機制是通的,缺的只是這一個變數。

測試結果

環境 偵測到幾支
條目會帶的那條 PATH,其餘環境清空 5 支
cron 預設的 PATH,其餘環境清空 0 支

三支檢核腳本都回結束碼 0,全程用乾跑。

部署之後還要多做一步

條目的環境快照是安裝當下拍的,所以部署完要重跑一次 schedule.sh install patrol,那條 PATH 才進得了條目。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 develop 累積的變更釋出到 master。助理第一次在無人值守的輪次真的執行內建檢查項,結果印出 `clis=0`——帶 CLI 代入點的那幾筆全部代不出目標。根因是 cron 給的 `PATH` 只有 `/usr/bin` 與 `/bin`,而這台機器的 CLI 執行檔裝在家目錄底下。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 這一批的內容 排程條目的環境快照清單補上 `PATH`。 版號 0.2.4 到 0.2.5。 ## 這一類又出現一次 偵測 CLI 那一支在有人的 shell 裡回五支,在 cron 裡回零支,**而且結束碼是 0**。它不是失敗,是成功地回報了「什麼都沒有」。輸出看起來像「這台機器沒裝 CLI」,實際上是 `PATH` 上找不到——兩件事在報告上長得一模一樣。 ## 為什麼修在條目這一層 另一條路是讓偵測那一支自己去找常見安裝路徑。那要維護一份路徑清單,而清單會過期,過期的方式跟先前修掉的那幾個一模一樣:寫死的一份靜態名單,環境變了沒有人會知道。 條目本來就快照十個環境變數。多這一個,等於把「這台機器的執行檔裝在哪」交給安裝當下的環境回答。 界線講明:巡檢那一輪要跑的指令本身走的是字面絕對路徑、不靠 `PATH`;靠 `PATH` 的是那幾支腳本自己呼叫的外部程式。 ## 那一輪本身沒有壞 這件事是被正確擋下來的,不是釀成事故才發現的。執行那一支的規則是「代不出目標不算失敗」,所以那一筆的執行紀錄與失敗次數一個字都沒動。要是當初寫成「代不出來就記失敗」,那個計數現在已經在往上爬,而且沒有人修得動——因為問題不在那一筆。 同一輪另一筆沒有代入點的內建項正常跑完、回 0、算出下次到期。機制是通的,缺的只是這一個變數。 ## 測試結果 | 環境 | 偵測到幾支 | | --- | --- | | 條目會帶的那條 `PATH`,其餘環境清空 | **5 支** | | cron 預設的 `PATH`,其餘環境清空 | 0 支 | 三支檢核腳本都回結束碼 0,全程用乾跑。 ## 部署之後還要多做一步 條目的環境快照是安裝當下拍的,所以部署完要重跑一次 `schedule.sh install patrol`,那條 `PATH` 才進得了條目。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-04 06:55:27 +00:00
cron 給的 PATH 只有 /usr/bin 與 /bin,而這台機器的 CLI 執行檔裝在家目錄底下。
於是無人值守那一輪偵測 CLI 一支都找不到——而且是回結束碼 0 加一份空清單,
不是失敗。看起來像「這台機器沒裝 CLI」,實際上是 PATH 上找不到。

實測踩到:那一輪印出 clis=0,帶 CLI 代入點的內建項全部代不出目標而被擋下,
同一支腳本在有人的 shell 裡回五支。

修在條目這一層,不是讓偵測那一支自己去猜安裝路徑:猜就要維護一份常見路徑
清單,而清單會過期,過期的方式跟今天修掉的那幾個一模一樣。條目本來就快照
十個環境變數,多這一個等於把「這台機器的執行檔裝在哪」交給安裝當下的環境
回答,不必任何人維護。

巡檢那一輪要跑的指令本身走的是字面絕對路徑、不靠 PATH;靠 PATH 的是那幾支
腳本自己呼叫的外部程式,所以這一條補的是後者。

實測:拿條目會帶的那條 PATH 在清空環境裡跑,五支 CLI 全解得出來;對照組用
cron 預設的 PATH,零支。

三份 manifest 版號 0.2.4 升到 0.2.5。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #30
admin approved these changes 2026-09-04 06:58:36 +00:00
admin merged commit 1bebf7450f into master 2026-09-04 06:58:38 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/assist#31