2019-04-03 08:46:15 +00:00
# Copyright 2018 The Ceph-CSI Authors.
2018-01-09 18:59:50 +00: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 11:39:02 +00:00
.PHONY : all cephcsi
2018-01-09 18:59:50 +00:00
2019-03-13 19:21:48 +00:00
CONTAINER_CMD ?= docker
2019-05-24 11:03:33 +00:00
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 09:55:12 +00:00
CSI_IMAGE = $( CSI_IMAGE_NAME) :$( CSI_IMAGE_VERSION)
2018-01-09 18:59:50 +00:00
2019-05-24 11:03:33 +00:00
$(info cephcsi image settings : $( CSI_IMAGE_NAME ) version $( CSI_IMAGE_VERSION ) )
2020-04-21 13:31:25 +00:00
i f n d e f G I T _ C O M M I T
2019-07-12 10:18:00 +00:00
GIT_COMMIT = $( shell git rev-list -1 HEAD)
2020-04-21 06:39:03 +00:00
e n d i f
2019-07-12 10:18:00 +00:00
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 09:55:12 +00:00
# set GOARCH explicitly for cross building, default to native architecture
2020-04-21 13:31:25 +00:00
i f n d e f G O A R C H
2019-11-07 09:55:12 +00:00
GOARCH := $( shell go env GOARCH)
e n d i f
2020-04-22 12:00:34 +00:00
i f d e f B A S E _ I M A G E
BASE_IMAGE_ARG = --build-arg BASE_IMAGE = $( BASE_IMAGE)
e n d i f
2019-12-30 19:47:02 +00: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 11:39:02 +00:00
all : cephcsi
2018-01-09 18:59:50 +00:00
2020-04-17 10:23:44 +00:00
.PHONY : go -test static -check mod -check go -lint go -lint -text gosec
2020-02-17 12:15:57 +00:00
test : go -test static -check mod -check
2020-04-17 10:23:44 +00:00
static-check : go -lint go -lint -text gosec
2019-02-07 10:56:20 +00:00
go-test :
./scripts/test-go.sh
2020-02-17 12:15:57 +00:00
mod-check :
2020-04-20 09:46:01 +00: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 12:12:12 +00:00
2020-04-17 10:23:44 +00:00
go-lint :
2019-03-01 17:45:27 +00:00
./scripts/lint-go.sh
2020-04-17 10:23:44 +00:00
go-lint-text :
2019-07-18 12:12:12 +00:00
./scripts/lint-text.sh --require-all
2020-04-17 10:23:44 +00:00
gosec :
2019-08-30 10:23:10 +00:00
./scripts/gosec.sh
2018-01-09 18:59:50 +00:00
2019-05-29 10:02:16 +00:00
func-test :
2020-04-01 07:20:43 +00:00
go test -mod= vendor github.com/ceph/ceph-csi/e2e $( TESTOPTIONS)
2019-05-29 10:02:16 +00:00
2019-03-20 19:16:15 +00:00
.PHONY : cephcsi
cephcsi :
2020-02-17 12:15:57 +00:00
if [ ! -d ./vendor ] ; then ( go mod tidy && go mod vendor) ; fi
2020-04-21 06:39:03 +00:00
GOOS = linux go build -mod vendor -a -ldflags '$(LDFLAGS)' -o _output/cephcsi ./cmd/
2018-01-09 18:59:50 +00:00
2020-04-18 14:55:23 +00:00
.PHONY : containerized -build containerized -test
2019-12-30 19:47:02 +00: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 14:55:23 +00: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 19:47:02 +00: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 14:55:23 +00: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 06:39:03 +00:00
image-cephcsi :
2020-04-22 12:00:34 +00:00
$( 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) $( BASE_IMAGE_ARG)
2018-03-05 11:59:47 +00:00
2019-05-24 11:03:33 +00:00
push-image-cephcsi : image -cephcsi
2019-11-07 09:55:12 +00: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 16:00:53 +00:00
2018-01-09 18:59:50 +00:00
clean :
2020-04-18 14:55:23 +00:00
go clean -mod= vendor -r -x
2019-05-24 11:03:33 +00:00
rm -f deploy/cephcsi/image/cephcsi
rm -f _output/cephcsi
2019-12-30 19:47:02 +00:00
[ ! -f .devel-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :devel
$( RM) .devel-container-id
2020-04-18 14:55:23 +00:00
[ ! -f .test-container-id ] || $( CONTAINER_CMD) rmi $( CSI_IMAGE_NAME) :test
$( RM) .test-container-id