You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助Bazel创建GitHub发布制品的方法咨询

Bazel 单体仓库二进制归档打包方案

1. 引入rules_pkg实现Zip打包

Bazel官方提供的rules_pkg规则集专门处理打包需求,首先在WORKSPACE中添加依赖:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_pkg",
    urls = ["https://github.com/bazelbuild/rules_pkg/releases/download/0.10.0/rules_pkg-0.10.0.tar.gz"],
    sha256 = "501b4f3b1940f8e1982d5b8e3b4f4b7b7eb4a699a8066b7441ba75d7708f35ca",
)

load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
rules_pkg_dependencies()

在项目根目录的BUILD.bazel中定义打包目标,收集所有需要归档的二进制文件:

load("@rules_pkg//pkg:zip.bzl", "pkg_zip")

pkg_zip(
    name = "release_archive",
    # 明确列出所有二进制目标,或用glob匹配(注意Bazel glob的匹配规则)
    srcs = [
        "//cmd/serviceA:serviceA_binary",
        "//cmd/cli:cli_tool",
        # 示例glob:glob(["cmd/**/*_binary"], exclude=["cmd/**/test/*"])
    ],
    # 可选:指定归档内的根目录,比如把所有二进制放到bin/下
    prefix = "bin/",
)

执行bazel build //:release_archive即可生成Zip包,路径为bazel-bin/release_archive.zip。

2. 关联全量构建

如果希望执行bazel build //...时自动触发打包,可以创建一个all别名目标:

alias(
    name = "all",
    actual = [
        "//...",
        ":release_archive",
    ],
)

之后执行bazel build //:all就会构建所有项目目标并生成归档包。

3. GitHub Actions 集成发布

结合你熟悉的GitHub Actions,在标签触发的工作流中加入以下步骤:

jobs:
  release:
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/')
    steps:
      - uses: actions/checkout@v4
      - name: Set up Bazel
        uses: bazelbuild/setup-bazelisk@v2
      - name: Build all targets and archive
        run: bazel build //:release_archive
      - name: Attach asset to GitHub Release
        uses: softprops/action-gh-release@v1
        with:
          files: bazel-bin/release_archive.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

官方文档参考

相关内容在Bazel官方文档的Packaging章节,rules_pkg的具体规则细节可查看Bazel内置的rules_pkg文档。

内容的提问来源于stack exchange,提问作者sontags

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:45:50