From f8a909e76fcd947949502832a7ab8e2cba2b8e27 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Sun, 6 Mar 2022 19:33:17 +0100 Subject: [PATCH] Run bloat_diff.py in a separate kokoro job (#28892) * move bloat_diff to a separate kokoro job * add grpc_bloat_diff PR job --- tools/internal_ci/linux/grpc_bloat_diff.sh | 28 ++++++++++++++++ .../linux/grpc_bloat_diff_in_docker.sh | 26 +++++++++++++++ .../linux/grpc_microbenchmark_diff.sh | 16 ++------- .../linux/pull_request/grpc_bloat_diff.cfg | 33 +++++++++++++++++++ .../dockerize/docker_propagate_env.list | 4 +++ 5 files changed, 94 insertions(+), 13 deletions(-) create mode 100755 tools/internal_ci/linux/grpc_bloat_diff.sh create mode 100755 tools/internal_ci/linux/grpc_bloat_diff_in_docker.sh create mode 100644 tools/internal_ci/linux/pull_request/grpc_bloat_diff.cfg diff --git a/tools/internal_ci/linux/grpc_bloat_diff.sh b/tools/internal_ci/linux/grpc_bloat_diff.sh new file mode 100755 index 00000000000..1d8f49caee6 --- /dev/null +++ b/tools/internal_ci/linux/grpc_bloat_diff.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# Copyright 2017 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# Enter the gRPC repo root +cd $(dirname $0)/../../.. + +source tools/internal_ci/helper_scripts/prepare_build_linux_rc + +export DOCKERFILE_DIR=tools/dockerfile/test/cxx_debian11_x64 +export DOCKER_RUN_SCRIPT=tools/internal_ci/linux/grpc_bloat_diff_in_docker.sh +# The check_on_pr.py needs access to the key to post status on github PRs, +# so we mount the keystore dir to the docker container. +export EXTRA_DOCKER_ARGS="-v ${KOKORO_KEYSTORE_DIR}:/kokoro_keystore -e KOKORO_KEYSTORE_DIR=/kokoro_keystore" +exec tools/run_tests/dockerize/build_and_run_docker.sh diff --git a/tools/internal_ci/linux/grpc_bloat_diff_in_docker.sh b/tools/internal_ci/linux/grpc_bloat_diff_in_docker.sh new file mode 100755 index 00000000000..e5968f52fbe --- /dev/null +++ b/tools/internal_ci/linux/grpc_bloat_diff_in_docker.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# Copyright 2022 The gRPC Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# Enter the gRPC repo root +cd $(dirname $0)/../../.. + +# some extra pip packages are needed for the check_on_pr.py script to work +# TODO(jtattermusch): avoid needing to install these pip packages each time +time python3 -m pip install --user -r tools/internal_ci/helper_scripts/requirements.linux_perf.txt + +tools/internal_ci/linux/run_if_c_cpp_modified.sh tools/profiling/bloat/bloat_diff.py \ + -d "origin/$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH" diff --git a/tools/internal_ci/linux/grpc_microbenchmark_diff.sh b/tools/internal_ci/linux/grpc_microbenchmark_diff.sh index 5c9d4a3c734..9674240455e 100755 --- a/tools/internal_ci/linux/grpc_microbenchmark_diff.sh +++ b/tools/internal_ci/linux/grpc_microbenchmark_diff.sh @@ -12,8 +12,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# -# This script is invoked by Jenkins and runs a diff on the microbenchmarks + +# This script is invoked by Kokoro and runs a diff on the microbenchmarks set -ex # List of benchmarks that provide good signal for analyzing performance changes in pull requests @@ -25,16 +25,6 @@ cd $(dirname $0)/../../.. source tools/internal_ci/helper_scripts/prepare_build_linux_perf_rc tools/run_tests/start_port_server.py -tools/internal_ci/linux/run_if_c_cpp_modified.sh tools/profiling/bloat/bloat_diff.py \ - -d "origin/$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH" || FAILED="true" tools/internal_ci/linux/run_if_c_cpp_modified.sh tools/profiling/microbenchmarks/bm_diff/bm_main.py \ -d "origin/$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH" \ - -b $BENCHMARKS_TO_RUN || FAILED="true" - -# kill port_server.py to prevent the build from freezing -ps aux | grep port_server\\.py | awk '{print $2}' | xargs kill -9 - -if [ "$FAILED" != "" ] -then - exit 1 -fi + -b $BENCHMARKS_TO_RUN diff --git a/tools/internal_ci/linux/pull_request/grpc_bloat_diff.cfg b/tools/internal_ci/linux/pull_request/grpc_bloat_diff.cfg new file mode 100644 index 00000000000..e4b9dc1d0bc --- /dev/null +++ b/tools/internal_ci/linux/pull_request/grpc_bloat_diff.cfg @@ -0,0 +1,33 @@ +# Copyright 2022 The gRPC Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Config file for the internal CI (in protobuf text format) + +# Location of the continuous shell script in repository. +build_file: "grpc/tools/internal_ci/linux/grpc_bloat_diff.sh" +timeout_mins: 120 +before_action { + fetch_keystore { + keystore_resource { + keystore_config_id: 73836 + keyname: "grpc_checks_private_key" + } + } +} +action { + define_artifacts { + regex: "**/*sponge_log.*" + regex: "github/grpc/reports/**" + } +} diff --git a/tools/run_tests/dockerize/docker_propagate_env.list b/tools/run_tests/dockerize/docker_propagate_env.list index 972feccf1f6..5ea24a2bd2f 100644 --- a/tools/run_tests/dockerize/docker_propagate_env.list +++ b/tools/run_tests/dockerize/docker_propagate_env.list @@ -8,9 +8,13 @@ THIS_IS_REALLY_NEEDED="see https://github.com/docker/docker/issues/14203 for why # Kokoro sets environment variables for each build and we want them to be # available inside the test docker containers. KOKORO_BUILD_ID +KOKORO_BUILD_INITIATOR KOKORO_BUILD_NUMBER KOKORO_BUILD_URL +KOKORO_GIT_COMMIT KOKORO_JOB_NAME +KOKORO_GITHUB_PULL_REQUEST_NUMBER +KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH # Propagate ccache configuration to the docker containers. GRPC_BUILD_ENABLE_CCACHE