travis: Trigger code review on lgtm.com
Only the master (daily) and pull requests are scanned automatically.
This commit is contained in:
parent
48017a2740
commit
c9a3430368
|
@ -44,6 +44,10 @@ matrix:
|
||||||
addons:
|
addons:
|
||||||
sonarcloud:
|
sonarcloud:
|
||||||
organization: "strongswan"
|
organization: "strongswan"
|
||||||
|
- env: TEST=lgtm
|
||||||
|
if: type = push AND env(LGTM_TOKEN) IS present
|
||||||
|
git:
|
||||||
|
depth: false
|
||||||
- env: TEST=osx
|
- env: TEST=osx
|
||||||
compiler: clang
|
compiler: clang
|
||||||
os: osx
|
os: osx
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# Build script for Travis CI
|
# Build script for Travis CI
|
||||||
|
|
||||||
build_botan()
|
build_botan()
|
||||||
|
@ -281,6 +281,69 @@ apidoc)
|
||||||
CONFIG="--disable-defaults"
|
CONFIG="--disable-defaults"
|
||||||
TARGET=apidoc
|
TARGET=apidoc
|
||||||
;;
|
;;
|
||||||
|
lgtm)
|
||||||
|
DEPS="jq"
|
||||||
|
|
||||||
|
if test -z "$1"; then
|
||||||
|
# fall back to the parent of the latest commit (on new branches we might
|
||||||
|
# not have a range, also on duplicate branches)
|
||||||
|
base="${TRAVIS_COMMIT}^"
|
||||||
|
if test -n "$TRAVIS_COMMIT_RANGE"; then
|
||||||
|
base="${TRAVIS_COMMIT_RANGE%...*}"
|
||||||
|
# after rebases, the first commit ID in the range might not be valid
|
||||||
|
git rev-parse -q --verify $base
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
# this will always compare against master, while the range
|
||||||
|
# otherwise only contains "new" commits
|
||||||
|
base=$(git merge-base origin/master ${TRAVIS_COMMIT})
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
base=$(git rev-parse $base)
|
||||||
|
project_id=1506185006272
|
||||||
|
|
||||||
|
echo "Starting code review for $TRAVIS_COMMIT (base $base) on lgtm.com"
|
||||||
|
git diff --binary $base > lgtm.patch || exit $?
|
||||||
|
curl -s -X POST --data-binary @lgtm.patch \
|
||||||
|
"https://lgtm.com/api/v1.0/codereviews/${project_id}?base=${base}&external-id=${TRAVIS_BUILD_NUMBER}" \
|
||||||
|
-H 'Content-Type: application/octet-stream' \
|
||||||
|
-H 'Accept: application/json' \
|
||||||
|
-H "Authorization: Bearer ${LGTM_TOKEN}" > lgtm.res || exit $?
|
||||||
|
lgtm_check_url=$(jq -r '."task-result-url"' lgtm.res)
|
||||||
|
if [ "$lgtm_check_url" == "null" ]; then
|
||||||
|
cat lgtm.res | jq
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
lgtm_url=$(jq -r '."task-result"."results-url"' lgtm.res)
|
||||||
|
echo "Progress and full results: ${lgtm_url}"
|
||||||
|
|
||||||
|
echo -n "Waiting for completion: "
|
||||||
|
lgtm_status=pending
|
||||||
|
while [ "$lgtm_status" = "pending" ]; do
|
||||||
|
sleep 15
|
||||||
|
curl -s -X GET "${lgtm_check_url}" \
|
||||||
|
-H 'Accept: application/json' \
|
||||||
|
-H "Authorization: Bearer ${LGTM_TOKEN}" > lgtm.res
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo -n "-"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo -n "."
|
||||||
|
lgtm_status=$(jq -r '.status' lgtm.res)
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ "$lgtm_status" != "success" ]; then
|
||||||
|
lgtm_message=$(jq -r '.["status-message"]' lgtm.res)
|
||||||
|
echo "Code review failed: ${lgtm_message}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
lgtm_new=$(jq -r '.languages[].new' lgtm.res | awk '{t+=$1} END {print t}')
|
||||||
|
lgtm_fixed=$(jq -r '.languages[].fixed' lgtm.res | awk '{t+=$1} END {print t}')
|
||||||
|
echo -n "Code review complete: "
|
||||||
|
echo -e "\e[1;31m${lgtm_new}\e[0m new alerts, \e[1;32m${lgtm_fixed}\e[0m fixed"
|
||||||
|
exit $lgtm_new
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "$0: unknown test $TEST" >&2
|
echo "$0: unknown test $TEST" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
Loading…
Reference in New Issue