[CORD-3185]v2

Local tagging for release builds in imagebuilder for another API job

Change-Id: I69dfcab0f80316cfdfeea25a03427c1a154634fd
diff --git a/jjb/api-test.yaml b/jjb/api-test.yaml
index 461c039..be15dad 100644
--- a/jjb/api-test.yaml
+++ b/jjb/api-test.yaml
@@ -5,8 +5,8 @@
     id: api-test
     name: 'verify_{project}_api-test'
     description: |
-      <!-- Managed by Jenkins Job Builder -->
-      Created by api-test job-template from ci-management/jjb/api-test.yaml
+      Created by {id} job-template from ci-management/jjb/api-test.yaml, using pipeline: {pipeline_script}
+
 
     triggers:
       - cord-infra-gerrit-trigger-patchset:
diff --git a/jjb/pipeline/all-xos-api-test-helm.groovy b/jjb/pipeline/all-xos-api-test-helm.groovy
index 3c4957f..c779be3 100644
--- a/jjb/pipeline/all-xos-api-test-helm.groovy
+++ b/jjb/pipeline/all-xos-api-test-helm.groovy
@@ -45,14 +45,69 @@
     stage('patch') {
       steps {
         sh """
+           #!/usr/bin/env bash
+           set -eu -o pipefail
+
+           VERSIONFILE="" # file path to file containing version number
+           NEW_VERSION="" # version number found in VERSIONFILE
+           release_version=0
+
+           function read_version {
+             if [ -f "VERSION" ]
+             then
+               NEW_VERSION=\$(head -n1 "VERSION")
+               VERSIONFILE="VERSION"
+             elif [ -f "package.json" ]
+             then
+               NEW_VERSION=\$(python -c 'import json,sys;obj=json.load(sys.stdin); print obj["version"]' < package.json)
+               VERSIONFILE="package.json"
+             else
+               echo "ERROR: No versioning file found!"
+               exit 1
+             fi
+           }
+
+           # check if the version is a released version
+           function check_if_releaseversion {
+             if [[ "\$NEW_VERSION" =~ ^([0-9]+)\\.([0-9]+)\\.([0-9]+)\$ ]]
+             then
+               echo "Version string '\$NEW_VERSION' in '\$VERSIONFILE' is a SemVer released version!"
+               releaseversion=1
+             else
+               echo "Version string '\$NEW_VERSION' in '\$VERSIONFILE' is not a SemVer released version, skipping."
+             fi
+           }
+
            pushd cord
            PROJECT_PATH=\$(xmllint --xpath "string(//project[@name=\\\"${gerritProject}\\\"]/@path)" .repo/manifest.xml)
            repo download "\$PROJECT_PATH" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+
+           pushd \$PROJECT_PATH
+           echo "Existing git tags:"
+           git tag -n
+
+           read_version
+           check_if_releaseversion
+
+           # perform checks if a released version
+           if [ "\$releaseversion" -eq "1" ]
+           then
+             git config --global user.email "apitest@opencord.org"
+             git config --global user.name "API Test"
+
+             git tag -a "\$NEW_VERSION" -m "Tagged for api test on Gerrit patchset: ${gerritChangeNumber}"
+
+             echo "Tags including new tag:"
+             git tag -n
+
+           fi
            popd
-         """
+           popd
+           """
       }
     }
 
+
     stage('prep') {
       parallel {