Skip to content

Commit cacbdea

Browse files
authored
Merge pull request #3362 from Skarlso/use-setup-envtest
Using setup-envtest to install kubebuilder dependency
2 parents 31f02eb + 8e8f07a commit cacbdea

File tree

7 files changed

+84
-126
lines changed

7 files changed

+84
-126
lines changed

Makefile

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ ARTIFACTS ?= $(REPO_ROOT)/_artifacts
2424
TOOLS_DIR := hack/tools
2525
TOOLS_DIR_DEPS := $(TOOLS_DIR)/go.sum $(TOOLS_DIR)/go.mod $(TOOLS_DIR)/Makefile
2626
TOOLS_BIN_DIR := $(TOOLS_DIR)/bin
27+
GO_INSTALL := ./scripts/go_install.sh
2728

2829
API_DIRS := cmd/clusterawsadm/api api exp/api controlplane/eks/api bootstrap/eks/api iam/api
2930
API_SRCS := $(foreach dir, $(API_DIRS), $(call rwildcard,../../$(dir),*.go))
@@ -129,6 +130,19 @@ E2E_SKIP_EKS_UPGRADE ?= "false"
129130
# Set EKS_SOURCE_TEMPLATE to override the source template
130131
EKS_SOURCE_TEMPLATE ?= eks/cluster-template-eks-control-plane-only.yaml
131132

133+
# set up `setup-envtest` to install kubebuilder dependency
134+
export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.23.3
135+
SETUP_ENVTEST_VER := v0.0.0-20211110210527-619e6b92dab9
136+
SETUP_ENVTEST_BIN := setup-envtest
137+
SETUP_ENVTEST := $(abspath $(TOOLS_BIN_DIR)/$(SETUP_ENVTEST_BIN)-$(SETUP_ENVTEST_VER))
138+
SETUP_ENVTEST_PKG := sigs.k8s.io/controller-runtime/tools/setup-envtest
139+
140+
ifeq ($(shell go env GOOS),darwin) # Use the darwin/amd64 binary until an arm64 version is available
141+
KUBEBUILDER_ASSETS ?= $(shell $(SETUP_ENVTEST) use --use-env -p path --arch amd64 $(KUBEBUILDER_ENVTEST_KUBERNETES_VERSION))
142+
else
143+
KUBEBUILDER_ASSETS ?= $(shell $(SETUP_ENVTEST) use --use-env -p path $(KUBEBUILDER_ENVTEST_KUBERNETES_VERSION))
144+
endif
145+
132146
# Enable Cluster API Framework tests for the purposes of running the PR blocking test
133147
ifeq ($(findstring \[PR-Blocking\],$(E2E_FOCUS)),\[PR-Blocking\])
134148
override undefine GINKGO_SKIP
@@ -305,7 +319,7 @@ verify-shellcheck: ## Verify shell files
305319

306320
.PHONY: verify-book-links
307321
verify-book-links: ## Verify book links
308-
$(MAKE) -C docs/book verify
322+
$(MAKE) -C docs/book verify
309323

310324
.PHONY: verify-gen
311325
verify-gen: generate ## Verify generated files
@@ -366,13 +380,16 @@ generate-test-flavors: $(KUSTOMIZE) ## Generate test template flavors
366380
e2e-image: docker-pull-prerequisites $(TOOLS_BIN_DIR)/start.sh $(TOOLS_BIN_DIR)/restart.sh ## Build an e2e test image
367381
docker build -f Dockerfile --tag="gcr.io/k8s-staging-cluster-api/capa-manager:e2e" .
368382

383+
$(SETUP_ENVTEST): # Build setup-envtest from tools folder.
384+
GOBIN=$(abspath $(TOOLS_BIN_DIR)) $(GO_INSTALL) $(SETUP_ENVTEST_PKG) $(SETUP_ENVTEST_BIN) $(SETUP_ENVTEST_VER)
385+
369386
.PHONY: test
370-
test: ## Run tests
371-
source ./scripts/fetch_ext_bins.sh; fetch_tools; setup_envs; go test ./...
387+
test: $(SETUP_ENVTEST) ## Run tests
388+
KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test ./...
372389

