zfs-localpv/Makefile

161 lines
4.4 KiB
Makefile
Raw Normal View History

# list only csi source code directories
PACKAGES = $(shell go list ./... | grep -v 'vendor\|pkg/generated')
UNIT_TEST_PACKAGES = $(shell go list ./... | grep -v 'vendor\|pkg/generated\|tests')
# Lint our code. Reference: https://golang.org/cmd/vet/
VETARGS?=-asmdecl -atomic -bool -buildtags -copylocks -methods \
-nilfunc -printf -rangeloops -shift -structtags -unsafeptr
# Tools required for different make
# targets or for development purposes
EXTERNAL_TOOLS=\
github.com/golang/dep/cmd/dep \
golang.org/x/tools/cmd/cover \
github.com/axw/gocov/gocov \
gopkg.in/matm/v1/gocov-html \
github.com/ugorji/go/codec/codecgen \
github.com/onsi/ginkgo/ginkgo \
github.com/onsi/gomega/...
ifeq (${IMAGE_TAG}, )
IMAGE_TAG = ci
export IMAGE_TAG
endif
ifeq (${TRAVIS_TAG}, )
BASE_TAG = ci
export BASE_TAG
else
BASE_TAG = ${TRAVIS_TAG}
export BASE_TAG
endif
# Specify the name for the binary
CSI_DRIVER=zfs-driver
# Specify the date o build
BUILD_DATE = $(shell date +'%Y%m%d%H%M%S')
.PHONY: all
all: test zfs-driver-image
.PHONY: clean
clean:
@echo "--> Cleaning Directory" ;
go clean -testcache
rm -rf bin
rm -rf ${GOPATH}/bin/${CSI_DRIVER}
rm -rf ${GOPATH}/pkg/*
.PHONY: format
format:
@echo "--> Running go fmt"
@go fmt $(PACKAGES)
.PHONY: test
test: format
@echo "--> Running go test" ;
@go test $(UNIT_TEST_PACKAGES)
# Bootstrap downloads tools required
# during build
.PHONY: bootstrap
bootstrap:
@for tool in $(EXTERNAL_TOOLS) ; do \
echo "+ Installing $$tool" ; \
go get -u $$tool; \
done
# SRC_PKG is the path of code files
SRC_PKG := github.com/openebs/zfs-localpv/pkg
# code generation for custom resources
.PHONY: kubegen
kubegen: kubegendelete deepcopy-install clientset-install lister-install informer-install
@GEN_SRC=openebs.io/core/v1alpha1 make deepcopy clientset lister informer
# deletes generated code by codegen
.PHONY: kubegendelete
kubegendelete:
@rm -rf pkg/generated/clientset
@rm -rf pkg/generated/lister
@rm -rf pkg/generated/informer
.PHONY: deepcopy-install
deepcopy-install:
@go install ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
.PHONY: deepcopy
deepcopy:
@echo "+ Generating deepcopy funcs for $(GEN_SRC)"
@deepcopy-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--output-file-base zz_generated.deepcopy \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: clientset-install
clientset-install:
@go install ./vendor/k8s.io/code-generator/cmd/client-gen
.PHONY: clientset
clientset:
@echo "+ Generating clientsets for $(GEN_SRC)"
@client-gen \
--fake-clientset=true \
--input $(GEN_SRC) \
--input-base $(SRC_PKG)/apis \
--clientset-path $(SRC_PKG)/generated/clientset \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: lister-install
lister-install:
@go install ./vendor/k8s.io/code-generator/cmd/lister-gen
.PHONY: lister
lister:
@echo "+ Generating lister for $(GEN_SRC)"
@lister-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--output-package $(SRC_PKG)/generated/lister \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: informer-install
informer-install:
@go install ./vendor/k8s.io/code-generator/cmd/informer-gen
.PHONY: informer
informer:
@echo "+ Generating informer for $(GEN_SRC)"
@informer-gen \
--input-dirs $(SRC_PKG)/apis/$(GEN_SRC) \
--versioned-clientset-package $(SRC_PKG)/generated/clientset/internalclientset \
--listers-package $(SRC_PKG)/generated/lister \
--output-package $(SRC_PKG)/generated/informer \
--go-header-file ./buildscripts/custom-boilerplate.go.txt
.PHONY: zfs-driver
zfs-driver: format
@echo "--------------------------------"
@echo "--> Building ${CSI_DRIVER} "
@echo "--------------------------------"
@PNAME=${CSI_DRIVER} CTLNAME=${CSI_DRIVER} sh -c "'$(PWD)/buildscripts/build.sh'"
.PHONY: zfs-driver-image
zfs-driver-image: zfs-driver
@echo "--------------------------------"
@echo "+ Generating ${CSI_DRIVER} image"
@echo "--------------------------------"
@cp bin/${CSI_DRIVER}/${CSI_DRIVER} buildscripts/${CSI_DRIVER}/
cd buildscripts/${CSI_DRIVER} && sudo docker build -t openebs/${CSI_DRIVER}:${IMAGE_TAG} --build-arg BUILD_DATE=${BUILD_DATE} . && sudo docker tag openebs/${CSI_DRIVER}:${IMAGE_TAG} quay.io/openebs/${CSI_DRIVER}:${IMAGE_TAG}
@rm buildscripts/${CSI_DRIVER}/${CSI_DRIVER}
.PHONY: ci
ci:
@echo "--> Running ci test";
$(PWD)/ci/ci-test.sh
# Push images
deploy-images:
@DIMAGE="openebs/zfs-driver" ./buildscripts/push