From bed205df386406ad5683f35dd94abb63fbb8c361 Mon Sep 17 00:00:00 2001 From: Sertac Ozercan Date: Thu, 19 Jan 2023 06:35:19 +0000 Subject: [PATCH 1/2] remove kubebuilder dependency Signed-off-by: Sertac Ozercan --- .github/workflows/workflow.yml | 10 +------- constraint/Dockerfile | 36 +++++++++------------------- constraint/Makefile | 43 ++++++++++++++++++++++++---------- 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index d020355c5..9074643c5 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -22,7 +22,7 @@ jobs: test: name: "Unit test" runs-on: ubuntu-latest - timeout-minutes: 5 + timeout-minutes: 10 steps: - name: Set up Go 1.19 uses: actions/setup-go@v3 @@ -34,14 +34,6 @@ jobs: with: path: go/src/github.com/open-policy-agent/frameworks - - name: Install tools - run: | - curl -L -O "https://github.com/kubernetes-sigs/kubebuilder/releases/download/v${KUBEBUILDER_VERSION}/kubebuilder_${KUBEBUILDER_VERSION}_linux_amd64.tar.gz" &&\ - tar -zxvf kubebuilder_${KUBEBUILDER_VERSION}_linux_amd64.tar.gz &&\ - sudo mv kubebuilder_${KUBEBUILDER_VERSION}_linux_amd64 /usr/local/kubebuilder - env: - KUBEBUILDER_VERSION: 2.3.1 - - name: Unit test run: | export PATH=$PATH:${GOBIN} diff --git a/constraint/Dockerfile b/constraint/Dockerfile index 02721456a..ecdc6960d 100644 --- a/constraint/Dockerfile +++ b/constraint/Dockerfile @@ -1,30 +1,16 @@ -# Build the manager binary -FROM golang:1.19 as builder +FROM golang:1.19-bullseye as builder -RUN apt-get update &&\ - apt-get install -y apt-utils make +ARG KUSTOMIZE_VERSION -# Install kubebuilder -WORKDIR /scratch -ENV version=2.3.2 -ENV arch=amd64 -RUN curl -L -O "https://github.com/kubernetes-sigs/kubebuilder/releases/download/v${version}/kubebuilder_${version}_linux_${arch}.tar.gz" &&\ - tar -zxvf kubebuilder_${version}_linux_${arch}.tar.gz &&\ - mv kubebuilder_${version}_linux_${arch} /usr/local/kubebuilder &&\ - rm kubebuilder_${version}_linux_${arch}.tar.gz -ENV PATH=$PATH:/usr/local/kubebuilder/bin:/usr/bin +ARG TARGETARCH -# Install kustomize -ENV version=3.8.9 -ENV arch=amd64 -ENV tar_name=kustomize_v${version}_linux_${arch}.tar.gz -RUN curl -LO "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv${version}/${tar_name}" &&\ - tar -xf ${tar_name} &&\ - mv ./kustomize /usr/bin/kustomize &&\ - chmod u+x /usr/bin/kustomize +RUN apt-get update && \ + apt-get install -y make -# Copy in the go src -WORKDIR /go/src/github.com/open-policy-agent/frameworks/constraint -COPY . . +# Install kustomize +RUN curl -L -O "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz" &&\ + tar -zxvf kustomize_v${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz &&\ + chmod +x kustomize &&\ + mv kustomize /usr/local/bin -ENTRYPOINT ["make", "docker-internal-test"] +WORKDIR /app diff --git a/constraint/Makefile b/constraint/Makefile index 720ab18e6..4161232dd 100644 --- a/constraint/Makefile +++ b/constraint/Makefile @@ -1,6 +1,8 @@ # When updating this, make sure to update the corresponding action in # workflow.yaml -GOLANGCI_LINT_VERSION := v1.45.2 +GOLANGCI_LINT_VERSION ?= 1.50.0 +KUSTOMIZE_VERSION ?= 3.8.9 +KUBERNETES_VERSION ?= 1.26.0 # Detects the location of the user golangci-lint cache. GOLANGCI_LINT_CACHE := $(shell pwd)/.tmp/golangci-lint @@ -18,19 +20,15 @@ all: lint test # Run tests # TODO: Once https://github.com/kubernetes/kubernetes/issues/101567 is fixed, add `generate` back as a dependency target -native-test: gen-dependencies manifests - go test ./pkg/... -coverprofile cover.out - -# Docker internal test -docker-internal-test: - make native-test -# The remote driver has some unimplemented functions -# which result in a panic during testing. -# ./tests/test_remote_driver.sh +native-test: gen-dependencies manifests envtest + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(KUBERNETES_VERSION) --bin-dir $(LOCALBIN) -p path)" \ + GO111MODULE=on \ + go test -mod vendor ./pkg/... -race -bench . -coverprofile cover.out # Hook to run docker tests -test: - docker build . -t constraint-test && docker run constraint-test +.PHONY: test +test: __test-image + docker run --rm -v $(shell pwd):/app constraint-test make native-test # Install CRDs into a cluster install: manifests @@ -60,7 +58,7 @@ manifests: lint: docker run --rm -v $(shell pwd):/app \ -v ${GOLANGCI_LINT_CACHE}:/root/.cache/golangci-lint \ - -w /app golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine \ + -w /app golangci/golangci-lint:v${GOLANGCI_LINT_VERSION}-alpine \ golangci-lint run -v # Generate code @@ -109,3 +107,22 @@ generate-defaults: constraint-template-string-constant vendor: go mod vendor go mod tidy + +.PHONY: __test-image +__test-image: + docker buildx build . \ + -t constraint-test \ + --load \ + --build-arg KUSTOMIZE_VERSION=$(KUSTOMIZE_VERSION) + +## Location to install dependencies to +LOCALBIN ?= $(shell pwd)/bin +$(LOCALBIN): + mkdir -p $(LOCALBIN) + +ENVTEST ?= $(LOCALBIN)/setup-envtest + +.PHONY: envtest +envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. +$(ENVTEST): $(LOCALBIN) + test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@v0.0.0-20230118154835-9241bceb3098 From 9fc37f8fe590364a954281d2ef6fbed79a775d5f Mon Sep 17 00:00:00 2001 From: Sertac Ozercan Date: Fri, 20 Jan 2023 18:55:21 +0000 Subject: [PATCH 2/2] use .tmp/bin Signed-off-by: Sertac Ozercan --- constraint/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/constraint/Makefile b/constraint/Makefile index 4161232dd..d6e19b28f 100644 --- a/constraint/Makefile +++ b/constraint/Makefile @@ -116,7 +116,7 @@ __test-image: --build-arg KUSTOMIZE_VERSION=$(KUSTOMIZE_VERSION) ## Location to install dependencies to -LOCALBIN ?= $(shell pwd)/bin +LOCALBIN ?= $(shell pwd)/.tmp/bin $(LOCALBIN): mkdir -p $(LOCALBIN)