373390
.PHONY: test-verbose
374-
test-verbose: ## Run tests with verbose settings.
375-
source ./scripts/fetch_ext_bins.sh; fetch_tools; setup_envs; go test -v ./...
391+
test-verbose: $(SETUP_ENVTEST) ## Run tests with verbose settings.
392+
KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test -v ./...
376393

377394
.PHONY: test-e2e ## Run e2e tests using clusterctl
378395
test-e2e: $(GINKGO) $(KIND) $(SSM_PLUGIN) $(KUSTOMIZE) generate-test-flavors e2e-image ## Run e2e tests
@@ -391,8 +408,8 @@ test-conformance: generate-test-flavors $(GINKGO) $(KIND) $(SSM_PLUGIN) $(KUSTOM
391408
time $(GINKGO) -tags=e2e -focus="conformance" $(CONFORMANCE_GINKGO_ARGS) ./test/e2e/suites/conformance/... -- -config-path="$(E2E_CONF_PATH)" $(CONFORMANCE_E2E_ARGS)
392409

393410
.PHONY: test-cover
394-
test-cover: ## Run tests with code coverage and code generate reports
395-
source ./scripts/fetch_ext_bins.sh; fetch_tools; setup_envs; go test -coverprofile=coverage.out ./... $(TEST_ARGS)
411+
test-cover: $(SETUP_ENVTEST) ## Run tests with code coverage and code generate reports
412+
KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test -coverprofile=coverage.out ./... $(TEST_ARGS)
396413
go tool cover -func=coverage.out -o coverage.txt
397414
go tool cover -html=coverage.out -o coverage.html
398415

@@ -533,7 +550,7 @@ release-manifests: ## Release manifest files
533550
.PHONY: release-changelog
534551
release-changelog: $(GH) ## Generates release notes using Github release notes.
535552
./hack/releasechangelog.sh -v $(VERSION) -pv $(PREVIOUS_VERSION) -gh $(GH) -ghorg $(GH_ORG_NAME) -ghrepo $(GH_REPO_NAME) -cimg $(CORE_CONTROLLER_IMG) > $(RELEASE_DIR)/CHANGELOG.md
536-
553+
537554
.PHONY: release-binaries
538555
release-binaries: ## Builds the binaries to publish with a release
539556
RELEASE_BINARY=./cmd/clusterawsadm GOOS=linux GOARCH=amd64 $(MAKE) release-binary

hack/tools/go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ require (
1616
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c
1717
k8s.io/klog/v2 v2.60.1
1818
sigs.k8s.io/cluster-api/hack/tools v0.0.0-20211111175208-4cc2fce2111a
19+
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9
1920
sigs.k8s.io/controller-tools v0.7.1-0.20211110210727-ab52f76cc7d1
2021
sigs.k8s.io/kind v0.12.0
2122
sigs.k8s.io/kustomize/kustomize/v4 v4.5.3
@@ -70,6 +71,7 @@ require (
7071
github.com/go-git/go-billy/v5 v5.3.1 // indirect
7172
github.com/go-git/go-git/v5 v5.4.2 // indirect
7273
github.com/go-logr/logr v1.2.0 // indirect
74+
github.com/go-logr/zapr v1.2.0 // indirect
7375
github.com/go-openapi/jsonpointer v0.19.5 // indirect
7476
github.com/go-openapi/jsonreference v0.19.5 // indirect
7577
github.com/go-openapi/swag v0.19.14 // indirect
@@ -200,6 +202,9 @@ require (
200202
github.com/yeya24/promlinter v0.1.1-0.20210918184747-d757024714a1 // indirect
201203
gitlab.com/bosi/decorder v0.2.1 // indirect
202204
go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
205+
go.uber.org/atomic v1.7.0 // indirect
206+
go.uber.org/multierr v1.6.0 // indirect
207+
go.uber.org/zap v1.19.1 // indirect
203208
golang.org/x/crypto v0.0.0-20220214200702-86341886e292 // indirect
204209
golang.org/x/exp v0.0.0-20211029160041-3396431c207b // indirect
205210
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect

hack/tools/go.sum

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN
150150
github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
151151
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
152152
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
153+
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
153154
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
154155
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
155156
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -332,6 +333,7 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg
332333
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
333334
github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE=
334335
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
336+
github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk=
335337
github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
336338
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
337339
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
@@ -1180,20 +1182,24 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
11801182
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
11811183
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
11821184
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
1185+
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
11831186
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
11841187
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
1188+
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723 h1:sHOAIxRGBp443oHZIPB+HsUGaksVCXVQENPxwTfQdH4=
11851189
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
11861190
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
11871191
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
11881192
go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
11891193
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
1194+
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
11901195
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
11911196
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
11921197
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
11931198
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
11941199
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
11951200
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
11961201
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
1202+
go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI=
11971203
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
11981204
golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
11991205
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1869,6 +1875,7 @@ rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
18691875
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.23/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
18701876
sigs.k8s.io/cluster-api/hack/tools v0.0.0-20211111175208-4cc2fce2111a h1:VrYPmq0nN1VQuhid22yD9Z5Hn+M6p/N0f0dCkuM5C2s=
18711877
sigs.k8s.io/cluster-api/hack/tools v0.0.0-20211111175208-4cc2fce2111a/go.mod h1:Bib3nYZoRjwPdZ1+X1MVRWcQL18dJ4q2U+Ok603lcAE=
1878+
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9 h1:ylYUI5uaq/guUFerFRVG81FHSA5/3+fERCE1RQbQUZ4=
18721879
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211110210527-619e6b92dab9/go.mod h1:+sJcI1F0QI0Cv+8fp5rH5B2fK1LxzrAQqYnaPx9nY8I=
18731880
sigs.k8s.io/controller-tools v0.7.1-0.20211110210727-ab52f76cc7d1 h1:fsnXNyvliKAKkcOZ5l9gGinGqjGM8eKKT+4TW/LoI7A=
18741881
sigs.k8s.io/controller-tools v0.7.1-0.20211110210727-ab52f76cc7d1/go.mod h1:h59umkqeBKj3TNpLmLoqDCwXDcbN+mkhQzlNjoUDJ3I=

hack/tools/tools.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
_ "sigs.k8s.io/cluster-api/hack/tools/conversion-verifier"
3737
_ "sigs.k8s.io/cluster-api/hack/tools/mdbook/embed"
3838
_ "sigs.k8s.io/cluster-api/hack/tools/mdbook/releaselink"
39+
_ "sigs.k8s.io/controller-runtime/tools/setup-envtest"
3940
_ "sigs.k8s.io/controller-tools/cmd/controller-gen"
4041
_ "sigs.k8s.io/kind"
4142
_ "sigs.k8s.io/kustomize/kustomize/v4"

scripts/ci-test.sh

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,4 @@ REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
2222
# shellcheck source=../hack/ensure-go.sh
2323
source "${REPO_ROOT}/hack/ensure-go.sh"
2424

25-
cd "${REPO_ROOT}" &&
26-
source ./scripts/fetch_ext_bins.sh &&
27-
fetch_tools &&
28-
setup_envs &&
29-
make lint test-verbose
25+
cd "${REPO_ROOT}" && make lint test-verbose

scripts/fetch_ext_bins.sh

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

scripts/go_install.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2021 The Kubernetes Authors.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
16+
set -o errexit
17+
set -o nounset
18+
set -o pipefail
19+
20+
if [ -z "${1}" ]; then
21+
echo "must provide module as first parameter"
22+
exit 1
23+
fi
24+
25+
if [ -z "${2}" ]; then
26+
echo "must provide binary name as second parameter"
27+
exit 1
28+
fi
29+
30+
if [ -z "${3}" ]; then
31+
echo "must provide version as third parameter"
32+
exit 1
33+
fi
34+
35+
if [ -z "${GOBIN}" ]; then
36+
echo "GOBIN is not set. Must set GOBIN to install the bin in a specified directory."
37+
exit 1
38+
fi
39+
40+
rm "${GOBIN}/${2}"* || true
41+
42+
# install the golang module specified as the first argument
43+
go install -tags tools "${1}@${3}"
44+
mv "${GOBIN}/${2}" "${GOBIN}/${2}-${3}"
45+
ln -sf "${GOBIN}/${2}-${3}" "${GOBIN}/${2}"

0 commit comments

Comments
 (0)