在大型單一回購(monorepo)中,Bazel 建置可能會緩慢且複雜。此技能提供經證實的模式,用於遠端快取、平行執行和自訂規則,大幅減少建置時間。
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「bazel-build-optimization」。 幫我為帶有外部相依項目的 Python 專案設定 Bazel
預期結果:
這是 Python 的基本 WORKSPACE.bazel 配置:
```python
workspace(name = "myproject")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "...",
strip_prefix = "rules_python-0.27.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.27.0/rules_python-0.27.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
```
然後建立帶有 py_library 和 py_test 規則的 BUILD.bazel 檔案。
正在使用「bazel-build-optimization」。 如何配置遠端執行?
預期結果:
將此添加到您的 .bazelrc 以進行遠端執行:
```bash
build:remote-exec --remote_executor=grpcs://remote.example.com
build:remote-exec --remote_instance_name=projects/myproject/instances/default
build:remote-exec --jobs=500
```
安全提示:
- 對遠端端點使用 TLS
- 使用 OAuth 或憑證進行身份驗證
- 在啟用執行之前先從唯讀遠端快取開始
安全審計
安全Static analysis detected 36 potential issues (external_commands, network, filesystem patterns), but all are false positives. The skill contains documentation and templates for Bazel build optimization with example commands and configuration snippets - no actual executable code with security implications. URLs are legitimate documentation links, filesystem references are standard Bazel cache paths, and cryptographic mentions are SHA256 checksums for download verification.
品質評分
你能建構什麼
為 CI/CD 管道設定遠端快取
配置帶有遠端快取的 Bazel,在 CI 執行器之間共享建置產物,將建置時間從數小時減少到數分鐘。
優化大型 TypeScript monorepo
應用最佳實踐來組織 BUILD 檔案、啟用平行執行和配置磁碟快取。
為 Docker 建立自訂建置規則
撰寫自訂 Bazel 規則,作為建置圖表的一部分來建置 Docker 映像,帶有適當的相依追蹤。
試試這些提示
幫我為新的 monorepo 設定 Bazel。我需要用 JavaScript 和 Python 的規則配置 WORKSPACE.bazel。有哪些基本配置?
我想為我們的 Bazel 建置設定遠端快取。我們使用 Google Cloud。請顯示所需的 .bazelrc 配置和任何安全考量。
建立一個自訂 Bazel 規則來建置 Docker 映像。該規則應接受 Dockerfile、基礎映像和層檔案作為輸入。
我們的 Bazel 建置需要 30 分鐘。幫我使用 bazel build --profile 分析並找出最慢的操作。我應該先嘗試哪些優化?
最佳實務
- 使用細粒度目標而不是大型 glob 模式以獲得更好的增量建置
- 盡早啟用遠端快取 - 它提供最大的效能提升
- 在 WORKSPACE 中固定相依版本以確保可重複的建置
避免
- 對 srcs 使用 glob(['**/*.py']) - 會導致不必要的重新建置
- 跳過 WORKSPACE 設定 - 導致不一致的相依解析
- 忽略建置警告 - 小問題會變成技術債