Skip to content

Commit d22f78a

Browse files
authored
Merge pull request #412 from rashedkvm/remove-hack-tools
Remove hack tools, use make tools instead.
2 parents 9751932 + c4396e4 commit d22f78a

12 files changed

Lines changed: 124 additions & 1427 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ jobs:
2424
set -o nounset
2525
set -o pipefail
2626
27-
make tidy
28-
make manifests generate
27+
make tidy tools dist
2928
git diff --exit-code
3029
- name: Test
3130
run: make test
@@ -34,12 +33,6 @@ jobs:
3433
# run: bash <(curl -s https://codecov.io/bash)
3534
# env:
3635
# CODECOV_TOKEN: ...
37-
- name: Scan Inclusive Terminology
38-
uses: get-woke/woke-action@v0
39-
with:
40-
fail-on-error: true
41-
woke-args: -c its-woke-rules.yaml
42-
4336
stage:
4437
runs-on: ubuntu-latest
4538
env:

.github/workflows/update.yaml

Lines changed: 0 additions & 39 deletions
This file was deleted.

.ko.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
defaultBaseImage: paketobuildpacks/run-jammy-tiny@sha256:0c5ac79d549c4b077a7d857631f817f8b573f5da2c109a51f320ee584d44d3f2
1+
defaultBaseImage: paketobuildpacks/run-jammy-tiny:latest

Makefile

Lines changed: 116 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
11

2-
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
3-
CRD_OPTIONS ?= "crd"
4-
52
# Suppress kapp prompts with KAPP_ARGS="--yes"
63
KAPP_ARGS ?= "--yes=false"
7-
8-
# Tools
9-
CONTROLLER_GEN ?= go run -modfile hack/go.mod sigs.k8s.io/controller-tools/cmd/controller-gen
10-
DIEGEN ?= go run -modfile hack/go.mod reconciler.io/dies/diegen
11-
GOIMPORTS ?= go run -modfile hack/go.mod golang.org/x/tools/cmd/goimports
12-
KAPP ?= go run -modfile hack/go.mod carvel.dev/kapp/cmd/kapp
13-
KO ?= go run -modfile hack/go.mod github.com/google/ko
14-
KUSTOMIZE ?= go run -modfile hack/go.mod sigs.k8s.io/kustomize/kustomize/v5
15-
YTT ?= go run -modfile hack/go.mod carvel.dev/ytt/cmd/ytt
16-
WOKE ?= go run -modfile hack/go.mod github.com/get-woke/woke
174
CA_DATA ?= dist/ca.pem
185

196
# Setting SHELL to bash allows bash commands to be executed by recipes.
@@ -36,73 +23,153 @@ all: test
3623
# More info on the awk command:
3724
# http://linuxcommand.org/lc3_adv_awk.php
3825

26+
.PHONY: help
3927
help: ## Display this help.
4028
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
4129

4230
##@ Development
31+
.PHONY: manifests
32+
manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
33+
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
4334

44-
manifests: ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
45-
@echo "controller-gen $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths=\"./...\" output:crd:artifacts:config=config/crd/bases"
46-
@$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
47-
48-
@echo "kustomize build config/default | ytt -f - -f dist/strip-status.yaml > dist/source-controller.yaml"
49-
@$(KUSTOMIZE) build config/default | $(YTT) -f - -f dist/strip-status.yaml > dist/source-controller.yaml
50-
51-
generate: ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
52-
@echo "controller-gen object:headerFile=\"hack/boilerplate.go.txt\" paths=\"./...\""
53-
@$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
54-
55-
@echo "diegen die:headerFile=\"hack/boilerplate.go.txt\" paths=\"./...\""
56-
@$(DIEGEN) die:headerFile="hack/boilerplate.go.txt" paths="./..."
57-
58-
@echo "find -L . -name 'zz_generated.*.go' -exec goimports --local github.com/vmware-tanzu/tanzu-source-controller -w {} \;"
59-
@find -L . -name 'zz_generated.*.go' -exec $(GOIMPORTS) --local github.com/vmware-tanzu/tanzu-source-controller -w {} \;
35+
.PHONY: generate
36+
generate: diegen controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
37+
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
38+
$(DIEGEN) die:headerFile=./hack/boilerplate.go.txt paths="./..."
6039

