Add JJB template for static code analysis by Coverity Scan service
[ci-management.git] / shell / maven-coverity.sh
1 #!/bin/bash
2
3 # Copyright 2019 Samsung Electronics Co., Ltd.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 set -Eeuxo pipefail
18 PS4='+['$(readlink -f "$0")' ${FUNCNAME[0]%main}#$LINENO] '
19
20 echo '---> maven-coverity.sh'
21
22 #-----------------------------------------------------------------------------
23 # Get Coverity Scan build tool
24
25 curl \
26   --verbose \
27   --silent \
28   --show-error \
29   --fail \
30   --form "project=${COVERITY_PROJECT_NAME}" \
31   --form "token=${COVERITY_TOKEN}" \
32   --output 'coverity_tool.tgz' \
33   'https://scan.coverity.com/download/linux64'
34
35 tar \
36   --extract \
37   --gunzip \
38   --file='coverity_tool.tgz'
39
40 COVERITY_BUILD_TOOL_DIRECTORY=$(
41   head -1 <( \
42     tar \
43       --list \
44       --gunzip \
45       --file='coverity_tool.tgz'
46   )
47 )
48 COVERITY_BINARY_DIRECTORY="${COVERITY_BUILD_TOOL_DIRECTORY}bin"
49 test -d "${COVERITY_BINARY_DIRECTORY}" \
50   || exit 1
51 export PATH="${PATH}:${COVERITY_BINARY_DIRECTORY}"
52
53 rm 'coverity_tool.tgz'
54
55 #-----------------------------------------------------------------------------
56 # Build
57
58 export MAVEN_OPTS
59
60 cov-build \
61   --dir 'cov-int' \
62   "${MVN}" clean install \
63     --errors \
64     --global-settings "${GLOBAL_SETTINGS_FILE}" \
65     --settings "${SETTINGS_FILE}" \
66     ${MAVEN_OPTIONS:=} \
67     ${MAVEN_PARAMS:=}
68
69 cov-import-scm \
70   --dir 'cov-int' \
71   --scm 'git'
72
73 #-----------------------------------------------------------------------------
74 # Submit results to Coverity service
75
76 tar \
77   --create \
78   --gzip \
79   --file='results.tgz' \
80   'cov-int'
81
82 curl \
83   --verbose \
84   --silent \
85   --show-error \
86   --fail \
87   --form "project=${COVERITY_PROJECT_NAME}" \
88   --form "email=${COVERITY_USER_EMAIL}" \
89   --form "token=${COVERITY_TOKEN}" \
90   --form 'file=@results.tgz' \
91   --form "version=${GIT_COMMIT:0:7}" \
92   --form "description=${GIT_BRANCH}" \
93   'https://scan.coverity.com/builds'
94
95 #-----------------------------------------------------------------------------
96
97 exit 0