From 5ec3b77a6456c8cab8326eeaa6376b757968e568 Mon Sep 17 00:00:00 2001 From: Artem Naluzhnyy Date: Sat, 17 Aug 2019 16:21:27 +0200 Subject: [PATCH] Add DRY_RUN job parameter to bypass actual submission to Coverity server The Jebkins job parameter can be used during Coverity Scan job initial configuration or tuning process to avoid unnecessary submission quota exhaustion. Issue-ID: CIMAN-260 Signed-off-by: Artem Naluzhnyy Change-Id: I4dfdf7441b8f31fffa2e4afd62bdd871126cdfd5 --- jjb/ci-management/ci-management-coverity.yaml | 5 ++ shell/maven-coverity.sh | 106 +++++++++++++------------- 2 files changed, 60 insertions(+), 51 deletions(-) diff --git a/jjb/ci-management/ci-management-coverity.yaml b/jjb/ci-management/ci-management-coverity.yaml index cb7b69f3a..c52559218 100644 --- a/jjb/ci-management/ci-management-coverity.yaml +++ b/jjb/ci-management/ci-management-coverity.yaml @@ -29,6 +29,7 @@ build-timeout: 240 cron: '@daily' disabled: false + dry-run: false git-url: '$GIT_URL/$PROJECT' java-version: openjdk8 mvn-global-settings: global-settings @@ -75,6 +76,10 @@ name: ARCHIVE_ARTIFACTS default: '{archive-artifacts}' description: Artifacts to archive to the logs server. + - bool: + name: DRY_RUN + default: '{dry-run}' + description: Do not submit results to Coverity Scan server at the end of the build. triggers: - timed: '{obj:cron}' diff --git a/shell/maven-coverity.sh b/shell/maven-coverity.sh index 5c0418310..e82de3dff 100644 --- a/shell/maven-coverity.sh +++ b/shell/maven-coverity.sh @@ -52,24 +52,26 @@ fi # and have not exceeded our upload quota limits # See also: https://scan.coverity.com/faq#frequency -CURL_OUTPUT=$( - curl \ - --verbose \ - --silent \ - --show-error \ - --fail \ - --form "project=${COVERITY_PROJECT_NAME}" \ - --form "token=${COVERITY_TOKEN}" \ - 'https://scan.coverity.com/api/upload_permitted' -) +if [ "${DRY_RUN}" != 'true' ]; then + CURL_OUTPUT=$( + curl \ + --verbose \ + --silent \ + --show-error \ + --fail \ + --form "project=${COVERITY_PROJECT_NAME}" \ + --form "token=${COVERITY_TOKEN}" \ + 'https://scan.coverity.com/api/upload_permitted' + ) -IS_COVERITY_UPLOAD_PERMITTED=$( - echo "${CURL_OUTPUT}" \ - | 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 - exit 1 + IS_COVERITY_UPLOAD_PERMITTED=$( + echo "${CURL_OUTPUT}" \ + | 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 + exit 1 + fi fi #----------------------------------------------------------------------------- @@ -177,41 +179,43 @@ cov-manage-emit \ #----------------------------------------------------------------------------- # Submit results to Coverity service -tar \ - --create \ - --gzip \ - --file='results.tgz' \ - 'cov-int' - -for (( ATTEMPT=1; ATTEMPT<=SUBMISSION_ATTEMPTS; ATTEMPT++ )); do - CURL_OUTPUT=$( - curl \ - --verbose \ - --silent \ - --show-error \ - --fail \ - --write-out '\n%{http_code}' \ - --form "project=${COVERITY_PROJECT_NAME}" \ - --form "email=${COVERITY_USER_EMAIL}" \ - --form "token=${COVERITY_TOKEN}" \ - --form 'file=@results.tgz' \ - --form "version=${GIT_COMMIT:0:7}" \ - --form "description=${GIT_BRANCH}" \ - 'https://scan.coverity.com/builds' - ) - HTTP_RESPONSE_CODE=$(echo -n "${CURL_OUTPUT}" | tail -1) - test x"${HTTP_RESPONSE_CODE}" = x"200" \ - && break - - sleep "${SUBMISSION_REST_INTERVAL:-$SUBMISSION_INITIAL_REST_INTERVAL}" - - SUBMISSION_REST_INTERVAL=$(( ${SUBMISSION_REST_INTERVAL:-$SUBMISSION_INITIAL_REST_INTERVAL} * 2 )) -done +if [ "${DRY_RUN}" != 'true' ]; then + tar \ + --create \ + --gzip \ + --file='results.tgz' \ + 'cov-int' + + for (( ATTEMPT=1; ATTEMPT<=SUBMISSION_ATTEMPTS; ATTEMPT++ )); do + CURL_OUTPUT=$( + curl \ + --verbose \ + --silent \ + --show-error \ + --fail \ + --write-out '\n%{http_code}' \ + --form "project=${COVERITY_PROJECT_NAME}" \ + --form "email=${COVERITY_USER_EMAIL}" \ + --form "token=${COVERITY_TOKEN}" \ + --form 'file=@results.tgz' \ + --form "version=${GIT_COMMIT:0:7}" \ + --form "description=${GIT_BRANCH}" \ + 'https://scan.coverity.com/builds' + ) + HTTP_RESPONSE_CODE=$(echo -n "${CURL_OUTPUT}" | tail -1) + test x"${HTTP_RESPONSE_CODE}" = x"200" \ + && break + + sleep "${SUBMISSION_REST_INTERVAL:-$SUBMISSION_INITIAL_REST_INTERVAL}" + + SUBMISSION_REST_INTERVAL=$(( ${SUBMISSION_REST_INTERVAL:-$SUBMISSION_INITIAL_REST_INTERVAL} * 2 )) + done -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 - exit 1 + 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 + exit 1 + fi fi #----------------------------------------------------------------------------- -- 2.16.6