40+
.PHONY: fmt
6141
fmt: ## Run go fmt against code.
62-
@echo "goimports --local github.com/vmware-tanzu/tanzu-source-controller -w ."
63-
@$(GOIMPORTS) --local github.com/vmware-tanzu/tanzu-source-controller -w .
42+
go fmt ./...
6443

44+
.PHONY: vet
6545
vet: ## Run go vet against code.
6646
go vet ./...
6747

68-
.PHONY: get-woke
69-
get-woke: ## installs latest woke CLI
70-
go install github.com/get-woke/woke@latest
71-
72-
.PHONY: scan-terms
73-
scan-terms: get-woke ## Scan for inclusive terminology
74-
woke . -c its-woke-rules.yaml --exit-1-on-failure
75-
76-
.PHONY: woke-rules
77-
woke-rules: # Downloads woke rules from https://via.vmw.com/its-woke-rules
78-
curl -L https://via.vmw.com/its-woke-rules -o its-woke-rules.yaml
48+
.PHONY: test
49+
test: manifests generate fmt vet ## Run unit tests only.
50+
go test ./... -short -coverprofile cover.out
7951

80-
test: manifests generate fmt vet ## Run tests.
81-
go test ./... -coverprofile cover.out
52+
tidy: ## Run go mod tidy
53+
go mod tidy -v
8254

8355
##@ Build
8456

85-
run: test ## Run a controller from your host.
57+
run: tidy test ## Run a controller from your host.
8658
go run ./main.go
8759

88-
##@ Deployment
60+
.PHONY: dist
61+
dist: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment.
62+
mkdir -p dist
63+
$(KUSTOMIZE) build config/default | $(YTT) -f - -f dist/strip-status.yaml > dist/source-controller.yaml
8964

65+
##@ Deployment
66+
.PHONY: install
9067
install: manifests ## Install CRDs into the K8s cluster specified in ~/.kube/config.
9168
@echo "kapp deploy -a source-controller -n kube-system -f <(kustomize build config/crd)"
9269
@$(KAPP) deploy -a source-controller -n kube-system -f <($(KUSTOMIZE) build config/crd) $(KAPP_ARGS)
9370

71+
.PHONY: uninstall
9472
uninstall: ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config.
9573
@echo "kapp delete -a source-controller -n kube-system"
9674
@$(KAPP) delete -a source-controller -n kube-system $(KAPP_ARGS)
9775

76+
.PHONY: deploy
9877
deploy: test ## Deploy controller to the K8s cluster specified in ~/.kube/config. Optional CA_DATA=path/to/certfile # a PEM-encoded CA certificate
9978
@echo "kapp deploy -a source-controller -n kube-system -f <(ko resolve -f dist/source-controller.yaml)"
10079
@$(KAPP) deploy -a source-controller -n kube-system -f <($(KO) resolve -f <( $(YTT) -f dist/source-controller.yaml -f dist/package-overlay.yaml --data-value-file ca_cert_data=$(CA_DATA))) $(KAPP_ARGS)
10180

81+
.PHONY: undeploy
10282
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
10383
@echo "kapp delete -a source-controller -n kube-system"
10484
@$(KAPP) delete -a source-controller -n kube-system $(KAPP_ARGS)
10585

