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 @@ function release::publish_charts() { 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) + } +}