Skip to content

Commit

Permalink
Unify manifests and generate make targets
Browse files Browse the repository at this point in the history
  • Loading branch information
ccremer committed Nov 27, 2020
1 parent 1af6280 commit 41e98c8
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 22 deletions.
28 changes: 12 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ KUSTOMIZE ?= go run sigs.k8s.io/kustomize/kustomize/v3
all: build

# Run tests
test: generate fmt vet manifests
test: generate fmt vet
go test ./... -coverprofile cover.out

# Run tests (see https://sdk.operatorframework.io/docs/building-operators/golang/references/envtest-setup)
Expand All @@ -58,7 +58,7 @@ $(TESTBIN_DIR):
# See https://storage.googleapis.com/kubebuilder-tools/ for list of supported K8s versions
# No, there's no 1.18 support, so we're going for 1.19
integration_test: export ENVTEST_K8S_VERSION = 1.19.2
integration_test: generate fmt vet manifests $(TESTBIN_DIR)
integration_test: generate fmt vet $(TESTBIN_DIR)
test -f ${ENVTEST_ASSETS_DIR}/setup-envtest.sh || curl -sSLo ${ENVTEST_ASSETS_DIR}/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/master/hack/setup-envtest.sh
source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test -tags=integration -v ./... -coverprofile cover.out

Expand All @@ -70,29 +70,29 @@ dist: generate fmt vet
goreleaser release --snapshot --rm-dist --skip-sign

# Run against the configured Kubernetes cluster in ~/.kube/config
run: generate fmt vet manifests
run: generate fmt vet
go run ./main.go

# Install CRDs into a cluster
install: manifests
install: generate
$(KUSTOMIZE) build $(CRD_ROOT_DIR)/v1 | kubectl apply -f -

# Uninstall CRDs from a cluster
uninstall: manifests
uninstall: generate
$(KUSTOMIZE) build $(CRD_ROOT_DIR)/v1 | kubectl delete -f -

# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
deploy: manifests
deploy: generate
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
$(KUSTOMIZE) build config/default | kubectl apply -f -

# Generate manifests e.g. CRD, RBAC etc.
manifests:
@CRD_ROOT_DIR="$(CRD_ROOT_DIR)" go generate -tags=generate hack/generate-crd.go
@rm -r hack/config
generate:
@CRD_ROOT_DIR="$(CRD_ROOT_DIR)" go generate -tags=generate generate.go
@rm config/*.yaml

# Generate CRD to file
crd: manifests
crd: generate
$(KUSTOMIZE) build $(CRD_ROOT_DIR)/v1 > $(CRD_FILE)
$(KUSTOMIZE) build $(CRD_ROOT_DIR)/v1beta1 > $(CRD_FILE_LEGACY)

Expand All @@ -108,10 +108,6 @@ lint: fmt vet
@echo 'Check for uncommitted changes ...'
git diff --exit-code

# Generate code
generate: vet
go run sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."

# Build the docker image
docker-build: build
docker build . -t $(DOCKER_IMG) -t $(QUAY_IMG)
Expand All @@ -123,7 +119,7 @@ docker-push:

# Generate bundle manifests and metadata, then validate generated files.
.PHONY: bundle
bundle: manifests
bundle: generate
operator-sdk generate kustomize manifests -q
cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG)
$(KUSTOMIZE) build config/manifests | operator-sdk generate bundle -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)
Expand All @@ -139,7 +135,7 @@ e2e_test: setup_e2e_test build
@echo "TODO: Add actual e2e tests!"

setup_e2e_test: export KUBECONFIG = $(KIND_KUBECONFIG)
setup_e2e_test: $(KIND_BIN) manifests
setup_e2e_test: $(KIND_BIN) generate
@kubectl config use-context kind-$(KIND_CLUSTER)
@$(KUSTOMIZE) build $(CRD_ROOT_DIR)/$(CRD_SPEC_VERSION) | kubectl apply -f -

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ You'll need:
- docker
- make

These are the most common make targets: `build`, `test`, `docker-build`.
These are the most common make targets: `build`, `test`, `docker-build`, `run`.

## Generate kubernetes code

If you make changes to the CRD structs you'll need to run code generation. This can be done with make:

```
make manifests
make generate
```

## Install CRDs
Expand Down
10 changes: 6 additions & 4 deletions hack/generate-crd.go → generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

package main

//go:generate go run sigs.k8s.io/controller-tools/cmd/controller-gen crd:trivialVersions=true rbac:roleName=manager-role webhook paths="./../..." output:crd:artifacts:config=../${CRD_ROOT_DIR}/v1beta1 crd:crdVersions=v1beta1
//go:generate go run sigs.k8s.io/controller-tools/cmd/controller-gen crd:trivialVersions=true rbac:roleName=manager-role webhook paths="./../..." output:crd:artifacts:config=../${CRD_ROOT_DIR}/v1 crd:crdVersions=v1
//go:generate go run generate-crd.go
//go:generate go run sigs.k8s.io/controller-tools/cmd/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
//go:generate go run sigs.k8s.io/controller-tools/cmd/controller-gen crd:trivialVersions=true rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=${CRD_ROOT_DIR}/v1beta1 crd:crdVersions=v1beta1
//go:generate go run sigs.k8s.io/controller-tools/cmd/controller-gen crd:trivialVersions=true rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=${CRD_ROOT_DIR}/v1 crd:crdVersions=v1
/// Run this file itself
//go:generate go run generate.go

import (
"bufio"
Expand All @@ -23,7 +25,7 @@ func main() {
workdir, _ := os.Getwd()
log.Println("Running post-generate in "+ workdir)
for _, file := range patchFiles {
fileName := "../" + os.Getenv("CRD_ROOT_DIR") + "/" + file
fileName := os.Getenv("CRD_ROOT_DIR") + "/" + file
log.Println(fmt.Sprintf("Reading file %s", fileName))
lines, err := readLines(fileName)
if err != nil {
Expand Down

0 comments on commit 41e98c8

Please sign in to comment.