add license scan to stage_2 51/2051/2
authorMike Marchetti <mmarchetti@sandvine.com>
Fri, 28 Jul 2017 20:08:31 +0000 (16:08 -0400)
committerMike Marchetti <mmarchetti@sandvine.com>
Fri, 28 Jul 2017 20:17:25 +0000 (16:17 -0400)
Change-Id: I4da33c0aab23d3785227a6cdb91aea4dcb7e7b4c
Signed-off-by: Mike Marchetti <mmarchetti@sandvine.com>
jenkins/ci-pipelines/ci_stage_2.groovy
tools/license_scan.sh [new file with mode: 0755]

index c17a731..45cbc7d 100644 (file)
@@ -38,6 +38,10 @@ def ci_pipeline(mdg,url_prefix,project,branch,refspec,revision,build_system) {
         project_checkout(url_prefix,project,refspec,revision)
     }
 
+    stage('License Scan') {
+        sh "devops/tools/license_scan.sh"
+    }
+
     container_name = "${project}-${branch}".toLowerCase()
 
     stage('Docker-Build') {
diff --git a/tools/license_scan.sh b/tools/license_scan.sh
new file mode 100755 (executable)
index 0000000..3295600
--- /dev/null
@@ -0,0 +1,75 @@
+#
+#   Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+#!/bin/sh
+
+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
+
+git fetch
+
+RE="FATAL: your file did not get passed through"
+
+for file in $(git diff --name-only origin/$GERRIT_BRANCH); do
+    if [ -f $file ]; then
+        if [ -s $file ]; then
+            license=$(wget -qO - --post-file $file https://osm.etsi.org/fossology/?mod=agent_nomos_once |sed "s/^[ \t]*//;s/[ \t]*$//")
+            if [[ $license =~ $RE ]]; then
+                # possibly we have exceeded the post rate
+                sleep 10
+                license=$(wget -qO - --post-file $file https://osm.etsi.org/fossology/?mod=agent_nomos_once |sed "s/^[ \t]*//;s/[ \t]*$//")
+            fi
+        else
+            license="No_license_found"
+        fi
+    else
+        license="DELETED"
+    fi
+    echo "$file $license"
+    case "$license" in
+        "Apache-2.0")
+            apache=$((apache + 1))
+            ;;
+        "No_license_found")
+            nolicense=$((nolicense + 1))
+            ;;
+        "DELETED")
+            ;;
+        "FATAL:*")
+            ;;
+        *)
+            echo "BAD LICENSE ON FILE $file"
+            other=$((other + 1))
+            ;;
+    esac
+done
+
+if [ $other -gt 0 ]; then
+    echo "FATAL: Non-apache licenses detected"
+    exit 2
+fi
+
+if [ $nolicense -gt 0 ]; then
+    echo "WARNING: Unlicensed files found"
+fi
+
+exit 0