您可以從指令碼呼叫 Bazel,以執行建構、執行測試或查詢 依附元件圖Bazel 的設計宗旨就是要能有效執行指令碼,但 本節將列舉一些注意事項,確保指令碼更豐富 穩健成長
選擇輸出基準
--output_base
選項可控制 Bazel 程序應在何處寫入
以及應用程式內部使用的各種工作檔案
Bazel,其中一種是鎖定 Pod 的並行變動
由多個 Bazel 程序產生輸出基礎
要為指令碼選擇正確的輸出基礎目錄取決於多種因素
。如果需要將建構輸出內容放在特定位置,
決定所需的輸出內容基礎如果您要以「唯讀」方式通話
Bazel (例如 bazel query
),鎖定因素更為重要。於
特別是需要同時執行多個指令碼執行個體時。
請務必注意,每個 Blaze 伺服器程序最多只能處理一個
「每次」叫用。
視實際情況而定,各個指令碼執行個體可能適合你
等待轉彎,或者使用 --output_base
執行多個
並使用 Blaze 伺服器。
如果使用預設的輸出基本值,您將競爭相同的 使用者的互動式 Bazel 指令使用的鎖定。如果使用者在發生問題時 因此指令碼必須等待執行 才能繼續操作。
伺服器模式註意事項
根據預設,Bazel 會使用長時間執行的「伺服器程序」做為
最佳化在指令碼中執行 Bazel 時,別忘了呼叫 shutdown
使用完伺服器後,請指定 --max_idle_secs=5
閒置的伺服器會迅速關機。
我會收到哪個結束代碼?
Bazel 會嘗試區分失敗原因 也會考量導致 Bazel 無法正確執行的外部錯誤。 Bazel 執行作業可能會導致下列結束代碼:
結束代碼適用於所有指令:
0
- 成功2
- 指令列問題、錯誤或非法的旗標或指令組合,或 錯誤的環境變數。您必須修改指令列。8
- 建構中斷,但我們已實際終止服務。9
- 保留伺服器鎖定,且通過了--noblock_for_lock
。32
- 這部機器上沒有外部環境發生錯誤。33
- Bazel 記憶體不足,因此當機。您必須修改指令列。34
- 僅供 Google 內部使用。35
- 僅供 Google 內部使用。36
- 地方環境問題,疑似永久存在。37
- 無法處理的例外狀況 / 內部 Bazel 錯誤。38
- 將結果發布至建構事件服務時發生暫時性錯誤。39
:系統會從遠端快取中移除 Bazel 所需的 Blob。41-44
- 僅供 Google 內部使用。45
:將結果發布至建構事件服務時發生持續性錯誤。47
- 僅供 Google 內部使用。49
- 僅供 Google 內部使用。
傳回指令 bazel build
、bazel test
的代碼:
1
- 建構失敗。3
- 建構順利,但部分測試失敗或逾時。4
- 建構成功,但即使測試前並未找到測試 。
bazel run
:
1
- 建構失敗。- 如果建構成功,但執行的子程序會傳回非零的結束事件 將是指令的結束代碼
bazel query
:
3
- 部分成功,但查詢在 輸入 BUILD 檔案集,因此作業結果並非 100% 可靠又可靠的方式原因可能是指令列上的--keep_going
選項。7
- 指令失敗。
日後的 Bazel 版本可能會新增其他結束代碼,取代一般的失敗情形
結束代碼 1
具有特定含意的不同非零值。
不過,所有非零的離開值一律都會構成錯誤。
讀取 .bazelrc 檔案
根據預設,Bazel 會從基礎指令讀取 .bazelrc
檔案
工作區目錄或使用者的主目錄說明
即可選擇合適的腳本當你的指令碼設計要完美融合時
例如建立發布子版本時,您應停用讀取
.bazelrc 檔案。--bazelrc=/dev/null
。如果要在模型中
使用使用者偏好的設定進行建構,預設行為較佳。
指令記錄
您也可以在指令記錄檔中找到 Bazel 輸出內容 以下指令:
bazel info command_log
指令記錄檔中包含
最新的 Bazel 指令請注意,執行 bazel info
會覆寫
內容,因為之後它就會成為最新的 Bazel 指令。
不過,除非您變更設定,否則指令記錄檔的位置不會改變
--output_base
或 --output_user_root
選項的設定
剖析輸出內容
Bazel 輸出內容很容易剖析,以因應多種用途。以下提供兩個選項
對指令碼而言,--noshow_progress
會抑制進度
訊息和 --show_result n
,可控制
而不是「打造最新」列印的訊息;這些訊息可能會剖析為
找出成功建構的目標和輸出內容位置
檔案。如需使用,請務必指定極大的 n 值
這些訊息。
分析效能疑難排解
請參閱「效能分析」一節。