You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ho...@apache.org on 2017/06/29 17:33:48 UTC

[incubator-openwhisk-wskdeploy] branch master updated: Enable scancode and update all files that did not pass. (#283)

This is an automated email from the ASF dual-hosted git repository.

houshengbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-wskdeploy.git


The following commit(s) were added to refs/heads/master by this push:
     new 376c2b7  Enable scancode and update all files that did not pass. (#283)
376c2b7 is described below

commit 376c2b7f6589c2a434709f822921abf2d8e57603
Author: Matt Rutkowski <mr...@us.ibm.com>
AuthorDate: Thu Jun 29 12:33:46 2017 -0500

    Enable scancode and update all files that did not pass. (#283)
    
    * enable scancode.
    
    * Enable scancode and update all files that did not pass.
    
    * Enable scancode and update all files that did not pass.
    
    * Enable scancode and update all files that did not pass.
---
 .travis.yml                                        |   4 +
 DEPENDENCIES.md                                    |   4 +-
 build.gradle                                       |  19 ++-
 cmd/root_test.go                                   |  17 +++
 cmdImp/rootImp.go                                  |  17 +++
 cmdImp/undeployImp.go                              |  17 +++
 deployers/deploymentreader_test.go                 |  17 +++
 deployers/manifestreader_test.go                   |  17 +++
 gradle/docker.gradle                               |  19 ++-
 parsers/yamlparser_test.go                         |  17 +++
 tests/README.md                                    |   2 +-
 tests/src/integration/common/wskdeploy.go          |  45 +++++--
 tests/src/integration/common/wskprops.go           |  57 +++++---
 .../src/integration/dependency/dependency_test.go  |  43 ++++--
 .../integration/triggerrule/triggerrule_test.go    |  17 +++
 tests/src/integration/webaction/webaction_test.go  |  17 +++
 .../src/integration/zipaction/actions/cat/index.js |   5 +-
 .../actions/cat/node_modules/cat/README.md         |   8 +-
 .../zipaction/actions/cat/node_modules/cat/bin.js  |   5 +-
 .../actions/cat/node_modules/cat/example.js        |   5 +-
 .../actions/cat/node_modules/cat/index.js          |  89 +++++++------
 tests/src/integration/zipaction/zipaction_test.go  |  41 ++++--
 .../data-processing-app/actions/mhget/mhget.js     | 147 ++++++++++-----------
 .../data-processing-app/actions/mhpost/index.js    |  19 +--
 tests/usecases/openstack/actions/callSlack.js      |   5 +-
 tests/usecases/openstack/actions/createBackup.js   |   9 +-
 tests/usecases/openstack/actions/getApiToken.js    |  27 ++--
 tests/usecases/openstack/actions/getServers.js     |  20 +--
 tools/travis/cloneutils.sh                         |   9 ++
 tools/travis/scancode.sh                           |  11 ++
 utils/dependencies.go                              |  18 ++-
 utils/flags.go                                     |  17 +++
 utils/gitreader.go                                 |  18 ++-
 utils/util_test.go                                 |  17 +++
 34 files changed, 563 insertions(+), 236 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 89131ac..5f7fe18 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,12 +13,16 @@ services:
 git:
   depth: 3
 
+before_install:
+  - ./tools/travis/cloneutils.sh
+
 install:
   - export DEPLOY_BUILD_READY=false
   - go get -u github.com/golang/lint/golint
   - go get -u github.com/stretchr/testify
 
 script:
+  - ./tools/travis/scancode.sh
   - make lint
   - make build
   - export PATH=$PATH:$TRAVIS_BUILD_DIR;
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 2b7046d..46059c0 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -1,9 +1,9 @@
 # Library dependencies for openwhisk-wskdeploy tool
 
-Like other open source projects, openwhisk-wskdeploy is dependent on open source libraries, we 
+Like other open source projects, openwhisk-wskdeploy is dependent on open source libraries, we
 list them here to assure that all code dependencies have Apache 2.0 compatible licenses.
 
 | Library name | Licenses Type | License/Project Link |
 | ------| ------ | ------ |
 | jibber_jabber | Apache 2.0 | https://github.com/cloudfoundry-attic/jibber_jabber |
-| color | MIT | https://github.com/fatih/color |
\ No newline at end of file
+| color | MIT | https://github.com/fatih/color |
diff --git a/build.gradle b/build.gradle
index 8311a44..1cf4798 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 ext.dockerImageName = "wskdeploy"
 ext.dockerContainerName = "wskdeploy"
 ext.dockerBuildArgs = getDockerBuildArgs()
@@ -90,4 +107,4 @@ def mapOsArchToGoArch(String osarch) {
     if (osarch_l.contains("x86_64") || osarch_l == "amd64") return "amd64"
     if (osarch_l.contains("i386") || osarch_l.contains("x86_32")) return "386"
     return osarch_l
-}
\ No newline at end of file
+}
diff --git a/cmd/root_test.go b/cmd/root_test.go
index 94a7c69..e75410d 100644
--- a/cmd/root_test.go
+++ b/cmd/root_test.go
@@ -1,5 +1,22 @@
 // +build unit
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package cmd
 
 import (
diff --git a/cmdImp/rootImp.go b/cmdImp/rootImp.go
index 203865a..833e696 100644
--- a/cmdImp/rootImp.go
+++ b/cmdImp/rootImp.go
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package cmdImp
 
 import (
diff --git a/cmdImp/undeployImp.go b/cmdImp/undeployImp.go
index a02b411..5543447 100644
--- a/cmdImp/undeployImp.go
+++ b/cmdImp/undeployImp.go
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package cmdImp
 
 import (
diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go
index 9f9ff2f..ad0b85c 100644
--- a/deployers/deploymentreader_test.go
+++ b/deployers/deploymentreader_test.go
@@ -1,5 +1,22 @@
 // +build unit
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package deployers
 
 import (
diff --git a/deployers/manifestreader_test.go b/deployers/manifestreader_test.go
index d154520..7b58568 100644
--- a/deployers/manifestreader_test.go
+++ b/deployers/manifestreader_test.go
@@ -1,5 +1,22 @@
 // +build unit
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package deployers
 
 import (
diff --git a/gradle/docker.gradle b/gradle/docker.gradle
index 97c2a9e..6ad6850 100644
--- a/gradle/docker.gradle
+++ b/gradle/docker.gradle
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 import groovy.time.*
 
 /**
@@ -96,4 +113,4 @@ def retry(cmd, retries, timeout) {
             throw new GradleException(message)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/parsers/yamlparser_test.go b/parsers/yamlparser_test.go
index 840d4c5..c0a0cd5 100644
--- a/parsers/yamlparser_test.go
+++ b/parsers/yamlparser_test.go
@@ -1,5 +1,22 @@
 // +build unit
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package parsers
 
 import (
diff --git a/tests/README.md b/tests/README.md
index 0eab28d..3f73d84 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -48,4 +48,4 @@ put under tests/data.
 Different integration tests can be grouped into different packages as well, and they can be put under a
 subfolder named after the package under tests/src/integration. The yaml files of manifest and deployment
 used by the integration test are put under the same subfolder as the integration test itself. The source
-file used by the manifest file can be put under the folder tests/src/integration/<package>/src.
\ No newline at end of file
+file used by the manifest file can be put under the folder tests/src/integration/<package>/src.
diff --git a/tests/src/integration/common/wskdeploy.go b/tests/src/integration/common/wskdeploy.go
index beca1b0..0cf89ea 100644
--- a/tests/src/integration/common/wskdeploy.go
+++ b/tests/src/integration/common/wskdeploy.go
@@ -1,38 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package common
 
 import (
-	"os"
-	"os/exec"
+    "os"
+    "os/exec"
 )
 
 const cmd = "wskdeploy"
 
 type Wskdeploy struct {
-	Path string
-	Dir  string
+    Path string
+    Dir  string
 }
 
 func NewWskdeploy() *Wskdeploy {
-	return NewWskWithPath(os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/")
+    return NewWskWithPath(os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/")
 }
 
 func NewWskWithPath(path string) *Wskdeploy {
-	var dep Wskdeploy
-	dep.Path = cmd
-	dep.Dir = path
-	return &dep
+    var dep Wskdeploy
+    dep.Path = cmd
+    dep.Dir = path
+    return &dep
 }
 
 func (wskdeploy *Wskdeploy) RunCommand(s ...string) ([]byte, error) {
-	command := exec.Command(wskdeploy.Path, s...)
-	command.Dir = wskdeploy.Dir
-	return command.CombinedOutput()
+    command := exec.Command(wskdeploy.Path, s...)
+    command.Dir = wskdeploy.Dir
+    return command.CombinedOutput()
 }
 
 func (wskdeploy *Wskdeploy) Deploy(manifestPath string, deploymentPath string) ([]byte, error) {
-	return wskdeploy.RunCommand("-m", manifestPath, "-d", deploymentPath)
+    return wskdeploy.RunCommand("-m", manifestPath, "-d", deploymentPath)
 }
 
 func (wskdeploy *Wskdeploy) Undeploy(manifestPath string, deploymentPath string) ([]byte, error) {
-	return wskdeploy.RunCommand("undeploy", "-m", manifestPath, "-d", deploymentPath)
+    return wskdeploy.RunCommand("undeploy", "-m", manifestPath, "-d", deploymentPath)
 }
diff --git a/tests/src/integration/common/wskprops.go b/tests/src/integration/common/wskprops.go
index 6f9f171..ebe12e5 100644
--- a/tests/src/integration/common/wskprops.go
+++ b/tests/src/integration/common/wskprops.go
@@ -1,33 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package common
 
 import (
-	"github.com/spf13/viper"
-	"io/ioutil"
-	"os"
+    "github.com/spf13/viper"
+    "io/ioutil"
+    "os"
 )
 
 type Wskprops struct {
-	APIHost string
-	AuthKey string
+    APIHost string
+    AuthKey string
 }
 
 func GetWskprops() *Wskprops {
-	var dep Wskprops
-	dep.APIHost = ""
-	dep.AuthKey = ""
+    var dep Wskprops
+    dep.APIHost = ""
+    dep.AuthKey = ""
 
-	viper.SetConfigName("whisk")
-	viper.AddConfigPath(os.Getenv("OPENWHISK_HOME"))
+    viper.SetConfigName("whisk")
+    viper.AddConfigPath(os.Getenv("OPENWHISK_HOME"))
 
-	err := viper.ReadInConfig()
-	if err == nil {
-		authPath := viper.GetString("testing.auth")
+    err := viper.ReadInConfig()
+    if err == nil {
+        authPath := viper.GetString("testing.auth")
 
-		b, err := ioutil.ReadFile(authPath)
-		if err == nil {
-			dep.AuthKey = string(b)
-		}
-		dep.APIHost = viper.GetString("router.host")
-	}
-	return &dep
+        b, err := ioutil.ReadFile(authPath)
+        if err == nil {
+            dep.AuthKey = string(b)
+        }
+        dep.APIHost = viper.GetString("router.host")
+    }
+    return &dep
 }
diff --git a/tests/src/integration/dependency/dependency_test.go b/tests/src/integration/dependency/dependency_test.go
index 5b3237c..396d1c5 100644
--- a/tests/src/integration/dependency/dependency_test.go
+++ b/tests/src/integration/dependency/dependency_test.go
@@ -1,12 +1,29 @@
 // +build integration
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package tests
 
 import (
-	"github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
-	"github.com/stretchr/testify/assert"
-	"os"
-	"testing"
+    "github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
+    "github.com/stretchr/testify/assert"
+    "os"
+    "testing"
 )
 
 
@@ -14,15 +31,15 @@ var wskprops = common.GetWskprops()
 
 // TODO: write the integration against openwhisk
 func TestDependency(t *testing.T) {
-	os.Setenv("__OW_API_HOST", wskprops.APIHost)
-	wskdeploy := common.NewWskdeploy()
-	_, err := wskdeploy.Deploy(manifestPath, deploymentPath)
-	assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
-	_, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
-	assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+    os.Setenv("__OW_API_HOST", wskprops.APIHost)
+    wskdeploy := common.NewWskdeploy()
+    _, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+    assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+    _, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+    assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
 }
 
 var (
-	manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/dependency/manifest.yaml"
-	deploymentPath = ""
-)
\ No newline at end of file
+    manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/dependency/manifest.yaml"
+    deploymentPath = ""
+)
diff --git a/tests/src/integration/triggerrule/triggerrule_test.go b/tests/src/integration/triggerrule/triggerrule_test.go
index fee8f64..fb39478 100644
--- a/tests/src/integration/triggerrule/triggerrule_test.go
+++ b/tests/src/integration/triggerrule/triggerrule_test.go
@@ -1,5 +1,22 @@
 // +build integration
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package tests
 
 import (
diff --git a/tests/src/integration/webaction/webaction_test.go b/tests/src/integration/webaction/webaction_test.go
index 3222d88..9716f57 100644
--- a/tests/src/integration/webaction/webaction_test.go
+++ b/tests/src/integration/webaction/webaction_test.go
@@ -1,5 +1,22 @@
 // +build integration
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package tests
 
 import (
diff --git a/tests/src/integration/zipaction/actions/cat/index.js b/tests/src/integration/zipaction/actions/cat/index.js
index 9a2666e..89d0f48 100644
--- a/tests/src/integration/zipaction/actions/cat/index.js
+++ b/tests/src/integration/zipaction/actions/cat/index.js
@@ -1,5 +1,8 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 function myAction(args) {
     var cat = require('cat');
-    cat('https://baidu.com', console.log); 
+    cat('https://baidu.com', console.log);
 }
 exports.main = myAction;
diff --git a/tests/src/integration/zipaction/actions/cat/node_modules/cat/README.md b/tests/src/integration/zipaction/actions/cat/node_modules/cat/README.md
index 46473e8..d844196 100644
--- a/tests/src/integration/zipaction/actions/cat/node_modules/cat/README.md
+++ b/tests/src/integration/zipaction/actions/cat/node_modules/cat/README.md
@@ -2,8 +2,8 @@
 
 cat will read the contents of an url. it's available through npm
 
-	npm install cat
-	
+    npm install cat
+
 it will read your files
 
 ```js
@@ -18,7 +18,7 @@ and your `http` / `https` urls
 ```js
 cat('http://google.com', console.log);      // cat also follows any redirects
 cat('https://github.com', console.log);     // and cat read https
-cat('http://fail.google.com', console.log); // if a status code != 2xx is received it will 
+cat('http://fail.google.com', console.log); // if a status code != 2xx is received it will
                                             // call the callback with an error.
 
-```
\ No newline at end of file
+```
diff --git a/tests/src/integration/zipaction/actions/cat/node_modules/cat/bin.js b/tests/src/integration/zipaction/actions/cat/node_modules/cat/bin.js
index 5b61203..29c5c0a 100755
--- a/tests/src/integration/zipaction/actions/cat/node_modules/cat/bin.js
+++ b/tests/src/integration/zipaction/actions/cat/node_modules/cat/bin.js
@@ -1,5 +1,8 @@
 #!/usr/bin/env node
 
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 var fs = require('fs')
 
 var input = process.argv.slice(2)
@@ -11,4 +14,4 @@ var loop = function() {
   s.on('end', loop).pipe(process.stdout)
 }
 
-loop()
\ No newline at end of file
+loop()
diff --git a/tests/src/integration/zipaction/actions/cat/node_modules/cat/example.js b/tests/src/integration/zipaction/actions/cat/node_modules/cat/example.js
index 96b6d24..4a6e857 100644
--- a/tests/src/integration/zipaction/actions/cat/node_modules/cat/example.js
+++ b/tests/src/integration/zipaction/actions/cat/node_modules/cat/example.js
@@ -1,5 +1,8 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 var cat = require('./index');
 
 cat(__filename, console.log);
 
-cat('https://raw.github.com/mafintosh/cat/master/example.js', console.log);
\ No newline at end of file
+cat('https://raw.github.com/mafintosh/cat/master/example.js', console.log);
diff --git a/tests/src/integration/zipaction/actions/cat/node_modules/cat/index.js b/tests/src/integration/zipaction/actions/cat/node_modules/cat/index.js
index 7ba8889..49f2e48 100644
--- a/tests/src/integration/zipaction/actions/cat/node_modules/cat/index.js
+++ b/tests/src/integration/zipaction/actions/cat/node_modules/cat/index.js
@@ -1,54 +1,57 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 var fs = require('fs');
 var parse = require('url').parse;
 
 var catter = function(lib) {
-	var cat = function(url, callback) {	
-		if (typeof url === 'string') {
-			url = parse(url);
-		}
-		lib.get({host:url.hostname, port:url.port, path:url.pathname}, function(response) {
-			if (/3\d\d/.test(response.statusCode) && response.headers.location) {
-				cat(parse(response.headers.location), callback);
-				return;
-			}
-			if (!(/2\d\d/).test(response.statusCode)) {
-				callback(new Error('non 2xx status code: ' + response.statusCode));
-				return;
-			}
-			var buffer = '';
-		
-			response.setEncoding('utf-8');
-			response.on('data', function(data) {
-				buffer += data;
-			});
-			response.on('close', function() {
-				callback(new Error('unexpected close of response'));
-			});
-			response.on('end', function() {
-				callback(null, buffer);
-			});
-		}).on('error', callback);
-	};
-	return cat;
+    var cat = function(url, callback) {
+        if (typeof url === 'string') {
+            url = parse(url);
+        }
+        lib.get({host:url.hostname, port:url.port, path:url.pathname}, function(response) {
+            if (/3\d\d/.test(response.statusCode) && response.headers.location) {
+                cat(parse(response.headers.location), callback);
+                return;
+            }
+            if (!(/2\d\d/).test(response.statusCode)) {
+                callback(new Error('non 2xx status code: ' + response.statusCode));
+                return;
+            }
+            var buffer = '';
+
+            response.setEncoding('utf-8');
+            response.on('data', function(data) {
+                buffer += data;
+            });
+            response.on('close', function() {
+                callback(new Error('unexpected close of response'));
+            });
+            response.on('end', function() {
+                callback(null, buffer);
+            });
+        }).on('error', callback);
+    };
+    return cat;
 };
 
 var http = catter(require('http'));
 var https = catter(require('https'));
 
 module.exports = function(location, callback) {
-	var protocol = (location.match(/^(\w+):\/\//) || [])[1] || 'file';
+    var protocol = (location.match(/^(\w+):\/\//) || [])[1] || 'file';
 
-	if (protocol === 'file') {
-		fs.readFile(location.replace(/^(file:\/\/localhost|file:\/\/)/, ''), 'utf-8', callback);
-		return;
-	}
-	if (protocol === 'http') {
-		http(location, callback);
-		return;
-	}
-	if (protocol === 'https') {
-		https(location, callback);
-		return;
-	}
-	throw new Error('protocol '+protocol+' currently not supported :(');
-};
\ No newline at end of file
+    if (protocol === 'file') {
+        fs.readFile(location.replace(/^(file:\/\/localhost|file:\/\/)/, ''), 'utf-8', callback);
+        return;
+    }
+    if (protocol === 'http') {
+        http(location, callback);
+        return;
+    }
+    if (protocol === 'https') {
+        https(location, callback);
+        return;
+    }
+    throw new Error('protocol '+protocol+' currently not supported :(');
+};
diff --git a/tests/src/integration/zipaction/zipaction_test.go b/tests/src/integration/zipaction/zipaction_test.go
index d2b7463..56e3425 100644
--- a/tests/src/integration/zipaction/zipaction_test.go
+++ b/tests/src/integration/zipaction/zipaction_test.go
@@ -1,12 +1,29 @@
 // +build integration
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package tests
 
 import (
-	"github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
-	"github.com/stretchr/testify/assert"
-	"os"
-	"testing"
+    "github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
+    "github.com/stretchr/testify/assert"
+    "os"
+    "testing"
 )
 
 
@@ -14,15 +31,15 @@ var wskprops = common.GetWskprops()
 
 
 func TestZipAction(t *testing.T) {
-	os.Setenv("__OW_API_HOST", wskprops.APIHost)
-	wskdeploy := common.NewWskdeploy()
-	_, err := wskdeploy.Deploy(manifestPath, deploymentPath)
-	assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
-	_, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
-	assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+    os.Setenv("__OW_API_HOST", wskprops.APIHost)
+    wskdeploy := common.NewWskdeploy()
+    _, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+    assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+    _, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+    assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
 }
 
 var (
-	manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/zipaction/manifest.yml"
-	deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/zipaction/deployment.yml"
+    manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/zipaction/manifest.yml"
+    deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/zipaction/deployment.yml"
 )
diff --git a/tests/usecases/data-processing-app/actions/mhget/mhget.js b/tests/usecases/data-processing-app/actions/mhget/mhget.js
index edf6cd2..2d26852 100644
--- a/tests/usecases/data-processing-app/actions/mhget/mhget.js
+++ b/tests/usecases/data-processing-app/actions/mhget/mhget.js
@@ -1,96 +1,83 @@
-/*
- * Copyright 2017 IBM Corporation
- *
- * 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.
- */
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
 
 /*
  This function is bound to a trigger and is initiated when the message arrives
  via OpenWhisk feed connected to Message Hub. Note that many messages can come in
  as a large batch. Example input:
 {
-	"messages": [{
-		"partition": 0,
-		"key": null,
-		"offset": 252,
-		"topic": "in-topic",
-		"value": {
-			"events": [{
-				"eventType": "update",
-				"timestamp": "2011-01-01T11:11:11.111+02",
-				"payload": {
-					"velocity": 11,
-					"type": "taxi",
-					"name": "taxi1",
-					"location": {
-						"latitude": 11.11,
-						"longitude": -1.11
-					}
-				},
-				"deviceType": "taxi",
-				"orgId": "Org1",
-				"deviceId": "taxi1"
-			},
-			{ ... }
-			]
-		}
-	},
-	{ ... }
-	]
+    "messages": [{
+        "partition": 0,
+        "key": null,
+        "offset": 252,
+        "topic": "in-topic",
+        "value": {
+            "events": [{
+                "eventType": "update",
+                "timestamp": "2011-01-01T11:11:11.111+02",
+                "payload": {
+                    "velocity": 11,
+                    "type": "taxi",
+                    "name": "taxi1",
+                    "location": {
+                        "latitude": 11.11,
+                        "longitude": -1.11
+                    }
+                },
+                "deviceType": "taxi",
+                "orgId": "Org1",
+                "deviceId": "taxi1"
+            },
+            { ... }
+            ]
+        }
+    },
+    { ... }
+    ]
 }
 
 Expected output (merge all events from multiple 'messages' into one big 'events'):
 {
-	"events": [{
-		"eventType": "update",
-		"timestamp": "2011-01-01T11:11:11.111+02",
-		"payload": {
-			"velocity": 11,
-			"type": "taxi",
-			"name": "taxi1",
-			"location": {
-				"latitude": 11.11,
-				"longitude": -1.11
-			}
-		},
-		"deviceType": "taxi",
-		"orgId": "Org1",
-		"deviceId": "taxi1"
-	},
-	{ ... }
-	]
+    "events": [{
+        "eventType": "update",
+        "timestamp": "2011-01-01T11:11:11.111+02",
+        "payload": {
+            "velocity": 11,
+            "type": "taxi",
+            "name": "taxi1",
+            "location": {
+                "latitude": 11.11,
+                "longitude": -1.11
+            }
+        },
+        "deviceType": "taxi",
+        "orgId": "Org1",
+        "deviceId": "taxi1"
+    },
+    { ... }
+    ]
 
 }
 **/
 
 function main(params) {
-	console.log("DEBUG: received the following message as input: " + JSON.stringify(params));
+    console.log("DEBUG: received the following message as input: " + JSON.stringify(params));
 
-	return new Promise(function(resolve, reject) {
-		if (!params.messages || !params.messages[0] ||
-			!params.messages[0].value || !params.messages[0].value.events) {
-			reject("Invalid arguments. Must include 'messages' JSON array with 'value' field");
-		}
-		var msgs = params.messages;
-		var out = [];
-		for (var i = 0; i < msgs.length; i++) {
-			var msg = msgs[i];
-			for (var j = 0; j < msg.value.events.length; j++) {
-				out.push(msg.value.events[j]);
-			}
-		}
-		resolve({
-			"events": out
-		});
-	});
-}
\ No newline at end of file
+    return new Promise(function(resolve, reject) {
+        if (!params.messages || !params.messages[0] ||
+            !params.messages[0].value || !params.messages[0].value.events) {
+            reject("Invalid arguments. Must include 'messages' JSON array with 'value' field");
+        }
+        var msgs = params.messages;
+        var out = [];
+        for (var i = 0; i < msgs.length; i++) {
+            var msg = msgs[i];
+            for (var j = 0; j < msg.value.events.length; j++) {
+                out.push(msg.value.events[j]);
+            }
+        }
+        resolve({
+            "events": out
+        });
+    });
+}
diff --git a/tests/usecases/data-processing-app/actions/mhpost/index.js b/tests/usecases/data-processing-app/actions/mhpost/index.js
index b5315b9..520c82d 100644
--- a/tests/usecases/data-processing-app/actions/mhpost/index.js
+++ b/tests/usecases/data-processing-app/actions/mhpost/index.js
@@ -1,18 +1,5 @@
-/*
- * Copyright 2017 IBM Corporation
- *
- * 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.
- */
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
 
 /**
  * Analyze incoming message and generate a summary as a response
@@ -69,4 +56,4 @@ function mhpost(args) {
   });
 }
 
-exports.main = mhpost;
\ No newline at end of file
+exports.main = mhpost;
diff --git a/tests/usecases/openstack/actions/callSlack.js b/tests/usecases/openstack/actions/callSlack.js
index 3cb3370..e6c7916 100644
--- a/tests/usecases/openstack/actions/callSlack.js
+++ b/tests/usecases/openstack/actions/callSlack.js
@@ -1,3 +1,6 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //
@@ -68,4 +71,4 @@ function post(url, channel, msg) {
           }
       });
     });
-}
\ No newline at end of file
+}
diff --git a/tests/usecases/openstack/actions/createBackup.js b/tests/usecases/openstack/actions/createBackup.js
index 12fba7a..730cbed 100644
--- a/tests/usecases/openstack/actions/createBackup.js
+++ b/tests/usecases/openstack/actions/createBackup.js
@@ -1,3 +1,6 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //
@@ -80,7 +83,7 @@ function main(params) {
             backup_type: backupType,
             rotation: rotation
         }
-    };  
+    };
 
     var url = apiEndpoint+'/servers/'+serverId+'/action'
 
@@ -91,7 +94,7 @@ function main(params) {
         headers: headers
     };
 
-   
+
     var headers = {
         'X-Auth-Token':apiToken
     };
@@ -126,5 +129,5 @@ function main(params) {
         });
 
     });
-    
+
 }
diff --git a/tests/usecases/openstack/actions/getApiToken.js b/tests/usecases/openstack/actions/getApiToken.js
index d6ac4b3..735115e 100644
--- a/tests/usecases/openstack/actions/getApiToken.js
+++ b/tests/usecases/openstack/actions/getApiToken.js
@@ -1,3 +1,6 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //
@@ -6,7 +9,7 @@
 //  Will retrieve the auth token and storage URL for the object store service.  Uses V3 of the auth calls
 //
 //  The params object should look like:
-// 
+//
 //  "userId":"f45adsa0d0478c", "password":"sd2rsS^kdfsd", "projectId":"11fdseerff"}
 //
 //  @param userId: user id (not user name)
@@ -15,7 +18,7 @@
 //  @param host: hostname of keystone endpoint (don't include 'https://')
 //  @param port: port of keystone endpoint
 //  @param endpointName: the name of the public endpoint service you want (nova, swift, etc)
-//  
+//
 //
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -52,7 +55,7 @@ function main(params) {
         context = params.context
     }
 
-   
+
     var body = {
     "auth": {
         "identity": {
@@ -96,7 +99,7 @@ function main(params) {
 
                 var j = body
                 var entries = j.token.catalog
-            
+
                 for (var i = 0; i < entries.length; i++) {
                     var entry = entries[i]
                     console.log('Comparing '+ entry.name + " with "+endpointName)
@@ -112,11 +115,11 @@ function main(params) {
 
                                 var urlParts = url.parse(endpoint.url,true)
 
-                                var jsonResponse = {apiToken: authToken, 
-                                    endpointUrl: endpoint.url, 
-                                    host: urlParts.hostname, 
-                                    port: urlParts.port, 
-                                    path: urlParts.path, 
+                                var jsonResponse = {apiToken: authToken,
+                                    endpointUrl: endpoint.url,
+                                    host: urlParts.hostname,
+                                    port: urlParts.port,
+                                    path: urlParts.path,
                                     protocol: urlParts.protocol}
 
                                 if (context) {
@@ -127,8 +130,8 @@ function main(params) {
                             }
                         }
                     }
-            } 
-            
+            }
+
             reject({'msg': 'Cannot find public endpoint in response from keystone'})
 
             } else {
@@ -136,5 +139,5 @@ function main(params) {
             }
         });
 
-    });    
+    });
 }
diff --git a/tests/usecases/openstack/actions/getServers.js b/tests/usecases/openstack/actions/getServers.js
index 4e40035..3b34951 100644
--- a/tests/usecases/openstack/actions/getServers.js
+++ b/tests/usecases/openstack/actions/getServers.js
@@ -1,9 +1,13 @@
+
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor
+// license agreements; and to You under the Apache License, Version 2.0.
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //
 //  Get Servers from Nova
 //
-//  Will retrieve a list of filtered servers from Nova.  
+//  Will retrieve a list of filtered servers from Nova.
 //
 //  @param apiToken apiToken retrieved from Keystone
 //
@@ -32,13 +36,13 @@ function main(params) {
     if (params.context) {
         context = params.context
     }
-   
+
     var headers = {
         'X-Auth-Token':apiToken
     };
- 
+
     var apiEndpoint = protocol+'//'+host+':'+port+path
-   
+
    var url = apiEndpoint+'/servers'
 
     // hardcode for now
@@ -47,7 +51,7 @@ function main(params) {
         headers: headers
     };
 
-    
+
     if (context && context.queryString) {
         options.qs = context.queryString
     }
@@ -56,7 +60,7 @@ function main(params) {
 
     return new Promise(function(resolve, reject) {
         request(url, options, function(error, res, body) {
-            
+
             if (error) {
                 reject(error)
             }
@@ -73,11 +77,11 @@ function main(params) {
 
             if (j.servers.length > 0) {
                 j.serverId = j.servers[0].id
-            } 
+            }
 
             console.log(j)
             resolve(j)
         });
     });
-    
+
 }
diff --git a/tools/travis/cloneutils.sh b/tools/travis/cloneutils.sh
new file mode 100755
index 0000000..5a38d3f
--- /dev/null
+++ b/tools/travis/cloneutils.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -o xtrace
+
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+HOMEDIR="$SCRIPTDIR/../../../"
+
+# clone OpenWhisk repo. in order to run scanCode.py
+cd $HOMEDIR
+git clone https://github.com/apache/incubator-openwhisk-utilities.git
diff --git a/tools/travis/scancode.sh b/tools/travis/scancode.sh
new file mode 100755
index 0000000..2202c45
--- /dev/null
+++ b/tools/travis/scancode.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -e
+
+# Build script for Travis-CI.
+SCRIPTDIR=$(cd $(dirname "$0") && pwd)
+ROOTDIR="$SCRIPTDIR/../.."
+UTIL_DIR="$ROOTDIR/../incubator-openwhisk-utilities"
+
+# run scancode
+cd $UTIL_DIR
+scancode/scanCode.py $ROOTDIR
\ No newline at end of file
diff --git a/utils/dependencies.go b/utils/dependencies.go
index b3d67b0..524a705 100644
--- a/utils/dependencies.go
+++ b/utils/dependencies.go
@@ -1,4 +1,20 @@
-// dependencies.go
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package utils
 
 import (
diff --git a/utils/flags.go b/utils/flags.go
index c275e20..6102645 100644
--- a/utils/flags.go
+++ b/utils/flags.go
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package utils
 
 var Flags struct {
diff --git a/utils/gitreader.go b/utils/gitreader.go
index 095c1da..471a3dd 100644
--- a/utils/gitreader.go
+++ b/utils/gitreader.go
@@ -1,4 +1,20 @@
-// gitreader.go
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package utils
 
 import (
diff --git a/utils/util_test.go b/utils/util_test.go
index 709a368..1a1b871 100644
--- a/utils/util_test.go
+++ b/utils/util_test.go
@@ -1,5 +1,22 @@
 // +build unit
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
 package utils
 
 import (

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].