mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 08:53:48 +00:00

Curl by default does not report errors by setting the error code. As the upload can fail through several conditions (e.g. the rate limit, leading to unauthorized access) we should indicate this information in Travis CI. To improve upon the behavior, use `--write-out=%{http_code}` to write out the HTTP code in addition to the received body and return an error if the code does not equal 201.
73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Environment check
|
|
[ -z "$COVERITY_TOKEN" ] && echo "Need to set a coverity token" && exit 1
|
|
|
|
# Only run this on our branches
|
|
echo "Pull request: $TRAVIS_PULL_REQUEST | Slug: $TRAVIS_REPO_SLUG"
|
|
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_REPO_SLUG" != "libgit2/libgit2" ];
|
|
then
|
|
echo "Only analyzing 'development' on the main repo."
|
|
exit 0
|
|
fi
|
|
|
|
COV_VERSION=6.6.1
|
|
case $(uname -m) in
|
|
i?86) BITS=32 ;;
|
|
amd64|x86_64) BITS=64 ;;
|
|
esac
|
|
SCAN_TOOL=https://scan.coverity.com/download/linux-${BITS}
|
|
TOOL_BASE=$(pwd)/_coverity-scan
|
|
|
|
# Install coverity tools
|
|
if [ ! -d "$TOOL_BASE" ]; then
|
|
echo "Downloading coverity..."
|
|
mkdir -p "$TOOL_BASE"
|
|
pushd "$TOOL_BASE"
|
|
wget -O coverity_tool.tgz $SCAN_TOOL \
|
|
--post-data "project=libgit2&token=$COVERITY_TOKEN"
|
|
tar xzf coverity_tool.tgz
|
|
popd
|
|
TOOL_DIR=$(find "$TOOL_BASE" -type d -name 'cov-analysis*')
|
|
ln -s "$TOOL_DIR" "$TOOL_BASE"/cov-analysis
|
|
fi
|
|
|
|
cp script/user_nodefs.h "$TOOL_BASE"/cov-analysis/config/user_nodefs.h
|
|
|
|
COV_BUILD="$TOOL_BASE/cov-analysis/bin/cov-build"
|
|
|
|
# Configure and build
|
|
rm -rf _build
|
|
mkdir _build
|
|
cd _build
|
|
cmake .. -DTHREADSAFE=ON
|
|
COVERITY_UNSUPPORTED=1 \
|
|
$COV_BUILD --dir cov-int \
|
|
cmake --build .
|
|
|
|
# Upload results
|
|
tar czf libgit2.tgz cov-int
|
|
SHA=$(git rev-parse --short HEAD)
|
|
|
|
HTML="$(curl \
|
|
--silent \
|
|
--write-out "\n%{http_code}" \
|
|
--form token="$COVERITY_TOKEN" \
|
|
--form email=bs@github.com \
|
|
--form file=@libgit2.tgz \
|
|
--form version="$SHA" \
|
|
--form description="Travis build" \
|
|
https://scan.coverity.com/builds?project=libgit2)"
|
|
# Body is everything up to the last line
|
|
BODY="$(echo "$HTML" | head -n-1)"
|
|
# Status code is the last line
|
|
STATUS_CODE="$(echo "$HTML" | tail -n1)"
|
|
|
|
echo "${BODY}"
|
|
|
|
if [ "${STATUS_CODE}" != "201" ]; then
|
|
echo "Received error code ${STATUS_CODE} from Coverity"
|
|
exit 1
|
|
fi
|