Snap promotion fix 12/10212/2
authorbeierlm <mark.beierl@canonical.com>
Fri, 22 Jan 2021 21:04:13 +0000 (16:04 -0500)
committerbeierlm <mark.beierl@canonical.com>
Mon, 25 Jan 2021 17:34:49 +0000 (12:34 -0500)
Changes snapcraft to run directly on host instead of in docker
continer.  This adds the requirement to have snapcraft installed
in the Jenkins agent, but is more reliable as the snapcraft docker
image is not the best practice anymore for building snaps.

Back ported new license scan.

Change-Id: I21da8a2d38671fc7b253cb6e19a8afb1f1e6acb6
Signed-off-by: beierlm <mark.beierl@canonical.com>
jenkins/ci-pipelines/ci_stage_3.groovy
tools/license_scan.sh

index 71e5386..ff329b9 100644 (file)
@@ -114,9 +114,6 @@ def run_robot_systest(tagName,testName,osmHostname,prometheusHostname,prometheus
 
 def archive_logs(remote) {
 
--def archive_logs(stackName) {
--    sh "docker service ls |grep \"${stackName}\"| awk '{print \$2}'| xargs -iy docker service logs y --timestamps > containers_logs.txt 2>&1"
--    archiveArtifacts artifacts: 'containers_logs.txt'
     sshCommand remote: remote, command: '''mkdir -p logs'''
     if (useCharmedInstaller) {
         sshCommand remote: remote, command: '''
@@ -128,9 +125,15 @@ def archive_logs(remote) {
         '''
     } else {
         sshCommand remote: remote, command: '''
-            for service in `docker service ls| grep \"${stackName}\"| awk '{print \$2}`; do
-                echo "Extracting log for $service"
-                docker service logs $service --timestamps 2>&1 > logs/$service.log
+            for deployment in `kubectl -n osm get deployments | grep -v operator | grep -v NAME| awk '{print $1}'`; do
+                echo "Extracting log for $deployment"
+                kubectl -n osm logs deployments/$deployment --timestamps=true --all-containers 2>&1 > logs/$deployment.log
+            done
+        '''
+        sshCommand remote: remote, command: '''
+            for statefulset in `kubectl -n osm get statefulsets | grep -v operator | grep -v NAME| awk '{print $1}'`; do
+                echo "Extracting log for $statefulset"
+                kubectl -n osm logs statefulsets/$statefulset --timestamps=true --all-containers 2>&1 > logs/$statefulset.log
             done
         '''
     }
@@ -515,8 +518,9 @@ EOF"""
 
                         stage("Snap promotion") {
                             def snaps = ["osmclient"]
+                            sh "snapcraft login --with ~/.snapcraft/config"
                             for (snap in snaps) {
-                                channel=""
+                                channel="latest/"
                                 if (BRANCH_NAME.startsWith("v")) {
                                     channel=BRANCH_NAME.substring(1)+"/"
                                 } else if (BRANCH_NAME!="master") {
@@ -524,26 +528,19 @@ EOF"""
                                 }
                                 track=channel+"edge\\*"
                                 edge_rev=sh(returnStdout: true,
-                                    script: "sudo docker run -v ~/.snapcraft:/snapcraft -v ${WORKSPACE}:/build " +
-                                    "-w /build snapcore/snapcraft:stable /bin/bash -c " +
-                                    "\"snapcraft login --with /snapcraft/config &>/dev/null && " +
-                                    "snapcraft revisions $snap\" | " +
+                                    script: "snapcraft revisions $snap | " +
                                     "grep \"$track\" | tail -1 | awk '{print \$1}'").trim()
+                                print "edge rev is $edge_rev"
                                 track=channel+"beta\\*"
                                 beta_rev=sh(returnStdout: true,
-                                    script: "sudo docker run -v ~/.snapcraft:/snapcraft -v ${WORKSPACE}:/build " +
-                                    "-w /build snapcore/snapcraft:stable /bin/bash -c " +
-                                    "\"snapcraft login --with /snapcraft/config &>/dev/null && " +
-                                    "snapcraft revisions $snap\" | " +
+                                    script: "snapcraft revisions $snap | " +
                                     "grep \"$track\" | tail -1 | awk '{print \$1}'").trim()
+                                print "beta rev is $beta_rev"
 
                                 if ( edge_rev != beta_rev ) {
                                     print "Promoting $edge_rev to beta in place of $beta_rev"
                                     beta_track=channel+"beta"
-                                    sh("sudo docker run -v ~/.snapcraft:/snapcraft -v ${WORKSPACE}:/build " +
-                                        "-w /build snapcore/snapcraft:stable /bin/bash -c " +
-                                        "\"snapcraft login --with /snapcraft/config &>/dev/null && " +
-                                        "snapcraft release $snap $edge_rev $beta_track\"")
+                                    sh "snapcraft release $snap $edge_rev $beta_track"
                                 }
                             }
                         }
