@@ -3,8 +3,12 @@ IMG ?= keikoproj/iam-manager:latest
3
3
4
4
# Tools required to run the full suite of tests properly
5
5
OSNAME ?= $(shell uname -s | tr A-Z a-z)
6
- KUBEBUILDER_VER ?= 2.2.0
7
6
KUBEBUILDER_ARCH ?= amd64
7
+ ENVTEST_K8S_VERSION = 1.28.0
8
+
9
+ LOCALBIN ?= $(shell pwd) /bin
10
+ $(LOCALBIN ) :
11
+ mkdir -p $(LOCALBIN )
8
12
9
13
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
10
14
CRD_OPTIONS ?= "crd:trivialVersions=true"
@@ -22,6 +26,8 @@ CLUSTER_NAME ?= k8s_test_keiko
22
26
CLUSTER_OIDC_ISSUER_URL ?= https://google.com/OIDC
23
27
DEFAULT_TRUST_POLICY ?= '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow","Principal": {"Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER"},"Action": "sts:AssumeRoleWithWebIdentity","Condition": {"StringEquals": {"OIDC_PROVIDER:sub": "system:serviceaccount:{{.NamespaceName}}:SERVICE_ACCOUNT_NAME"}}}, {"Effect": "Allow","Principal": {"AWS": ["arn:aws:iam::{{.AccountID}}:role/trust_role"]},"Action": "sts:AssumeRole"}]}'
24
28
29
+ ENVTEST ?= $(LOCALBIN ) /setup-envtest
30
+
25
31
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
26
32
ifeq (,$(shell go env GOBIN) )
27
33
GOBIN := $(shell go env GOPATH)/bin
@@ -31,23 +37,15 @@ endif
31
37
32
38
all : manager
33
39
34
- .PHONY : kubebuilder
35
- kubebuilder :
36
- @echo " Downloading and installing Kubebuilder - this requires sudo privileges"
37
- curl -fsSL -O " https://github.com/kubernetes-sigs/kubebuilder/releases/download/v$( KUBEBUILDER_VER) /kubebuilder_$( KUBEBUILDER_VER) _$( OSNAME) _$( KUBEBUILDER_ARCH) .tar.gz"
38
- rm -rf kubebuilder && mkdir -p kubebuilder
39
- tar -zxvf kubebuilder_$(KUBEBUILDER_VER ) _$(OSNAME ) _$(KUBEBUILDER_ARCH ) .tar.gz --strip-components 1 -C kubebuilder
40
- sudo cp -rf kubebuilder /usr/local
41
-
42
40
mock :
43
- go get -u github.com/golang/mock/mockgen
41
+ go install github.com/golang/mock/mockgen@v1.6.0
44
42
@echo " mockgen is in progess"
45
43
@for pkg in $(shell go list ./...) ; do \
46
44
go generate ./... ; \
47
45
done
48
46
49
47
# Run tests
50
- test : mock generate fmt manifests
48
+ test : mock generate fmt manifests envtest
51
49
KUBECONFIG=$(KUBECONFIG ) \
52
50
LOCAL=$(LOCAL ) \
53
51
ALLOWED_POLICY_ACTION=$(ALLOWED_POLICY_ACTION ) \
@@ -60,15 +58,15 @@ test: mock generate fmt manifests
60
58
CLUSTER_NAME=$(CLUSTER_NAME ) \
61
59
CLUSTER_OIDC_ISSUER_URL=" $( CLUSTER_OIDC_ISSUER_URL) " \
62
60
DEFAULT_TRUST_POLICY=$(DEFAULT_TRUST_POLICY ) \
63
- go test ./... -coverprofile cover.out
61
+ KUBEBUILDER_ASSETS= " $( shell $( ENVTEST ) use $( ENVTEST_K8S_VERSION ) --bin-dir $( LOCALBIN ) -p path ) " go test ./... -coverprofile cover.out
64
62
65
63
# Build manager binary
66
64
manager : generate fmt vet update
67
- go build -o bin/manager main.go
65
+ go build -o bin/manager cmd/ main.go
68
66
69
67
# Run against the configured Kubernetes cluster in ~/.kube/config
70
68
run : generate fmt vet manifests
71
- go run ./main.go
69
+ go run ./cmd/ main.go
72
70
73
71
# Install CRDs into a cluster
74
72
install : manifests
@@ -96,8 +94,8 @@ update: manifests
96
94
97
95
# Generate manifests e.g. CRD, RBAC etc.
98
96
manifests : controller-gen
99
- $(CONTROLLER_GEN ) $( CRD_OPTIONS ) rbac:roleName=manager-role webhook paths=" ./..." output:crd:artifacts:config=config/crd/bases
100
- $(CONTROLLER_GEN ) $( CRD_OPTIONS ) rbac:roleName=manager-role webhook paths=" ./..." output:crd:artifacts:config=config/crd_no_webhook/bases
97
+ $(CONTROLLER_GEN ) rbac:roleName=manager-role crd webhook paths=" ./..." output:crd:artifacts:config=config/crd/bases
98
+ $(CONTROLLER_GEN ) rbac:roleName=manager-role crd webhook paths=" ./..." output:crd:artifacts:config=config/crd_no_webhook/bases
101
99
102
100
103
101
# Run go fmt against code
@@ -124,8 +122,13 @@ docker-push:
124
122
# download controller-gen if necessary
125
123
controller-gen :
126
124
ifeq (, $(shell which controller-gen) )
127
- go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.5
125
+ go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.13.0
128
126
CONTROLLER_GEN =$(GOBIN ) /controller-gen
129
127
else
130
128
CONTROLLER_GEN =$(shell which controller-gen)
131
129
endif
130
+
131
+ .PHONY : envtest
132
+ envtest : $(ENVTEST ) # # Download envtest-setup locally if necessary.
133
+ $(ENVTEST ) : $(LOCALBIN )
134
+ test -s $(LOCALBIN ) /setup-envtest || GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
0 commit comments