How to build your custom release bazel version?
一般情況下用原始碼編譯,生成的都是開發版本,這種版本做版本號校驗方面會有很多問題,所以需要編譯自己的release版本。
exportUSE_BAZEL_VERSION=1.2.1 # 選擇使用版本為準備定製的bazel版本的基礎版本,否則部分規則跨大版本bazel語法不相容
yum install java-11-openjdk java-11-openjdk-devel # 如果在ubuntu,需要使用apt install XXX
如果直接下載的原始碼包解壓編譯的話,會沒有git的commit記錄,這樣改版本號的指令碼會不過,需要寫死一個commit號,如果是git clone下來的branch或者tag的話,下面的修改不用做:
diff ../bazel-1.2.1-dist/scripts/ci/build_status_command.sh ../bazel-0.24.1-dist/scripts/ci/build_status_command.sh
25,26c25
< #git_hash=$(git rev-parse --short HEAD)
< git_hash=5c4c67c
---
> git_hash=$(git rev-parse --short HEAD)
先編譯一個開發版本:
bazelisk build --sandbox_tmpfs_path=/tmp //src:bazel
定義需要打包的版本號:
exportrelease_name=1.2.1
上面這句命令表示生成的版本號就是1.2.1
修改開發版本的版本資訊生成釋出版本的ubuntu作業系統命令:
mkdir output
cp bazel-bin/src/bazel output/bazel
output/bazel build \
-c opt \
--stamp \
--sandbox_tmpfs_path=/tmp \
--embed_label "${release_name}" \
--workspace_status_command=scripts/ci/build_status_command.sh \
src/bazel \
src/bazel_nojdk \
scripts/packages/with-jdk/install.sh \
scripts/packages/debian/bazel-debian.deb \
scripts/packages/debian/bazel.dsc \
scripts/packages/debian/bazel.tar.gz \
bazel-distfile.zip
centos/tlinux命令:
mkdir output
cp bazel-bin/src/bazel output/bazel
output/bazel build \
-c opt \
--stamp \
--sandbox_tmpfs_path=/tmp \
--embed_label "${release_name}" \
--workspace_status_command=scripts/ci/build_status_command.sh \
src/bazel
這樣之後下面的版本就是釋出版本了,版本號就是${release_name}裡面指定的
bazel-bin/src/bazel
如果想要用自己定製的bazel版本,需要啟動一個http伺服器,並將編譯好的bazel版本按路徑放到對應目錄下,下面的例子是本地啟動的http伺服器:
export BAZELISK_BASE_URL=http://127.0.0.1/bazel
完整編譯過程可以參照bazel的CI指令碼:
continuous-integration/bazel-release.yml at master · bazelbuild/continuous-integration (github.com)