106-
tidy: ## Run go mod tidy
107-
go mod tidy -v
108-
cd hack; go mod tidy -v
86+
87+
88+
##@ Dev Tools
89+
90+
## Location to install dependencies to
91+
LOCALBIN ?= $(shell pwd)/bin
92+
$(LOCALBIN):
93+
mkdir -p $(LOCALBIN)
94+
95+
##@ Tool Binaries
96+
KUBECTL ?= kubectl
97+
YTT ?= $(LOCALBIN)/ytt
98+
KCTRL ?= $(LOCALBIN)/kctrl
99+
KAPP ?= $(LOCALBIN)/kapp
100+
IMGPKG ?= $(LOCALBIN)/imgpkg
101+
KUSTOMIZE ?= $(LOCALBIN)/kustomize-$(KUSTOMIZE_VERSION)
102+
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen-$(CONTROLLER_TOOLS_VERSION)
103+
GOLANGCI_LINT = $(LOCALBIN)/golangci-lint-$(GOLANGCI_LINT_VERSION)
104+
KO ?= $(LOCALBIN)/ko
105+
DIEGEN ?= $(LOCALBIN)/diegen
106+
107+
## Tool Versions
108+
KUSTOMIZE_VERSION ?= v5.6.0
109+
CONTROLLER_TOOLS_VERSION ?= v0.17.2
110+
GOLANGCI_LINT_VERSION ?= v1.61.0
111+
KO_VERSION ?= 0.17.1
112+
DIEGEN_VERSION=v0.15.0
113+
GOOS ?= darwin
114+
115+
.PHONY: tools
116+
tools: clean kustomize controller-gen golangci-lint carvel-tools ko-setup diegen ## Setup tools used in local development
117+
ls -al $(LOCALBIN)
118+
119+
.PHONY: kustomize
120+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
121+
$(KUSTOMIZE): $(LOCALBIN)
122+
$(call go-install-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v5,$(KUSTOMIZE_VERSION))
123+
124+
.PHONY: controller-gen
125+
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
126+
$(CONTROLLER_GEN): $(LOCALBIN)
127+
$(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen,$(CONTROLLER_TOOLS_VERSION))
128+
129+
.PHONY: golangci-lint
130+
golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary.
131+
$(GOLANGCI_LINT): $(LOCALBIN)
132+
$(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,${GOLANGCI_LINT_VERSION})
133+
134+
.PHONY: carvel-tools
135+
carvel-tools: $(LOCALBIN) ## Downloads Carvel CLI tools locally
136+
if [[ ! -f $(YTT) ]]; then \
137+
curl -L https://carvel.dev/install.sh | K14SIO_INSTALL_BIN_DIR=$(LOCALBIN) bash; \
138+
fi
139+
140+
.PHONY: ko-setup
141+
ko-setup: $(KO) ## Setup for ko binary
142+
$(KO): $(LOCALBIN)
143+
@if [ ! -f $(KO) ]; then \
144+
echo curl -sSfL "https://github.com/ko-build/ko/releases/download/v$(KO_VERSION)/ko_$(KO_VERSION)_$(GOOS)_x86_64.tar.gz"; \
145+
curl -sSfL "https://github.com/ko-build/ko/releases/download/v$(KO_VERSION)/ko_$(KO_VERSION)_$(GOOS)_x86_64.tar.gz" > $(LOCALBIN)/ko.tar.gz; \
146+
tar xzf $(LOCALBIN)/ko.tar.gz -C $(LOCALBIN)/; \
147+
chmod +x $(LOCALBIN)/ko; \
148+
fi;
149+
150+
.PHONY: diegen
151+
diegen: $(DIEGEN) ## Download die-gen locally
152+
$(DIEGEN): $(LOCALBIN)
153+
@if [ ! -f $(DIEGEN) ]; then \
154+
echo "# installing $(@)"; \
155+
GOBIN=$(LOCALBIN) go install reconciler.io/dies/diegen@$(DIEGEN_VERSION); \
156+
fi;
157+
158+
.PHONY: clean
159+
clean: ## Remove local downloaded and generated binaries
160+
rm -rf $(LOCALBIN)
161+
162+
163+
# go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist
164+
# $1 - target path with name of binary (ideally with version)
165+
# $2 - package url which can be installed
166+
# $3 - specific version of package
167+
define go-install-tool
168+
@[ -f $(1) ] || { \
169+
set -e; \
170+
package=$(2)@$(3) ;\
171+
echo "Downloading $${package}" ;\
172+
GOBIN=$(LOCALBIN) go install $${package} ;\
173+
mv "$$(echo "$(1)" | sed "s/-$(3)$$//")" $(1) ;\
174+
}
175+
endef

apis/source/v1alpha1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dies/source/v1alpha1/zz_generated.die.go

Lines changed: 4 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dies/source/v1alpha1/zz_generated.die_test.go

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)