CI integration

pull/15692/head
Muxi Yan 7 years ago
parent 4ba4d18960
commit 252359bbdc
  1. 8
      tools/internal_ci/helper_scripts/prepare_build_macos_rc
  2. 32
      tools/internal_ci/macos/grpc_ios_binary_size.sh
  3. 26
      tools/internal_ci/macos/pull_request/grpc_ios_binary_size.cfg
  4. 42
      tools/profiling/ios_bin/binary_size.py

@ -39,11 +39,17 @@ pip install google-api-python-client==1.6.7 --user python
export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json
# If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests
if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then
if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ]; then
set +x
brew update
brew install jq
ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref)
export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch"
# TODO(matt-kwong): rename this to GITHUB_OAUTH_TOKEN after Jenkins deprecation
export JENKINS_OAUTH_TOKEN=$(cat ${KOKORO_GFILE_DIR}/oauth_token.txt)
export ghprbPullId=$KOKORO_GITHUB_PULL_REQUEST_NUMBER
set -x
fi
set +ex # rvm script is very verbose and exits with errorcode

@ -0,0 +1,32 @@
#!/usr/bin/env bash
# Copyright 2018 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.
#
# This script is invoked by Jenkins and runs a diff on the microbenchmarks
set -ex
# List of benchmarks that provide good signal for analyzing performance changes in pull requests
# Enter the gRPC repo root
cd $(dirname $0)/../../..
source tools/internal_ci/helper_scripts/prepare_build_macos_rc
tools/profiling/ios_bin/binary_size.py \
-d origin/$ghprbTargetBranch || FAILED="true"
if [ "$FAILED" != "" ]
then
exit 1
fi

@ -0,0 +1,26 @@
# Copyright 2018 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/macos/grpc_ios_binary_size.sh"
timeout_mins: 60
gfile_resources: "/bigstore/grpc-testing-secrets/github_credentials/oauth_token.txt"
action {
define_artifacts {
regex: "**/*sponge_log.xml"
regex: "github/grpc/reports/**"
}
}

@ -28,6 +28,9 @@ sys.path.append(
os.path.dirname(sys.argv[0]), '..', '..', 'run_tests', 'python_utils'))
import comment_on_pr
# Only show diff 1KB or greater
diff_threshold = 1000
size_labels = ('Core', 'ObjC', 'BoringSSL', 'Protobuf', 'Total')
argp = argparse.ArgumentParser(
@ -104,22 +107,39 @@ for frameworks in [False, True]:
subprocess.check_call(['git', 'checkout', where_am_i])
subprocess.check_call(['git', 'submodule', 'update'])
text += ('****************FRAMEWORKS*****************\n'
if frameworks else '******************STATIC*******************\n')
text += ('***************FRAMEWORKS****************\n'
if frameworks else '*****************STATIC******************\n')
row_format = "{:>10}{:>15}{:>15}" + '\n'
text += row_format.format('New size', '', 'Old size')
for i in range(0, len(size_labels)):
if old_size == None:
diff_sign = ' '
elif new_size[i] == old_size[i]:
diff_sign = ' (=)'
elif new_size[i] > old_size[i]:
if old_size == None:
for i in range(0, len(size_labels)):
text += ('\n' if i == len(size_labels) - 1 else '') + row_format.format(
'{:,}'.format(new_size[i]), size_labels[i], '')
else:
has_diff = False
for i in range(0, len(size_labels) - 1):
if abs(new_size[i] - old_size[i]) < diff_threshold:
continue
if new_size[i] > old_size[i]:
diff_sign = ' (>)'
else:
diff_sign = ' (<)'
has_diff = True
text += row_format.format(
'{:,}'.format(new_size[i]), size_labels[i] + diff_sign,
'{:,}'.format(old_size[i]))
i = len(size_labels) - 1
if new_size[i] > old_size[i]:
diff_sign = ' (>)'
else:
elif new_size[i] < old_size[i]:
diff_sign = ' (<)'
text += ('\n' if i == len(size_labels) - 1 else '') + row_format.format(
else:
diff_sign = ' (=)'
text += ('\n' if has_diff else '') + row_format.format(
'{:,}'.format(new_size[i]), size_labels[i] + diff_sign,
'{:,}'.format(old_size[i]) if old_size != None else '')
'{:,}'.format(old_size[i]))
if not has_diff:
text += '\n No significant differences in binary sizes\n'
text += '\n'
print text
Loading…
Cancel
Save