A git commit may change some workspace rules , some source files, .bazelrc, etc. How to get all Bazel targets affected, thus need to rebuild and test, after such change?
In Buck, we can run buck targets --show-rulekey //...
to see all rule key changes between two Git revisions. Is there any equivalent command in Bazel?
我没有答案,但是这个 bazel-discuss 线程可能会有所帮助: https ://groups.google.com/d/msg/bazel-discuss/I9udqWIcEdI/iczVgWLOBQAJ“选择要在 CI 中运行的 bazel 目标 - 可能的方法”
See here: https://github.com/bazelbuild/bazel/blob/master/scripts/ci/ci.sh
# 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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.