gitee.com/Mydawng/fabric-ca@v2.0.0-alpha.0.20201214145411-9ea68369cb61+incompatible/Makefile (about) 1 # Copyright IBM Corp All Rights Reserved. 2 # Copyright London Stock Exchange Group All Rights Reserved. 3 # 4 # SPDX-License-Identifier: Apache-2.0 5 # 6 # ------------------------------------------------------------- 7 # This makefile defines the following targets 8 # 9 # - all (default) - builds all targets and runs all tests 10 # - license - check all go files for license headers 11 # - fabric-ca-server - builds the fabric-ca-server executable 12 # - fabric-ca-client - builds the fabric-ca-client executable 13 # - all-tests - runs unit and integration tests 14 # - int-tests - runs the go-test based integration tests 15 # - unit-tests - runs the go-test based unit tests 16 # - checks - runs all check conditions (license, format, imports, lint and vet) 17 # - docker[-clean] - builds/cleans the fabric-ca docker image 18 # - docker-fvt[-clean] - builds/cleans the fabric-ca functional verification testing image 19 # - release - builds fabric-ca-client binary for the host platform. Binary built with this target will not support pkcs11 20 # - release-all - builds fabric-ca-client binary for all target platforms. Binaries built with this target will not support pkcs11 21 # - dist - builds release package for the host platform 22 # - dist-all - builds release packages for all target platforms 23 # - clean - cleans the build area 24 # - release-clean - cleans the binaries for all target platforms 25 # - dist-clean - cleans release packages for all target platforms 26 # - clean-all - cleans the build area and release packages 27 # - docker-thirdparty - pulls thirdparty images (postgres) 28 # - gotools - Installs go tools, such as: golint, goimports, gocov 29 # - vendor - vendors third-party packages 30 31 PROJECT_NAME = fabric-ca 32 ALPINE_VER ?= 3.12 33 DEBIAN_VER ?= stretch 34 BASE_VERSION = 2.0.0 35 PREV_VERSION = 2.0.0-alpha 36 IS_RELEASE = false 37 38 ARCH=$(shell go env GOARCH) 39 MARCH=$(shell go env GOOS)-$(shell go env GOARCH) 40 STABLE_TAG ?= $(ARCH)-$(BASE_VERSION)-stable 41 42 ifneq ($(IS_RELEASE),true) 43 EXTRA_VERSION ?= snapshot-$(shell git rev-parse --short HEAD) 44 PROJECT_VERSION=$(BASE_VERSION)-$(EXTRA_VERSION) 45 FABRIC_TAG ?= latest 46 else 47 PROJECT_VERSION=$(BASE_VERSION) 48 FABRIC_TAG ?= $(ARCH)-$(BASE_VERSION) 49 endif 50 51 PG_VER=11 52 53 PKGNAME = github.com/hyperledger/$(PROJECT_NAME) 54 55 METADATA_VAR = Version=$(PROJECT_VERSION) 56 57 GO_VER = 1.15.5 58 GO_SOURCE := $(shell find . -name '*.go') 59 GO_LDFLAGS = $(patsubst %,-X $(PKGNAME)/lib/metadata.%,$(METADATA_VAR)) 60 export GO_LDFLAGS 61 62 IMAGES = $(PROJECT_NAME) 63 FVTIMAGE = $(PROJECT_NAME)-fvt 64 65 RELEASE_PLATFORMS = linux-amd64 darwin-amd64 windows-amd64 66 RELEASE_PKGS = fabric-ca-client fabric-ca-server 67 68 TOOLS = build/tools 69 70 path-map.fabric-ca-client := cmd/fabric-ca-client 71 path-map.fabric-ca-server := cmd/fabric-ca-server 72 73 include docker-env.mk 74 75 all: docker unit-tests 76 77 include gotools.mk 78 79 docker: $(patsubst %,build/image/%/$(DUMMY), $(IMAGES)) 80 81 docker-fvt: $(patsubst %,build/image/%/$(DUMMY), $(FVTIMAGE)) 82 83 changelog: 84 ./scripts/changelog.sh v$(PREV_VERSION) HEAD v$(BASE_VERSION) 85 86 checks: license vet lint format imports 87 88 license: .FORCE 89 @scripts/check_license 90 91 format: .FORCE 92 @scripts/check_format 93 94 imports: $(TOOLS)/goimports 95 @scripts/check_imports 96 97 lint: $(TOOLS)/golint 98 @scripts/check_lint 99 100 vet: .FORCE 101 @scripts/check_vet 102 103 docs: gotools fabric-ca-client fabric-ca-server 104 @scripts/regenDocs 105 106 fabric-ca-client: bin/fabric-ca-client 107 fabric-ca-server: bin/fabric-ca-server 108 109 bin/%: $(GO_SOURCE) 110 @echo "Building ${@F} in bin directory ..." 111 @mkdir -p bin && go build -o bin/${@F} -tags "pkcs11" -ldflags "$(GO_LDFLAGS)" $(PKGNAME)/$(path-map.${@F}) 112 @echo "Built bin/${@F}" 113 114 build/image/fabric-ca/$(DUMMY): 115 @mkdir -p $(@D) 116 $(eval TARGET = ${patsubst build/image/%/$(DUMMY),%,${@}}) 117 @echo "Docker: building $(TARGET) image" 118 $(DBUILD) -f images/$(TARGET)/Dockerfile \ 119 --build-arg GO_VER=${GO_VER} \ 120 --build-arg GO_TAGS=pkcs11 \ 121 --build-arg GO_LDFLAGS="${DOCKER_GO_LDFLAGS}" \ 122 --build-arg ALPINE_VER=${ALPINE_VER} \ 123 -t $(DOCKER_NS)/$(TARGET) . 124 docker tag $(DOCKER_NS)/$(TARGET) $(DOCKER_NS)/$(TARGET):$(BASE_VERSION) 125 docker tag $(DOCKER_NS)/$(TARGET) $(DOCKER_NS)/$(TARGET):$(DOCKER_TAG) 126 @touch $@ 127 128 build/image/fabric-ca-fvt/$(DUMMY): 129 @mkdir -p $(@D) 130 $(eval TARGET = ${patsubst build/image/%/$(DUMMY),%,${@}}) 131 @echo "Docker: building $(TARGET) image" 132 $(DBUILD) -f images/$(TARGET)/Dockerfile \ 133 --build-arg GO_VER=${GO_VER} \ 134 --build-arg GO_TAGS=pkcs11 \ 135 --build-arg GO_LDFLAGS="${DOCKER_GO_LDFLAGS}" \ 136 --build-arg PG_VER=${PG_VER} \ 137 -t $(DOCKER_NS)/$(TARGET) . 138 @touch $@ 139 140 141 all-tests: unit-tests int-tests 142 143 int-tests: gotools fabric-ca-server fabric-ca-client 144 @scripts/run_integration_tests 145 146 unit-tests: gotools fabric-ca-server fabric-ca-client 147 @scripts/run_unit_tests 148 149 unit-test: unit-tests 150 151 vendor: .FORCE 152 @echo > go.mod 153 @go mod tidy -modfile vendor.mod 154 @go mod vendor -modfile vendor.mod 155 @rm go.mod 156 157 container-tests: docker 158 159 load-test: docker-clean docker-fvt 160 @docker run -p 8888:8888 -p 8054:8054 -v $(shell pwd):/opt/gopath/src/github.com/hyperledger/fabric-ca -e FABRIC_CA_SERVER_PROFILE_PORT=8054 --name loadTest -td hyperledger/fabric-ca-fvt test/fabric-ca-load-tester/launchServer.sh 3 161 @test/fabric-ca-load-tester/runLoad.sh -B 162 @docker kill loadTest 163 164 fvt-tests: docker-clean docker-fvt 165 @docker run -v $(shell pwd):/opt/gopath/src/github.com/hyperledger/fabric-ca ${DOCKER_NS}/fabric-ca-fvt 166 167 %-docker-clean: 168 $(eval TARGET = ${patsubst %-docker-clean,%,${@}}) 169 -docker images -q $(DOCKER_NS)/$(TARGET):latest | xargs -I '{}' docker rmi -f '{}' 170 -@rm -rf build/image/$(TARGET) ||: 171 172 docker-clean: $(patsubst %,%-docker-clean, $(IMAGES) $(PROJECT_NAME)-fvt) 173 @rm -rf build/docker/bin/* ||: 174 175 native: fabric-ca-client fabric-ca-server 176 177 release: $(patsubst %,release/%, $(MARCH)) 178 release-all: $(patsubst %,release/%, $(RELEASE_PLATFORMS)) 179 180 release/windows-amd64: GOOS=windows 181 release/windows-amd64: CC=/usr/bin/x86_64-w64-mingw32-gcc 182 release/windows-amd64: $(patsubst %,release/windows-amd64/bin/%, $(RELEASE_PKGS)) 183 184 release/darwin-amd64: GOOS=darwin 185 release/darwin-amd64: CC=/usr/bin/clang 186 release/darwin-amd64: $(patsubst %,release/darwin-amd64/bin/%, $(RELEASE_PKGS)) 187 188 release/linux-amd64: GOOS=linux 189 release/linux-amd64: $(patsubst %,release/linux-amd64/bin/%, $(RELEASE_PKGS)) 190 191 release/%-amd64: GOARCH=amd64 192 193 release/linux-%: GOOS=linux 194 195 release/%/bin/fabric-ca-client: GO_TAGS+= caclient 196 release/%/bin/fabric-ca-client: $(GO_SOURCE) 197 @echo "Building $@ for $(GOOS)-$(GOARCH)" 198 mkdir -p $(@D) 199 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $(abspath $@) -tags "$(GO_TAGS)" -ldflags "$(GO_LDFLAGS)" $(PKGNAME)/$(path-map.$(@F)) 200 201 release/%/bin/fabric-ca-server: $(GO_SOURCE) 202 @echo "Building $@ for $(GOOS)-$(GOARCH)" 203 mkdir -p $(@D) 204 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $(abspath $@) -tags "$(GO_TAGS)" -ldflags "$(GO_LDFLAGS)" $(PKGNAME)/$(path-map.$(@F)) 205 206 # Pull thirdparty docker images 207 # Currently the target is available but unused. If you are implementing a new 208 # test using the ifrit DB runners, you must add the docker-thirdparty target 209 # to the test target you are running i.e. (unit-tests, int-tests, all-tests). 210 .PHONY: docker-thirdparty 211 docker-thirdparty: 212 docker pull postgres:9.6 213 docker pull mysql:5.7 214 215 .PHONY: dist 216 dist: dist-clean release 217 cd release/$(MARCH) && tar -czvf hyperledger-fabric-ca-$(MARCH)-$(PROJECT_VERSION).tar.gz * 218 dist-all: dist-clean release-all $(patsubst %,dist/%, $(RELEASE_PLATFORMS)) 219 dist/windows-amd64: 220 cd release/windows-amd64 && tar -czvf hyperledger-fabric-ca-windows-amd64-$(PROJECT_VERSION).tar.gz * 221 dist/darwin-amd64: 222 cd release/darwin-amd64 && tar -czvf hyperledger-fabric-ca-darwin-amd64-$(PROJECT_VERSION).tar.gz * 223 dist/linux-amd64: 224 cd release/linux-amd64 && tar -czvf hyperledger-fabric-ca-linux-amd64-$(PROJECT_VERSION).tar.gz * 225 226 .PHONY: clean 227 clean: docker-clean release-clean 228 -@rm -rf build bin ||: 229 230 .PHONY: clean-all 231 clean-all: clean dist-clean 232 233 %-release-clean: 234 $(eval TARGET = ${patsubst %-release-clean,%,${@}}) 235 -@rm -rf release/$(TARGET) 236 release-clean: $(patsubst %,%-release-clean, $(RELEASE_PLATFORMS)) 237 238 .PHONY: dist-clean 239 dist-clean: 240 -@rm -rf release/windows-amd64/hyperledger-fabric-ca-windows-amd64-$(PROJECT_VERSION).tar.gz ||: 241 -@rm -rf release/darwin-amd64/hyperledger-fabric-ca-darwin-amd64-$(PROJECT_VERSION).tar.gz ||: 242 -@rm -rf release/linux-amd64/hyperledger-fabric-ca-linux-amd64-$(PROJECT_VERSION).tar.gz ||: 243 244 .FORCE: