git 提交可能会更改一些工作区规则、一些源文件、.bazelrc 等。如何让所有受影响的 Bazel 目标在更改后需要重建和测试?
在 Buck 中,我们可以运行buck targets --show-rulekey //...来查看两个 Git 修订版之间的所有规则键更改。Bazel 中有等效的命令吗?
看这里:
# Under Apache 2.0 licence
COMMIT_RANGE=${COMMIT_RANGE:-$(git merge-base origin/master HEAD)".."}
# Go to the root of the repo
cd "$(git rev-parse --show-toplevel)"
# Get a list of the current files in package form by querying Bazel.
files=()
for file in $(git diff --name-only ${COMMIT_RANGE} ); do
files+=($(bazel query $file))
echo $(bazel query $file)
done
# Query for the associated buildables
buildables=$(bazel query \
--keep_going \
--noshow_progress \
"kind(.*_binary, rdeps(//..., set(${files[*]})))")
# Run the tests if there were results
if [[ ! -z $buildables ]]; then
echo "Building binaries"
bazel build $buildables
fi
tests=$(bazel query \
--keep_going \
--noshow_progress \
"kind(test, rdeps(//..., set(${files[*]}))) except attr('tags', 'manual', //...)")
# Run the tests if there were results
if [[ ! -z $tests ]]; then
echo "Running tests"
bazel test $tests
fi
Run Code Online (Sandbox Code Playgroud)
另请查看bazel-diff。
我没有答案,但这个 bazel-discuss 线程可能会有所帮助:https://groups.google.com/d/msg/bazel-discuss/I9udqWIcEdI/iczVgWLOBQAJ “选择 bazel 目标在 CI 中运行 - 可能的方法”
| 归档时间: |
|
| 查看次数: |
4086 次 |
| 最近记录: |