index 5af31df..6e317b1 100755 (executable)
@@ -1,3 +1,4 @@
+#!/bin/sh
 #
 #   Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U.
 #
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 #
-#!/bin/sh
-
-# Change log:
-# 1. Bug 722 : Jayant Madavi : JM00553988@techmahindra.com : Enhancement to use new fossology server. Had to change the variable name at #    couple of places, while scanning the variable name was adding curl as a license.
-# 2. Bug 542 : Jayant Madavi, Mrityunjay Yadav : JM00553988@techmahindra.com : 24-jul-2019 : Enhancement to raise exit in case files modified or added does #    not contain license.
-# 3. Bug 542  : Jayant Madavi, Mrityunjay Yadav : JM00553988@techmahindra.com :add exception list. for now as inLine. later need to create a variable for exception_list
-
-echo GERRIT BRANCH is $GERRIT_BRANCH
-dpkg -l wget &>/dev/null ||sudo apt-get install -y wget
-dpkg -l curl &>/dev/null ||sudo apt-get install -y curl
-#Curl can be used instead of wget:
-#curl -s -X POST -d @$file https://osm.etsi.org/fossology/?mod=agent_nomos_once
 
 apache=0
 nolicense=0
 other=0
-exception_list="':(exclude)*.pdf' ':(exclude)*.png' ':(exclude)*.jpeg' ':(exclude)*.jpg' ':(exclude)*.gif' ':(exclude)*.json' ':(exclude)*.ico'"
+exception_list="':(exclude)*.pdf' ':(exclude)*.png' ':(exclude)*.jpeg' ':(exclude)*.jpg' ':(exclude)*.gif' ':(exclude)*.json' ':(exclude)*.ico' ':(exclude)*.svg' ':(exclude)*.tiff'"
 git fetch
 
-RE="FATAL: your file did not get passed through"
-
 for file in $(echo ${exception_list} | xargs git diff --name-only origin/$GERRIT_BRANCH -- . ); do
+    license="No Apache license found"
     if [ -f $file ]; then
         if [ -s $file ]; then
-            licnse=$(curl -s -X POST  -H 'Accept: text' -H 'Cache-Control: no-cache' -H 'Connection: keep-alive'  -H 'Content-Type: multipart/form-data'  -H 'cache-control: no-cache'  -F "file_input=@\"$file\""  -F 'showheader=1' https://fossology-osm.etsi.org/?mod=agent_nomos_once |grep "A one shot license analysis shows the following license(s) in file"|sed -n 's:.*<strong>\(.*\)</strong>.*:\1:p' |xargs)
-            result=$(echo $licnse | grep "$RE")
-            if [ -n "$result" ]; then
-                # possibly we have exceeded the post rate
-                sleep 10
-                licnse=$(curl -s -X POST  -H 'Accept: text' -H 'Cache-Control: no-cache' -H 'Connection: keep-alive'  -H 'Content-Type: multipart/form-data'  -H 'cache-control: no-cache'  -F "file_input=@\"$file\""  -F 'showheader=1' https://fossology-osm.etsi.org/?mod=agent_nomos_once |grep "A one shot license analysis shows the following license(s) in file"|sed -n 's:.*<strong>\(.*\)</strong>.*:\1:p' |xargs)
+            if [ $(grep -c "http://www.apache.org/licenses/LICENSE-2.0" $file) -ge 1 ] ; then
+                license="Apache-2.0"
             fi
-        else
-            licnse="No_license_found"
         fi
     else
-        licnse="DELETED"
+        license="DELETED"
     fi
-    echo "$file $licnse"
-    case "$licnse" in
+    echo "$file $license"
+    case "$license" in
         "Apache-2.0")
             apache=$((apache + 1))
             ;;
-        "No_license_found")
+        No*)
             nolicense=$((nolicense + 1))
             ;;
         "DELETED")
             ;;
-        "FATAL:*")
-            ;;
         *)
             echo "BAD LICENSE ON FILE $file"
             other=$((other + 1))
@@ -69,14 +49,10 @@ for file in $(echo ${exception_list} | xargs git diff --name-only origin/$GERRIT
     esac
 done
 
-if [ $other -gt 0 ]; then
-    echo "FATAL: Non-apache licenses detected"
-    exit 2
-fi
 
 if [ $nolicense -gt 0 ]; then
-    echo "FATAL: Unlicensed files found"
-       exit 2
+    echo "FATAL: Files without apache license found"
+    exit 2
 fi
 
 exit 0