2018-02-13 09:47:47 +03:00
#!/bin/bash -e
2018-05-29 18:03:54 +03:00
cd " $( dirname " ${ BASH_SOURCE [0] } " ) /.. "
WORKSPACE = $( pwd )
2018-04-02 15:49:03 +03:00
report_error ( )
{
2018-05-29 18:03:54 +03:00
printf "🔥 [Failed to compare API and create generator diff](%s/console) 🔥\\n" " $BUILD_URL " >> " $WORKSPACE /jenkins/pr-comments.md "
touch " $WORKSPACE /jenkins/failure-stamp "
2018-05-25 12:36:59 +03:00
exit 0
2018-04-02 15:49:03 +03:00
}
trap report_error ERR
2018-04-21 01:04:18 +03:00
2018-04-27 10:05:50 +03:00
if ./jenkins/fetch-pr-labels.sh --check= skip-api-comparison; then
2018-05-29 18:03:54 +03:00
printf "❎ Skipped API comparison because the PR has the label 'skip-api-comparison'\\n" >> " $WORKSPACE /jenkins/pr-comments.md "
2018-04-27 10:05:50 +03:00
exit 0
fi
2018-05-29 18:03:54 +03:00
# SC2154: ghprbPullId is referenced but not assigned.
# shellcheck disable=SC2154
BASE = " origin/pr/ $ghprbPullId /merge "
if ! git rev-parse " $BASE " >/dev/null 2>& 1; then
2018-04-21 01:04:18 +03:00
echo " Can't compare API and create generator diff because the pull request has conflicts that must be resolved first (the branch ' $BASE ' doesn't exist). "
2018-05-29 18:03:54 +03:00
printf "🔥 [Failed to compare API and create generator diff because the pull request has conflicts that must be resolved first](%s/console) 🔥\\n" " $BUILD_URL " >> " $WORKSPACE /jenkins/pr-comments.md "
2018-04-21 01:04:18 +03:00
exit 0
fi
2018-05-29 18:03:54 +03:00
./tools/compare-commits.sh --base= " $BASE ^1 "
2018-02-13 09:47:47 +03:00
mkdir -p jenkins-results/apicomparison
cp -R tools/comparison/apidiff/diff jenkins-results/apicomparison/
cp tools/comparison/apidiff/*.html jenkins-results/apicomparison/
cp -R tools/comparison/generator-diff jenkins-results/generator-diff
2018-04-02 15:49:03 +03:00
2018-05-31 00:07:28 +03:00
printf "✅ [API Diff (from PR only)](%s/API_20diff_20_28PR_20only_29)" " $BUILD_URL " >> " $WORKSPACE /jenkins/pr-comments.md "
if ! grep "href=" jenkins-results/apicomparison/api-diff.html >/dev/null 2>& 1; then
printf " (no change)" >> " $WORKSPACE /jenkins/pr-comments.md "
elif perl -0777 -pe 's/<script type="text\/javascript">.*?<.script>/script removed/gs' jenkins-results/apicomparison/*.html | grep data-is-breaking; then
printf " (🔥 breaking changes 🔥)" >> " $WORKSPACE /jenkins/pr-comments.md "
else
printf " (please review changes)" >> " $WORKSPACE /jenkins/pr-comments.md "
fi
printf "\\n" >> " $WORKSPACE /jenkins/pr-comments.md "
printf "✅ [Generator Diff](%s/Generator_20Diff)" " $BUILD_URL " >> " $WORKSPACE /jenkins/pr-comments.md "
if grep "^[+-][^+-]" jenkins-results/generator-diff/generator.diff | grep -v "^.[[]assembly: AssemblyInformationalVersion" | grep -v "^[+-][[:space:]]*internal const string Revision =" >/dev/null 2>& 1; then
printf " (please review changes)" >> " $WORKSPACE /jenkins/pr-comments.md "
else
printf " (only version changes)" >> " $WORKSPACE /jenkins/pr-comments.md "
fi
printf "\\n" >> " $WORKSPACE /jenkins/pr-comments.md "