mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-04-18 14:31:18 +02:00
The pre-commit/action@v3 used actions/cache@v4 internally, which the repository's security policy forbids because it is not SHA-pinned. Remove the pre-commit dependency entirely by: * deleting .pre-commit-config.yaml * replacing the pre-commit CI step with a new scripts/file-hygiene.sh that implements the equivalent checks (trailing whitespace, EOF newline, BOM, CR, merge markers, large files, case collisions, broken symlinks, shebang/executable consistency, submodule ban) * removing the pre-commit Makefile targets and adding a file-hygiene target * removing pre-commit from the renovate configuration Markdown linting is already handled by the dedicated markdownlint step in the lint workflow, so no replacement is needed for that hook.
215 lines
6.4 KiB
Makefile
215 lines
6.4 KiB
Makefile
# Copyright 2017 The Kubernetes 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.
|
|
|
|
#? cover: Creates coverage report for whole project excluding vendor and opens result in the default browser
|
|
.PHONY: cover cover-html
|
|
.DEFAULT_GOAL := build
|
|
|
|
cover:
|
|
@go test -cover -coverprofile=cover.out -v ./...
|
|
|
|
#? cover-html: Run tests with coverage and open coverage report in the browser
|
|
cover-html: cover
|
|
@go tool cover -html=cover.out
|
|
|
|
#? go-tools: list installed go tools
|
|
go-tools:
|
|
@echo ">> go tools installed in go.mod"
|
|
@go tool -n
|
|
@echo ">> go tools installed in go.tool.mod"
|
|
@go tool -modfile=go.tool.mod
|
|
|
|
#? golangci-lint-install: Install golangci-lint tool
|
|
golangci-lint-install:
|
|
@scripts/install-tools.sh --golangci
|
|
|
|
#? go-lint: Run the golangci-lint tool
|
|
.PHONY: go-lint
|
|
go-lint: golangci-lint-install
|
|
golangci-lint config verify
|
|
gofmt -l -s -w .
|
|
golangci-lint run --timeout=30m --fix ./...
|
|
|
|
#? licensecheck: Run the to check for license headers
|
|
.PHONY: licensecheck
|
|
licensecheck:
|
|
@echo ">> checking license header"
|
|
@licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \
|
|
awk 'NR<=5' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \
|
|
done); \
|
|
if [ -n "$${licRes}" ]; then \
|
|
echo "license header checking failed:"; echo "$${licRes}"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
#? lint: Run all the linters
|
|
.PHONY: lint
|
|
lint: licensecheck go-lint
|
|
|
|
#? crd: Generates CRD using controller-gen and copy it into chart
|
|
.PHONY: crd
|
|
crd:
|
|
@./scripts/generate-crd.sh
|
|
|
|
# Required as long as dependabot does not support go.tool.mod https://github.com/dependabot/dependabot-core/issues/12050
|
|
#? update-tools-deps: Update go tools defined in go.tool.mod to latest versions
|
|
update-tools-deps:
|
|
@go get -modfile=go.tool.mod tool
|
|
|
|
#? test: The verify target runs tasks similar to the CI tasks, but without code coverage
|
|
.PHONY: test
|
|
test:
|
|
go test -race ./...
|
|
|
|
|
|
.PHONY: test
|
|
go-test:
|
|
go test -race -coverprofile=profile.cov ./...
|
|
go tool cover -func=profile.cov > coverage.summary
|
|
@tail -n 1 coverage.summary
|
|
|
|
#? build: The build targets allow to build the binary and container image
|
|
.PHONY: build
|
|
|
|
BINARY ?= external-dns
|
|
SOURCES = $(shell find . -name '*.go')
|
|
IMAGE_STAGING = gcr.io/k8s-staging-external-dns/$(BINARY)
|
|
REGISTRY ?= us.gcr.io/k8s-artifacts-prod/external-dns
|
|
IMAGE ?= $(REGISTRY)/$(BINARY)
|
|
VERSION ?= $(shell git describe --tags --always --dirty --match "v*")
|
|
GIT_REVISION ?= $(shell git rev-parse HEAD)
|
|
GIT_COMMIT ?= $(shell git rev-parse --short HEAD)
|
|
GIT_COMMIT := $(or $(GIT_COMMIT),$(shell echo "$(GIT_REVISION)" | cut -c1-7))
|
|
BUILD_FLAGS ?= -v
|
|
LDFLAGS ?= -X sigs.k8s.io/external-dns/pkg/apis/externaldns.Version=$(VERSION) -w -s
|
|
LDFLAGS += -X sigs.k8s.io/external-dns/pkg/apis/externaldns.GitCommit=$(GIT_COMMIT)
|
|
ARCH ?= amd64
|
|
SHELL = /bin/bash
|
|
IMG_PLATFORM ?= linux/amd64,linux/arm64,linux/arm/v7
|
|
IMG_PUSH ?= true
|
|
IMG_SBOM ?= none
|
|
|
|
build: build/$(BINARY)
|
|
|
|
build/$(BINARY): $(SOURCES)
|
|
CGO_ENABLED=0 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
|
|
|
build.push/multiarch: ko
|
|
KO_DOCKER_REPO=${IMAGE} \
|
|
VERSION=${VERSION} \
|
|
ko build --tags ${VERSION} --bare --sbom ${IMG_SBOM} \
|
|
--image-label org.opencontainers.image.source="https://github.com/kubernetes-sigs/external-dns" \
|
|
--image-label org.opencontainers.image.revision=$(GIT_REVISION) \
|
|
--platform=${IMG_PLATFORM} --push=${IMG_PUSH} .
|
|
|
|
build.image/multiarch:
|
|
$(MAKE) IMG_PUSH=false build.push/multiarch
|
|
|
|
build.image:
|
|
$(MAKE) IMG_PLATFORM=linux/$(ARCH) build.image/multiarch
|
|
|
|
build.image-amd64:
|
|
$(MAKE) ARCH=amd64 build.image
|
|
|
|
build.image-arm64:
|
|
$(MAKE) ARCH=arm64 build.image
|
|
|
|
build.image-arm/v7:
|
|
$(MAKE) ARCH=arm/v7 build.image
|
|
|
|
build.push:
|
|
$(MAKE) IMG_PLATFORM=linux/$(ARCH) build.push/multiarch
|
|
|
|
build.push-amd64:
|
|
$(MAKE) ARCH=amd64 build.push
|
|
|
|
build.push-arm64:
|
|
$(MAKE) ARCH=arm64 build.push
|
|
|
|
build.push-arm/v7:
|
|
$(MAKE) ARCH=arm/v7 build.push
|
|
|
|
build.arm64:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
|
|
|
build.amd64:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
|
|
|
build.arm/v7:
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" .
|
|
|
|
clean:
|
|
@rm -rf build
|
|
@go clean -cache
|
|
|
|
.PHONY: release.staging
|
|
#? release.staging: Builds and push container images to the staging bucket.
|
|
release.staging: test
|
|
IMAGE=$(IMAGE_STAGING) $(MAKE) build.push/multiarch
|
|
|
|
release.prod: test
|
|
$(MAKE) build.push/multiarch
|
|
|
|
.PHONY: ko
|
|
ko:
|
|
scripts/install-ko.sh
|
|
|
|
.PHONY: generate-flags-documentation
|
|
#? generate-flags-documentation: Generate documentation (docs/flags.md)
|
|
generate-flags-documentation:
|
|
go run internal/gen/docs/flags/main.go
|
|
|
|
.PHONY: generate-metrics-documentation
|
|
#? generate-metrics-documentation: Generate documentation (docs/monitoring/metrics.md)
|
|
generate-metrics-documentation:
|
|
go run internal/gen/docs/metrics/main.go
|
|
|
|
.PHONY: generate-sources-documentation
|
|
#? generate-sources-documentation: Generate documentation (docs/sources/index.md)
|
|
generate-sources-documentation:
|
|
go run internal/gen/docs/sources/main.go
|
|
|
|
#? file-hygiene: Run repository file hygiene checks (replaces pre-commit)
|
|
file-hygiene:
|
|
@./scripts/file-hygiene.sh
|
|
|
|
.PHONY: help
|
|
#? help: Get more info on available commands
|
|
help: Makefile
|
|
@sed -n 's/^#?//p' $< | column -t -s ':' | sort | sed -e 's/^/ /'
|
|
|
|
#? helm-test: Run unit tests
|
|
helm-test:
|
|
scripts/helm-tools.sh --helm-unittest
|
|
|
|
#? helm-template: Run helm template
|
|
helm-template:
|
|
scripts/helm-tools.sh --helm-template
|
|
|
|
#? helm-lint: Run helm linting (schema,docs)
|
|
helm-lint:
|
|
scripts/helm-tools.sh --schema
|
|
scripts/helm-tools.sh --docs
|
|
|
|
.PHONY: go-dependency
|
|
#? go-dependency: Dependency maintanance
|
|
go-dependency:
|
|
go mod tidy
|
|
|
|
.PHONY: mkdocs-serve
|
|
#? mkdocs-serve: Run the builtin development server for mkdocs
|
|
mkdocs-serve:
|
|
@$(info "contribute to documentation docs/contributing/dev-guide.md")
|
|
@mkdocs serve
|