summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@linuxfoundation.org>2019-09-03 17:08:42 +0000
committerGerrit Code Review <gerrit@onap.org>2019-09-03 17:08:42 +0000
commite39fa8b213ed7fe607298a66c93329663958de8a (patch)
tree7d9f503c9107fc120a1f7fe68d942f6848df1202
parent86d0751bc220339dd27b585c771afd24b31c8876 (diff)
parentdcc213dedc51a82832f90d644f14b28a3e55aa18 (diff)
Merge "Add workaround for broken git repo polling by Jenkins"
-rw-r--r--jjb/ci-management/ci-management-coverity.yaml9
-rw-r--r--shell/maven-coverity.sh38
2 files changed, 43 insertions, 4 deletions
diff --git a/jjb/ci-management/ci-management-coverity.yaml b/jjb/ci-management/ci-management-coverity.yaml
index fadea8882..6003bf24e 100644
--- a/jjb/ci-management/ci-management-coverity.yaml
+++ b/jjb/ci-management/ci-management-coverity.yaml
@@ -41,6 +41,7 @@
coverity-user-email: ''
coverity-search-paths: ''
coverity-search-exclude-regexs: ''
+ max-git-repo-age-hours: 0
stream: master
submodule-recursive: true
submodule-timeout: 10
@@ -101,6 +102,14 @@
name: DRY_RUN
default: '{dry-run}'
description: Do not submit results to Coverity Scan server at the end of the build.
+ - string:
+ name: 'MAX_GIT_REPO_AGE_HOURS'
+ default: '{max-git-repo-age-hours}'
+ description: >
+ If set to non-zero run the code scan only if there were no git
+ repository commits last MAX_GIT_REPO_AGE_HOURS hours.
+ It makes sense to set the value twice the 'cron' interval for the
+ job (e.g. if 'cron: @daily', then MAX_GIT_REPO_AGE_HOURS=48)
triggers:
- timed: '{obj:cron}'
diff --git a/shell/maven-coverity.sh b/shell/maven-coverity.sh
index 5db7f33e4..af5422ead 100644
--- a/shell/maven-coverity.sh
+++ b/shell/maven-coverity.sh
@@ -23,6 +23,29 @@ SUBMISSION_ATTEMPTS=5
SUBMISSION_INITIAL_REST_INTERVAL=30 # seconds, will be doubled after each attempt
#-----------------------------------------------------------------------------
+# Check for git repo changes within the last $MAX_GIT_REPO_AGE_HOURS hours
+#
+# It makes sense to set the value twice the 'cron' interval for the job (e.g.
+# if 'cron: @daily', then MAX_GIT_REPO_AGE_HOURS=48)
+
+if ! [[ "${MAX_GIT_REPO_AGE_HOURS:=0}" =~ ^[0-9]+$ ]]; then
+ echo '[ERROR] MAX_GIT_REPO_AGE_HOURS must be non-negative integer.' \
+ >&2
+ exit 1
+fi
+
+if [ ${MAX_GIT_REPO_AGE_HOURS:=0} -ne 0 ]; then
+ LAST_COMMIT_AGE=$(( $(date +%s) - $(git log -1 --pretty=format:%ct) ))
+
+ if [ $LAST_COMMIT_AGE -le $(( MAX_GIT_REPO_AGE_HOURS *60*60 )) ]; then
+ echo '[NOTICE] Git repository did not have any commits last' \
+ "${MAX_GIT_REPO_AGE_HOURS} hours - no need to re-analyse it." \
+ >&2
+ exit 0
+ fi
+fi
+
+#-----------------------------------------------------------------------------
# Process parameters for JS/TS/Python/Ruby/PHP files analysis
if [ -n "${SEARCH_PATHS:=}" ]; then
@@ -30,7 +53,9 @@ if [ -n "${SEARCH_PATHS:=}" ]; then
if [ -d "${SEARCH_PATH}" ]; then
FS_CAPTURE_SEARCH_PARAMS="${FS_CAPTURE_SEARCH_PARAMS:=} --fs-capture-search '${SEARCH_PATH}'"
else
- echo "'${SEARCH_PATH}' from \$SEARCH_PATHS is not an existing directory." >&2
+ echo "[ERROR] '${SEARCH_PATH}' from \$SEARCH_PATHS is not an" \
+ "existing directory." \
+ >&2
exit 1
fi
done
@@ -69,7 +94,9 @@ if [ "${DRY_RUN}" != 'true' ]; then
| jq '.upload_permitted'
)
if [ x"${IS_COVERITY_UPLOAD_PERMITTED}" != x'true' ]; then
- echo "Upload quota reached. Next upload permitted at "$(echo "${CURL_OUTPUT}" | jq '.next_upload_permitted_at') >&2
+ echo "[WARNING] Upload quota reached. Next upload permitted at" \
+ $(echo "${CURL_OUTPUT}" | jq '.next_upload_permitted_at') \
+ >&2
exit 1
fi
fi
@@ -220,11 +247,14 @@ if [ "${DRY_RUN}" != 'true' ]; then
HTTP_RESPONSE=$(echo -n "${CURL_OUTPUT}" | head -n -1 | tr -d '\n')
if [ x"${HTTP_RESPONSE}" != x"Build successfully submitted." ]; then
- echo "Coverity Scan service responded with '${HTTP_RESPONSE}' while 'Build successfully submitted.' expected." >&2
+ echo "[ERROR] Coverity Scan service responded with '${HTTP_RESPONSE}'" \
+ "while 'Build successfully submitted.' expected." \
+ >&2
exit 1
fi
+
+ echo "[INFO] Build successfully submitted to Coverity Scan server." >&2
fi
#-----------------------------------------------------------------------------
-
exit 0