From 97a50f8d512c7f14f6cc774c8d4ff1ae557d442f Mon Sep 17 00:00:00 2001 From: Guillaume Lours Date: Mon, 17 Aug 2020 15:18:47 +0200 Subject: [PATCH] Add CI step to check license headers Signed-off-by: Guillaume Lours --- .github/workflows/ci.yml | 3 +++ Dockerfile | 6 +++++ Makefile | 3 +++ builder.Makefile | 3 +++ scripts/validate/fileheader | 28 ++++++++++++++++++++++++ scripts/validate/template/bash.txt | 13 +++++++++++ scripts/validate/template/dockerfile.txt | 13 +++++++++++ scripts/validate/template/go.txt | 16 ++++++++++++++ scripts/validate/template/makefile.txt | 13 +++++++++++ 9 files changed, 98 insertions(+) create mode 100755 scripts/validate/fileheader create mode 100644 scripts/validate/template/bash.txt create mode 100644 scripts/validate/template/dockerfile.txt create mode 100644 scripts/validate/template/go.txt create mode 100644 scripts/validate/template/makefile.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5ded3ed28..ebc9305ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,9 @@ jobs: - name: Checkout code into the Go module directory uses: actions/checkout@v2 + - name: Validate license headers + run: make validate + - name: Run golangci-lint run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b . v1.30.0 diff --git a/Dockerfile b/Dockerfile index 4c8d90a39..bf015a783 100644 --- a/Dockerfile +++ b/Dockerfile @@ -84,3 +84,9 @@ RUN --mount=target=. \ BUILD_TAGS=${BUILD_TAGS} \ GIT_TAG=${GIT_TAG} \ make -f builder.Makefile test + +FROM base as check-license-headers +RUN go get -u github.com/kunalkushwaha/ltag +RUN --mount=target=. \ + --mount=type=cache,target=/root/.cache/go-build \ + make -f builder.Makefile check-license-headers \ No newline at end of file diff --git a/Makefile b/Makefile index 720c38a84..5976b81f4 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,9 @@ serve: cli ## start server moby-cli-link: ## create com.docker.cli symlink if does not already exist ln -s $(MOBY_DOCKER) /usr/local/bin/com.docker.cli +validate: ## check license header for all files + @docker build . --target check-license-headers + help: ## Show help @echo Please specify a build target. The choices are: @grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/builder.Makefile b/builder.Makefile index b5e131484..7b5069114 100644 --- a/builder.Makefile +++ b/builder.Makefile @@ -56,6 +56,9 @@ test: lint: golangci-lint run --timeout 10m0s ./... +check-license-headers: + ./scripts/validate/fileheader + FORCE: .PHONY: all protos cli cross test lint diff --git a/scripts/validate/fileheader b/scripts/validate/fileheader new file mode 100755 index 000000000..5f07a6cd2 --- /dev/null +++ b/scripts/validate/fileheader @@ -0,0 +1,28 @@ +#!/usr/bin/env sh + +# Copyright The Compose Specification Authors. + +# 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. + + +set -eu -o pipefail + +if ! command -v ltag; then + >&2 echo "ERROR: ltag not found. Install with:" + >&2 echo " go get -u github.com/kunalkushwaha/ltag" + exit 1 +fi + +BASEPATH="${1-}" + +ltag -t "${BASEPATH}scripts/validate/template" -excludes "validate testdata" --check -v \ No newline at end of file diff --git a/scripts/validate/template/bash.txt b/scripts/validate/template/bash.txt new file mode 100644 index 000000000..6d89e6173 --- /dev/null +++ b/scripts/validate/template/bash.txt @@ -0,0 +1,13 @@ +# Copyright 2020 Docker, Inc. + +# 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. diff --git a/scripts/validate/template/dockerfile.txt b/scripts/validate/template/dockerfile.txt new file mode 100644 index 000000000..6d89e6173 --- /dev/null +++ b/scripts/validate/template/dockerfile.txt @@ -0,0 +1,13 @@ +# Copyright 2020 Docker, Inc. + +# 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. diff --git a/scripts/validate/template/go.txt b/scripts/validate/template/go.txt new file mode 100644 index 000000000..1cd855449 --- /dev/null +++ b/scripts/validate/template/go.txt @@ -0,0 +1,16 @@ +/* + Copyright 2020 Docker, Inc. + + 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. +*/ + diff --git a/scripts/validate/template/makefile.txt b/scripts/validate/template/makefile.txt new file mode 100644 index 000000000..6d89e6173 --- /dev/null +++ b/scripts/validate/template/makefile.txt @@ -0,0 +1,13 @@ +# Copyright 2020 Docker, Inc. + +# 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.