1
1
#! /bin/sh
2
+ # Modified coverity scan build script
3
+ # Original script available at https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh
4
+ # Additions (see corresponding sections below):
5
+ # - Verify Coverity Scan run condition
6
+ # - Verify Coverity Scan script test mode
7
+ # - set TOOL_BASE to a writable directory with more than 1Gb free space
2
8
3
9
set -e
4
10
5
11
# Environment check
6
- echo -e " \033[33;1mNote: PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m"
12
+ echo -e " \033[33;1mNote: COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m"
7
13
[ -z " $COVERITY_SCAN_PROJECT_NAME " ] && echo " ERROR: COVERITY_SCAN_PROJECT_NAME must be set" && exit 1
8
- # [ -z "$COVERITY_SCAN_NOTIFICATION_EMAIL" ] && echo "ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1
14
+ [ -z " $COVERITY_SCAN_NOTIFICATION_EMAIL " ] && echo " ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1
9
15
[ -z " $COVERITY_SCAN_BRANCH_PATTERN " ] && echo " ERROR: COVERITY_SCAN_BRANCH_PATTERN must be set" && exit 1
10
16
[ -z " $COVERITY_SCAN_BUILD_COMMAND " ] && echo " ERROR: COVERITY_SCAN_BUILD_COMMAND must be set" && exit 1
11
17
[ -z " $COVERITY_SCAN_TOKEN " ] && echo " ERROR: COVERITY_SCAN_TOKEN must be set" && exit 1
12
18
13
19
PLATFORM=` uname`
14
20
TOOL_ARCHIVE=/tmp/cov-analysis-${PLATFORM} .tgz
15
21
TOOL_URL=https://scan.coverity.com/download/${PLATFORM}
16
- TOOL_BASE=/tmp/coverity-scan-analysis
17
- UPLOAD_URL=" http://scan5.coverity.com/cgi-bin/travis_upload.py"
22
+ # TOOL_BASE=/tmp/coverity-scan-analysis
23
+ TOOL_BASE=/home/travis/coverity-scan-analysis
24
+ UPLOAD_URL=" https://scan.coverity.com/builds"
18
25
SCAN_URL=" https://scan.coverity.com"
19
26
20
27
# Verify Coverity Scan run condition
54
61
else
55
62
WHEN=` echo $AUTH_RES | ruby -e " require 'rubygems'; require 'json'; puts JSON[STDIN.read]['next_upload_permitted_at']" `
56
63
echo -e " \033[33;1mCoverity Scan analysis NOT authorized until $WHEN .\033[0m"
57
- exit 1
64
+ exit 0
58
65
fi
59
66
fi
60
67
@@ -83,13 +90,13 @@ COV_BUILD_OPTIONS=""
83
90
RESULTS_DIR=" cov-int"
84
91
eval " ${COVERITY_SCAN_BUILD_COMMAND_PREPEND} "
85
92
COVERITY_UNSUPPORTED=1 cov-build --dir $RESULTS_DIR $COV_BUILD_OPTIONS $COVERITY_SCAN_BUILD_COMMAND
93
+ cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR /scm_log.txt 2>&1
86
94
87
95
# Upload results
88
96
echo -e " \033[33;1mTarring Coverity Scan Analysis results...\033[0m"
89
97
RESULTS_ARCHIVE=analysis-results.tgz
90
98
tar czf $RESULTS_ARCHIVE $RESULTS_DIR
91
99
SHA=` git rev-parse --short HEAD`
92
- # VERSION_SHA=$(cat VERSION)#$SHA
93
100
94
101
# Verify Coverity Scan script test mode
95
102
if [ " $coverity_scan_script_test_mode " = true ]; then
@@ -98,14 +105,18 @@ if [ "$coverity_scan_script_test_mode" = true ]; then
98
105
fi
99
106
100
107
echo -e " \033[33;1mUploading Coverity Scan Analysis results...\033[0m"
101
- curl \
102
- --progress-bar \
108
+ response= $( curl \
109
+ --silent --write-out " \n%{http_code}\n " \
103
110
--form project=$COVERITY_SCAN_PROJECT_NAME \
104
111
--form token=$COVERITY_SCAN_TOKEN \
105
112
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
106
113
--form file=@$RESULTS_ARCHIVE \
107
114
--form version=$SHA \
108
115
--form description=" Travis CI build" \
109
- $UPLOAD_URL
110
-
111
- # --form description="$VERSION_SHA" \
116
+ $UPLOAD_URL )
117
+ status_code=$( echo " $response " | sed -n ' $p' )
118
+ if [ " $status_code " != " 201" ]; then
119
+ TEXT=$( echo " $response " | sed ' $d' )
120
+ echo -e " \033[33;1mCoverity Scan upload failed: $TEXT .\033[0m"
121
+ exit 1
122
+ fi
0 commit comments