mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-30 16:02:17 +08:00 
			
		
		
		
	* kubernetes for kustomize learning Signed-off-by: Xinwei Xiong(cubxxw) <3293172751nss@gmail.com> * feat(main): add openim server test cicd * feat(main): add openim scripts token --------- Signed-off-by: Xinwei Xiong(cubxxw) <3293172751nss@gmail.com>
		
			
				
	
	
		
			188 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # Copyright © 2023 OpenIMSDK.
 | |
| #
 | |
| # 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.
 | |
| 
 | |
| # ==============================================================================
 | |
| # Makefile helper functions for common tasks
 | |
| #
 | |
| 
 | |
| SHELL := /bin/bash
 | |
| GO:=go
 | |
| DIRS=$(shell ls)
 | |
| DEBUG ?= 0
 | |
| GIT_TAG := $(shell git describe --exact-match --tags --abbrev=0  2> /dev/null || echo untagged)
 | |
| GIT_COMMIT ?= $(shell git rev-parse --short HEAD || echo "0.0.0")
 | |
| BUILD_DATE ?=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')	# Blank error: date '+%FT %T %z':"buildDate":"2023-03-31T 20:05:43 +0800"
 | |
| 
 | |
| # include the common makefile
 | |
| COMMON_SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
 | |
| 
 | |
| SRC = $(shell find . -type f -name '*.go' -not -path "./vendor/*")
 | |
| 
 | |
| # ROOT_DIR: root directory of the code base
 | |
| ifeq ($(origin ROOT_DIR),undefined)
 | |
| ROOT_DIR := $(abspath $(shell cd $(COMMON_SELF_DIR)/../.. && pwd -P))
 | |
| endif
 | |
| 
 | |
| # OUTPUT_DIR: The directory where the build output is stored.
 | |
| ifeq ($(origin OUTPUT_DIR),undefined)
 | |
| OUTPUT_DIR := $(ROOT_DIR)/_output
 | |
| $(shell mkdir -p $(OUTPUT_DIR))
 | |
| endif
 | |
| 
 | |
| # BIN_DIR: Directory where executable files are stored.
 | |
| ifeq ($(origin BIN_DIR),undefined)
 | |
| BIN_DIR := $(OUTPUT_DIR)/bin
 | |
| $(shell mkdir -p $(BIN_DIR))
 | |
| endif
 | |
| 
 | |
| # BIN_TOOLS_DIR: Directory where executable files are stored.
 | |
| ifeq ($(origin BIN_TOOLS_DIR),undefined)
 | |
| BIN_TOOLS_DIR := $(BIN_DIR)/tools
 | |
| $(shell mkdir -p $(BIN_TOOLS_DIR))
 | |
| endif
 | |
| 
 | |
| # LOGS_DIR: Directory where log files are stored.
 | |
| ifeq ($(origin LOGS_DIR),undefined)
 | |
| LOGS_DIR := $(OUTPUT_DIR)/logs
 | |
| $(shell mkdir -p $(LOGS_DIR))
 | |
| endif
 | |
| 
 | |
| # TOOLS_DIR: The directory where tools are stored for build and testing.
 | |
| ifeq ($(origin TOOLS_DIR),undefined)
 | |
| TOOLS_DIR := $(OUTPUT_DIR)/tools
 | |
| $(shell mkdir -p $(TOOLS_DIR))
 | |
| endif
 | |
| 
 | |
| # TMP_DIR: directory where temporary files are stored.
 | |
| ifeq ($(origin TMP_DIR),undefined)
 | |
| TMP_DIR := $(OUTPUT_DIR)/tmp
 | |
| $(shell mkdir -p $(TMP_DIR))
 | |
| endif
 | |
| 
 | |
| ifeq ($(origin VERSION), undefined)
 | |
| # VERSION := $(shell git describe --tags --always --match='v*')
 | |
| # git describe --tags --always --match="v*" --dirty
 | |
| VERSION := $(shell git describe --tags --always --match="v*" --dirty | sed 's/-/./g')	#v2.3.3.631.g00abdc9b.dirty
 | |
| # v2.3.3: git tag
 | |
| endif
 | |
| 
 | |
| # Check if the tree is dirty. default to dirty(maybe u should commit?)
 | |
| GIT_TREE_STATE:="dirty"
 | |
| ifeq (, $(shell git status --porcelain 2>/dev/null))
 | |
| 	GIT_TREE_STATE="clean"
 | |
| endif
 | |
| GIT_COMMIT:=$(shell git rev-parse HEAD)
 | |
| 
 | |
| # Minimum test coverage
 | |
| # can u use make cover COVERAGE=90
 | |
| ifeq ($(origin COVERAGE),undefined)
 | |
| COVERAGE := 60
 | |
| endif
 | |
| 
 | |
| # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
 | |
| ifeq (,$(shell go env GOBIN))
 | |
| GOBIN=$(shell go env GOPATH)/bin
 | |
| else
 | |
| GOBIN=$(shell go env GOBIN)
 | |
| endif
 | |
| 
 | |
| # The OS must be linux when building docker images
 | |
| # PLATFORMS ?= linux_amd64 linux_arm64
 | |
| # The OS can be linux/windows/darwin when building binaries
 | |
| PLATFORMS ?= linux_s390x linux_mips64 linux_mips64le darwin_amd64 windows_amd64 linux_amd64 linux_arm64 linux_ppc64le # wasip1_wasm
 | |
