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: