2019-04-03 10:46:15 +02:00
# Copyright 2018 The Ceph-CSI Authors.
2018-01-09 13:59:50 -05:00
#
# 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.
2019-05-07 17:09:02 +05:30
.PHONY : all cephcsi
2018-01-09 13:59:50 -05:00
2019-03-13 15:21:48 -04:00
CONTAINER_CMD ?= docker
2019-05-24 16:33:33 +05:30
CSI_IMAGE_NAME = $( if $( ENV_CSI_IMAGE_NAME) ,$( ENV_CSI_IMAGE_NAME) ,quay.io/cephcsi/cephcsi)
CSI_IMAGE_VERSION = $( if $( ENV_CSI_IMAGE_VERSION) ,$( ENV_CSI_IMAGE_VERSION) ,canary)
2019-11-07 17:55:12 +08:00
CSI_IMAGE = $( CSI_IMAGE_NAME) :$( CSI_IMAGE_VERSION)
2018-01-09 13:59:50 -05:00
2019-05-24 16:33:33 +05:30
$(info cephcsi image settings : $( CSI_IMAGE_NAME ) version $( CSI_IMAGE_VERSION ) )
2020-04-21 19:01:25 +05:30
i f n d e f G I T _ C O M M I T
2019-07-12 15:48:00 +05:30
GIT_COMMIT = $( shell git rev-list -1 HEAD)
2020-04-21 12:09:03 +05:30
e n d i f
2019-07-12 15:48:00 +05:30
GO_PROJECT = github.com/ceph/ceph-csi
# go build flags
LDFLAGS ?=
LDFLAGS += -X $( GO_PROJECT) /pkg/util.GitCommit= $( GIT_COMMIT)
# CSI_IMAGE_VERSION will be considered as the driver version
LDFLAGS += -X $( GO_PROJECT) /pkg/util.DriverVersion= $( CSI_IMAGE_VERSION)
2019-11-07 17:55:12 +08:00
# set GOARCH explicitly for cross building, default to native architecture
2020-04-21 19:01:25 +05:30
i f n d e f G O A R C H
2019-11-07 17:55:12 +08:00
GOARCH := $( shell go env GOARCH)
e n d i f
2019-12-30 20:47:02 +01:00
SELINUX := $( shell getenforce 2>/dev/null)
i f e q ( $( SELINUX ) , E n f o r c i n g )
SELINUX_VOL_FLAG = :z
e n d i f
2019-05-07 17:09:02 +05:30
all : cephcsi
2018-01-09 13:59:50 -05:00
2020-04-17 12:23:44 +02:00
.PHONY : go -test static -check mod -check go -lint go -lint -text gosec
2020-02-17 17:45:57 +05:30
test : go -test static -check mod -check
2020-04-17 12:23:44 +02:00
static-check : go -lint go -lint -text gosec
2019-02-07 16:26:20 +05:30
go-test :
./scripts/test-go.sh
2020-02-17 17:45:57 +05:30
mod-check :
2020-04-20 11:46:01 +02:00
@echo 'running: go mod verify'
@go mod verify && [ " $( shell sha512sum go.mod) " = "`sha512sum go.mod`" ] || ( echo "ERROR: go.mod was modified by 'go mod verify'" && false )
2019-07-18 17:42:12 +05:30
2020-04-17 12:23:44 +02:00
go-lint :
2019-03-01 10:45:27 -07:00
./scripts/lint-go.sh
2020-04-17 12:23:44 +02:00
go-lint-text :
2019-07-18 17:42:12 +05:30
./scripts/lint-text.sh --require-all
2020-04-17 12:23:44 +02:00
gosec :
2019-08-30 12:23:10 +02:00
./scripts/gosec.sh
2018-01-09 13:59:50 -05:00
2019-05-29 15:32:16 +05:30
func-test :
2020-04-01 12:50:43 +05:30
go test -mod= vendor github.com/ceph/ceph-csi/e2e $( TESTOPTIONS)
2019-05-29 15:32:16 +05:30
2019-03-20 15:16:15 -04:00
.PHONY : cephcsi
cephcsi :
2020-02-17 17:45:57 +05:30
if [ ! -d ./vendor ] ; then ( go mod tidy && go mod vendor) ; fi
2020-04-21 12:09:03 +05:30
GOOS = linux go build -mod vendor -a -ldflags '$(LDFLAGS)' -o _output/cephcsi ./cmd/
2018-01-09 13:59:50 -05:00
2020-04-18 16:55:23 +02:00
.PHONY : containerized -build containerized -test
2019-12-30 20:47:02 +01:00
containerized-build : .devel -container -id
$( CONTAINER_CMD) run --rm -v $( PWD) :/go/src/github.com/ceph/ceph-csi$( SELINUX_VOL_FLAG) $( CSI_IMAGE_NAME) :devel make -C /go/src/github.com/ceph/ceph-csi cephcsi
2020-04-18 16:55:23 +02:00
containerized-test : .test -container -id
$( CONTAINER_CMD) run --rm -v $( PWD) :/go/src/github.com/ceph/ceph-csi$( SELINUX_VOL_FLAG) $( CSI_IMAGE_NAME) :test make test
2019-12-30 20:47:02 +01:00
# create a (cached) container image with dependencied for building cephcsi
.devel-container-id : scripts /Dockerfile .devel
[ ! -f .devel-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :devel
$( CONTAINER_CMD) build -t $( CSI_IMAGE_NAME) :devel -f ./scripts/Dockerfile.devel .
$( CONTAINER_CMD) inspect -f '{{.Id}}' $( CSI_IMAGE_NAME) :devel > .devel-container-id
2020-04-18 16:55:23 +02:00
# create a (cached) container image with dependencied for testing cephcsi
.test-container-id : scripts /Dockerfile .test
[ ! -f .test-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :test
$( CONTAINER_CMD) build -t $( CSI_IMAGE_NAME) :test -f ./scripts/Dockerfile.test .
$( CONTAINER_CMD) inspect -f '{{.Id}}' $( CSI_IMAGE_NAME) :test > .test-container-id
2020-04-21 12:09:03 +05:30
image-cephcsi :
2020-04-21 19:01:25 +05:30
$( CONTAINER_CMD) build -t $( CSI_IMAGE) -f deploy/cephcsi/image/Dockerfile . --build-arg GOLANG_VERSION = 1.13.8 --build-arg CSI_IMAGE_NAME = $( CSI_IMAGE_NAME) --build-arg CSI_IMAGE_VERSION = $( CSI_IMAGE_VERSION) --build-arg GIT_COMMIT = $( GIT_COMMIT) --build-arg GO_ARCH = $( GOARCH)
2018-03-05 12:59:47 +01:00
2019-05-24 16:33:33 +05:30
push-image-cephcsi : image -cephcsi
2019-11-07 17:55:12 +08:00
$( CONTAINER_CMD) tag $( CSI_IMAGE) $( CSI_IMAGE) -$( GOARCH)
$( CONTAINER_CMD) push $( CSI_IMAGE) -$( GOARCH)
# push amd64 image as default one
if [ $( GOARCH) = amd64 ] ; then $( CONTAINER_CMD) push $( CSI_IMAGE) ; fi
2018-03-09 17:00:53 +01:00
2018-01-09 13:59:50 -05:00
clean :
2020-04-18 16:55:23 +02:00
go clean -mod= vendor -r -x
2019-05-24 16:33:33 +05:30
rm -f deploy/cephcsi/image/cephcsi
rm -f _output/cephcsi
2019-12-30 20:47:02 +01:00
[ ! -f .devel-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :devel
$( RM) .devel-container-id
2020-04-18 16:55:23 +02:00
[ ! -f .test-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :test
$( RM) .test-container-id