Add github action to check license header (#2)

diff --git a/.ci/release.sh b/.ci/release.sh
index 2651787..b2fc125 100755
--- a/.ci/release.sh
+++ b/.ci/release.sh
@@ -75,7 +75,7 @@
     git add index.yaml
     git commit --message="Publish new charts to ${CHARTS_REPO}" --signoff
     git remote -v
-    git remote add sn https://${SNBOT_USER}:${GITHUB_TOKEN}@github.com/${OWNER}/${REPO} 
+    git remote add sn https://${PULSARBOT_USER}:${GITHUB_TOKEN}@github.com/${OWNER}/${REPO} 
     git push sn gh-pages 
 }
 
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..b8a9169
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,41 @@
+#
+# 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.
+#
+
+name: Post commit - Publish Pulsar Helm Chart
+on:
+  push:
+    branches:
+      - master 
+jobs:
+  lint-test:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: Install chart
+        env:
+          GITHUB_TOKEN: ${{ secrets.PULSARBOT_TOKEN }}
+          PULSARBOT_USER: ${{ secrets.PULSARBOT_USER }}
+          CHARTS_REPO: ${{ secrets.CHARTS_REPO }}
+          PUBLISH_CHARTS: ${{ secrets.PUBLISH_CHARTS }}
+          GITUSER: ${{ secrets.GITUSER }}
+          GITEMAIL: ${{ secrets.GITEMAIL }}
+        run: |
+          .ci/release.sh
diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml
new file mode 100644
index 0000000..a78e6c3
--- /dev/null
+++ b/.github/workflows/style.yml
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+
+name: Precommit Style Check
+on:
+  pull_request:
+    branches:
+      - '*'
+jobs:
+
+  build:
+    name: Build
+    runs-on: ubuntu-latest
+    steps:
+
+    - name: Set up Go 1.12
+      uses: actions/setup-go@v1
+      with:
+        go-version: 1.12
+      id: go
+
+    - name: Check out code into the Go module directory
+      uses: actions/checkout@v2
+
+    - name: Check license
+      run: |
+        go test license_test.go
diff --git a/license_test.go b/license_test.go
new file mode 100644
index 0000000..54ae128
--- /dev/null
+++ b/license_test.go
@@ -0,0 +1,114 @@
+// 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 main
+
+import (
+	"io/ioutil"
+	"os"
+	"path/filepath"
+	"regexp"
+	"testing"
+)
+
+var goFileCheck = regexp.MustCompile(`// 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\.
+
+`)
+
+var otherCheck = regexp.MustCompile(`#
+# 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\.
+#
+`)
+
+var skip = map[string]bool{}
+
+func TestLicense(t *testing.T) {
+	err := filepath.Walk(".", func(path string, fi os.FileInfo, err error) error {
+		if skip[path] {
+			return nil
+		}
+
+		if err != nil {
+			return err
+		}
+
+		switch filepath.Ext(path) {
+		case ".go":
+			src, err := ioutil.ReadFile(path)
+			if err != nil {
+				return nil
+			}
+
+			// Find license
+			if !goFileCheck.Match(src) {
+				t.Errorf("%v: license header not present", path)
+				return nil
+			}
+		case ".yaml":
+			fallthrough
+		case ".conf":
+			src, err := ioutil.ReadFile(path)
+			if err != nil {
+				return nil
+			}
+
+			// Find license
+			if !otherCheck.Match(src) {
+				t.Errorf("%v: license header not present", path)
+				return nil
+			}
+
+		default:
+			return nil
+		}
+
+		return nil
+	})
+	if err != nil {
+		t.Fatal(err)
+	}
+}