| 
 | |
| # set a specific PLATFORM, defaults to the host platform
 | |
| ifeq ($(origin PLATFORM), undefined)
 | |
| 	ifeq ($(origin GOARCH), undefined)
 | |
| 		GOARCH := $(shell go env GOARCH)
 | |
| 	endif
 | |
| 	# Determine the host OS
 | |
| 	GOOS := $(shell go env GOOS)
 | |
| 	PLATFORM := $(GOOS)_$(GOARCH)
 | |
| 	# Use the host OS and GOARCH as the default when building images
 | |
| 	IMAGE_PLAT := $(PLATFORM)
 | |
| else
 | |
| 	# Parse the PLATFORM variable
 | |
| 	GOOS := $(word 1, $(subst _, ,$(PLATFORM)))
 | |
| 	GOARCH := $(word 2, $(subst _, ,$(PLATFORM)))
 | |
| 	IMAGE_PLAT := $(PLATFORM)
 | |
| endif
 | |
| 
 | |
| 
 | |
| # Protobuf file storage path
 | |
| APIROOT=$(ROOT_DIR)/pkg/proto
 | |
| 
 | |
| # Linux command settings
 | |
| # TODO: Whether you need to join utils?
 | |
| FIND := find . ! -path './utils/*' ! -path './vendor/*' ! -path './third_party/*'
 | |
| XARGS := xargs -r --no-run-if-empty
 | |
| 
 | |
| # Linux command settings-CODE DIRS Copyright
 | |
| CODE_DIRS := $(ROOT_DIR)/pkg $(ROOT_DIR)/cmd $(ROOT_DIR)/config $(ROOT_DIR)/.docker-compose_cfg $(ROOT_DIR)/internal $(ROOT_DIR)/scripts $(ROOT_DIR)/test $(ROOT_DIR)/.github $(ROOT_DIR)/build $(ROOT_DIR)/tools $(ROOT_DIR)/deployments
 | |
| FINDS := find $(CODE_DIRS)
 | |
| 
 | |
| # Makefile settings: Select different behaviors by determining whether V option is set
 | |
| ifndef V
 | |
| MAKEFLAGS += --no-print-directory
 | |
| endif
 | |
| 
 | |
| # COMMA: Concatenate multiple strings to form a list of strings
 | |
| COMMA := ,
 | |
| # SPACE: Used to separate strings
 | |
| SPACE :=
 | |
| # SPACE: Replace multiple consecutive Spaces with a single space
 | |
| SPACE +=
 | |
| 
 | |
| # ==============================================================================
 | |
| # Makefile helper functions for common tasks
 | |
| 
 | |
| # Help information for the makefile package
 | |
| define makehelp
 | |
| 	@printf "\n\033[1mUsage: make <TARGETS> <OPTIONS> ...\033[0m\n\n\\033[1mTargets:\\033[0m\n\n"
 | |
| 	@sed -n 's/^##//p' $< | awk -F':' '{printf "\033[36m%-28s\033[0m %s\n", $$1, $$2}' | sed -e 's/^/ /'
 | |
| 	@printf "\n\033[1m$$USAGE_OPTIONS\033[0m\n"
 | |
| endef
 | |
| 
 | |
| # Here are some examples of builds
 | |
| define MAKEFILE_EXAMPLE
 | |
| # make build BINS=openim-api                                     Only a single openim-api binary is built.
 | |
| # make -j (nproc) all                                            Run tidy gen add-copyright format lint cover build concurrently.
 | |
| # make gen                                                       Generate all necessary files.
 | |
| # make release                                                   Build release binaries for all platforms.
 | |
| # make verify-copyright                                          Verify the license headers for all files.
 | |
| # make install-deepcopy-gen                                      Install deepcopy-gen tools if the license is missing.
 | |
| # make build BINS=openim-api V=1 DEBUG=1                         Build debug binaries for only openim-api.
 | |
| # make multiarch -j PLATFORMS="linux_arm64 linux_amd64" V=1      Build binaries for both platforms.
 | |
| # make image
 | |
| endef
 | |
| export MAKEFILE_EXAMPLE
 | |
| 
 | |
| # Define all help functions	@printf "\n\033[1mCurrent openim-api version information: $(shell openim-api version):\033[0m\n\n"
 | |
| define makeallhelp
 | |
| 	@printf "\n\033[1mMake example:\033[0m\n\n"
 | |
| 	$(call MAKEFILE_EXAMPLE)
 | |
| 	@printf "\n\033[1mAriables:\033[0m\n\n"
 | |
| 	@echo "  DEBUG: $(DEBUG)"
 | |
| 	@echo "  BINS: $(BINS)"
 | |
| 	@echo "  PLATFORMS: $(PLATFORMS)"
 | |
| 	@echo "  V: $(V)"
 | |
| endef
 | |
| 
 | |
| # Help information for other makefile packages
 | |
| CUT_OFF?="---------------------------------------------------------------------------------"
 | |
| HELP_NAME:=$(shell basename $(MAKEFILE_LIST))
 | |
| define smallhelp
 | |
| 	@sed -n 's/^##//p' $< | awk -F':' '{printf "\033[36m%-35s\033[0m %s\n", $$1, $$2}' | sed -e 's/^/ /'
 | |
| 	@echo $(CUT_OFF)
 | |
| endef |