mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 06:20:11 +01:00
* support for multi arch container image via github actions * suffix amd64 arch tag in zfs driver image Signed-off-by: prateekpandey14 <prateek.pandey@mayadata.io>
263 lines
7.6 KiB
Makefile
263 lines
7.6 KiB
Makefile
# Copyright 2019-2020 The OpenEBS Authors. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# 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=\
|
|
golang.org/x/tools/cmd/cover \
|
|
golang.org/x/lint/golint \
|
|
github.com/axw/gocov/gocov \
|
|
gopkg.in/matm/v1/gocov-html \
|
|
github.com/onsi/ginkgo/ginkgo \
|
|
github.com/onsi/gomega/...
|
|
|
|
|
|
# The images can be pushed to any docker/image registeries
|
|
# like docker hub, quay. The registries are specified in
|
|
# the `build/push` script.
|
|
#
|
|
# The images of a project or company can then be grouped
|
|
# or hosted under a unique organization key like `openebs`
|
|
#
|
|
# Each component (container) will be pushed to a unique
|
|
# repository under an organization.
|
|
# Putting all this together, an unique uri for a given
|
|
# image comprises of:
|
|
# <registry url>/<image org>/<image repo>:<image-tag>
|
|
#
|
|
# IMAGE_ORG can be used to customize the organization
|
|
# under which images should be pushed.
|
|
# By default the organization name is `openebs`.
|
|
|
|
ifeq (${IMAGE_ORG}, )
|
|
IMAGE_ORG="openebs"
|
|
export IMAGE_ORG
|
|
endif
|
|
|
|
# Specify the date of build
|
|
DBUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
|
|
|
|
# Specify the docker arg for repository url
|
|
ifeq (${DBUILD_REPO_URL}, )
|
|
DBUILD_REPO_URL="https://github.com/openebs/zfs-localpv"
|
|
export DBUILD_REPO_URL
|
|
endif
|
|
|
|
# Specify the docker arg for website url
|
|
ifeq (${DBUILD_SITE_URL}, )
|
|
DBUILD_SITE_URL="https://openebs.io"
|
|
export DBUILD_SITE_URL
|
|
endif
|
|
|
|
|
|
ifeq (${IMAGE_TAG}, )
|
|
IMAGE_TAG = ci
|
|
export IMAGE_TAG
|
|
endif
|
|
|
|
# Determine the arch/os
|
|
ifeq (${XC_OS}, )
|
|
XC_OS:=$(shell go env GOOS)
|
|
endif
|
|
export XC_OS
|
|
ifeq (${XC_ARCH}, )
|
|
XC_ARCH:=$(shell go env GOARCH)
|
|
endif
|
|
export XC_ARCH
|
|
ARCH:=${XC_OS}_${XC_ARCH}
|
|
export ARCH
|
|
|
|
export DBUILD_ARGS=--build-arg DBUILD_DATE=${DBUILD_DATE} --build-arg DBUILD_REPO_URL=${DBUILD_REPO_URL} --build-arg DBUILD_SITE_URL=${DBUILD_SITE_URL}
|
|
|
|
# Specify the name for the binary
|
|
CSI_DRIVER=zfs-driver
|
|
|
|
.PHONY: all
|
|
all: license-check test manifests 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)
|
|
|
|
|
|
.PHONY: deps
|
|
deps:
|
|
@echo "--> Tidying up submodules"
|
|
@go mod tidy
|
|
@echo "--> Verifying submodules"
|
|
@go mod verify
|
|
|
|
.PHONY: verify-deps
|
|
verify-deps: deps
|
|
@if !(git diff --quiet HEAD -- go.sum go.mod); then \
|
|
echo "go module files are out of date, please commit the changes to go.mod and go.sum"; exit 1; \
|
|
fi
|
|
|
|
.PHONY: vendor
|
|
vendor: go.mod go.sum deps
|
|
@go mod vendor
|
|
|
|
# Bootstrap downloads tools required
|
|
# during build
|
|
.PHONY: bootstrap
|
|
bootstrap: controller-gen
|
|
@for tool in $(EXTERNAL_TOOLS) ; do \
|
|
echo "+ Installing $$tool" ; \
|
|
cd && GO111MODULE=on go get $$tool; \
|
|
done
|
|
|
|
.PHONY: controller-gen
|
|
controller-gen:
|
|
TMP_DIR=$(shell mktemp -d) && cd $$TMP_DIR && go mod init tmp && go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.8 && rm -rf $$TMP_DIR;
|
|
|
|
# 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/zfs/v1 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
|
|
|
|
manifests:
|
|
@echo "+ Generating zfs localPV crds"
|
|
$(PWD)/buildscripts/generate-manifests.sh
|
|
|
|
.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 ${IMAGE_ORG}/${CSI_DRIVER}:${IMAGE_TAG} ${DBUILD_ARGS} . && sudo docker tag ${IMAGE_ORG}/${CSI_DRIVER}:${IMAGE_TAG} quay.io/${IMAGE_ORG}/${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="${IMAGE_ORG}/zfs-driver" ./buildscripts/push
|
|
|
|
.PHONY: golint
|
|
golint:
|
|
@echo "--> Running golint"
|
|
@golint -set_exit_status $(PACKAGES)
|
|
@echo "Completed golint no recommendations !!"
|
|
@echo "--------------------------------"
|
|
@echo ""
|
|
|
|
.PHONY: license-check
|
|
license-check:
|
|
@echo "--> Checking license header..."
|
|
@licRes=$$(for file in $$(find . -type f -regex '.*\.sh\|.*\.go\|.*Docker.*\|.*\Makefile*' ! -path './vendor/*' ) ; do \
|
|
awk 'NR<=5' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \
|
|
done); \
|
|
if [ -n "$${licRes}" ]; then \
|
|
echo "license header checking failed:"; echo "$${licRes}"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "--> Done checking license."
|
|
@echo
|
|
|
|
include Makefile.buildx.mk
|