/
krepost
/
addon-operator
Обзор
Документация
Войти
/
krepost
/
addon-operator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Makefile
111 строк
4 KB
Pavel Okhlopkov
[addon-operator] publish flow fix (#721)
15 янв 2026, 19:57
Не верифицирован
15 янв 2026, 19:57
693b8b3
Код
Авторство
О чём код?
.PHONY: go-module-version go-module-version: go-check git-check @echo "go get $(shell $(GO) list ./cmd/addon-operator)@$(shell $(GIT) rev-parse HEAD)" .PHONY: lint lint: golangci-lint ## Run linter. @$(GOLANGCI_LINT) run --fix .PHONY: test test: go-check @$(GO) test --race --cover ./... ## Run all generate-* jobs in bulk. .PHONY: generate generate: update-k8s-version update-workflows-go-version update-workflows-golangci-lint-version update-workflows-ginkgo-version ##@ Dependencies WHOAMI ?= $(shell whoami) ## Location to install dependencies to LOCALBIN ?= $(shell pwd)/bin $(LOCALBIN): mkdir -p $(LOCALBIN) ## Tool Binaries GO=$(shell which go) GIT=$(shell which git) GOLANGCI_LINT = $(LOCALBIN)/golangci-lint YQ = $(LOCALBIN)/yq ## TODO: remap in yaml file (version.yaml or smthng) ## Tool Versions # GO_BUILDER_VERSION must be without 'v' prefix GO_BUILDER_VERSION = 1.25.5 GOLANGCI_LINT_VERSION = v2.8.0 YQ_VERSION ?= v4.50.1 .PHONY: update-k8s-version update-k8s-version: go-check @kubernetesVer=$(shell $(GO) list -m k8s.io/api | cut -d' ' -f 2); \ kubectlVer=$$(echo $$kubernetesVer | sed 's/v0/v1/'); \ echo "Updating kubectl version in Dockerfile to match k8s.io/api version: $$kubectlVer"; \ sed -i "s/ARG kubectlVersion=.*/ARG kubectlVersion=$$kubectlVer/" Dockerfile; \ echo "kubectl version in Dockerfile updated to: $$kubectlVer" .PHONY: update-workflows-go-version update-workflows-go-version: yq for file in $$(find .github/workflows -name "*.yaml"); do \ if grep -q "actions/setup-go" $$file; then \ $(YQ) -i '(.jobs[]?.steps[]? | select(.uses | test("actions/setup-go")) | .with."go-version") = "$(GO_BUILDER_VERSION)"' $$file; \ fi; \ done echo "Updated go-version in workflow files to $(GO_BUILDER_VERSION)" .PHONY: update-workflows-golangci-lint-version update-workflows-golangci-lint-version: yq $(YQ) -i '(.jobs.run_linter.steps[] | select(.name == "Run golangci-lint") | .run) |= sub("v\\d+\\.\\d+\\.\\d+", "$(GOLANGCI_LINT_VERSION)")' .github/workflows/lint.yaml echo "Updated golangci-lint version in lint.yaml to $(GOLANGCI_LINT_VERSION)" .PHONY: update-workflows-ginkgo-version update-workflows-ginkgo-version: yq @ginkgoVer=$(shell $(GO) list -m github.com/onsi/ginkgo/v2 | cut -d' ' -f 2); \ $(YQ) -i '(.jobs.integration_tests.steps[] | select(.name == "Install ginkgo") | .run) |= sub("@latest", "@$$ginkgoVer")' .github/workflows/tests-labeled.yaml; \ echo "Updated ginkgo version in tests-labeled.yaml to $$ginkgoVer" ## Installed tools check .PHONY: go-check go-check: $(call error-if-empty,$(GO),go) .PHONY: git-check git-check: $(call error-if-empty,$(GIT),git) ## Tool installations .PHONY: golangci-lint golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary. $(GOLANGCI_LINT): $(LOCALBIN) $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/v2/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION)) .PHONY: yq yq: $(YQ) ## Download yq locally if necessary. $(YQ): $(LOCALBIN) $(call go-install-tool,$(YQ),github.com/mikefarah/yq/v4,$(YQ_VERSION)) # go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist # $1 - target path with name of binary # $2 - package url which can be installed # $3 - specific version of package define go-install-tool @[ -f "$(1)-$(3)" ] || { \ set -e; \ package=$(2)@$(3) ;\ echo "Downloading $${package}" ;\ rm -f $(1) || true ;\ GOBIN=$(LOCALBIN) GOTOOLCHAIN=$(GO_TOOLCHAIN_AUTOINSTALL_VERSION) go install $${package} ;\ mv $(1) $(1)-$(3) ;\ } ;\ ln -sf $(1)-$(3) $(1) endef define error-if-empty @if [[ -z $(1) ]]; then echo "$(2) not installed"; false; fi endef