This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch refactor-with-go
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git


The following commit(s) were added to refs/heads/refactor-with-go by this push:
     new d4f76054 optimize makefile (#1145)
d4f76054 is described below

commit d4f7605486337d8adb32548984084651d97ff43d
Author: Jun <[email protected]>
AuthorDate: Fri May 26 14:16:59 2023 +0800

    optimize makefile (#1145)
---
 Makefile                  | 133 ++++++++++++++++++++++++++++++++++------------
 README.md                 |  45 ++++++++++------
 dubbo-admin-ui/Dockerfile |   4 +-
 3 files changed, 130 insertions(+), 52 deletions(-)

diff --git a/Makefile b/Makefile
index 74ede81a..f6d64af7 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,7 @@ REGISTRY_PASSWORD?=""
 DUBBO_ADMIN_IMG ?= 
"${REGISTRY}/${REGISTRY_NAMESPACE}/dubbo-admin:${GIT_VERSION}"
 DUBBO_AUTHORITY_IMG ?= 
"${REGISTRY}/${REGISTRY_NAMESPACE}/dubbo-ca:${GIT_VERSION}"
 DUBBO_ADMIN_UI_IMG ?= 
"${REGISTRY}/${REGISTRY_NAMESPACE}/dubbo-admin-ui:${GIT_VERSION}"
+DUBBO_DUBBOCTL_BUILDX_DIR ?= "./bin/dubboctl"
 
 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is 
set)
 ifeq (,$(shell go env GOBIN))
@@ -59,12 +60,16 @@ $(LOCALBIN):
 KUSTOMIZE ?= $(LOCALBIN)/kustomize
 CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
 SWAGGER ?= $(LOCALBIN)/swag
+GOLANG_LINT ?= $(LOCALBIN)/golangci-lint
+GOFUMPT  ?= $(LOCALBIN)/gofumpt
+
 
 ## Tool Versions
 KUSTOMIZE_VERSION ?= v3.8.7
 CONTROLLER_TOOLS_VERSION ?= v0.10.0
 SWAGGER_VERSION ?= v1.16.1
-
+GOLANG_LINT_VERSION ?= v1.48.0
+GOFUMPT_VERSION ?= latest
 ## docker buildx support platform
 PLATFORMS ?= linux/arm64,linux/amd64
 
@@ -101,8 +106,8 @@ dubbo-admin-swagger: swagger-install ## Generate 
dubbo-admin swagger docs.
        @rm -f hack/swagger/docs.go hack/swagger/swagger.yaml
 
 .PHONY: fmt
-fmt: ## Run go fmt against code.
-       go fmt ./...
+fmt: gofumpt-install ## Run gofumpt against code.
+       $(GOFUMPT) -l -w .
 
 .PHONY: vet
 vet: ## Run go vet against code.
@@ -114,43 +119,79 @@ tidy:
        @go mod tidy
 
 .PHONY: lint
-lint: golangci-lint  ## Run golang lint against code
-       @$(GOLANG_LINT) run ./...
+lint: golangci-lint-install  ## Run golang lint against code
+       GO111MODULE=on $(GOLANG_LINT) run ./... --timeout=30m -v  --disable-all 
--enable=gofumpt --enable=govet --enable=staticcheck --enable=ineffassign 
--enable=misspell
 
 .PHONY: test
-test: fmt vet  ## Run tests.
+test: fmt vet  ## Run all tests.
        go test -coverprofile coverage.out -covermode=atomic ./...
 
+
+.PHONY: test-dubboctl
+test-dubboctl: fmt vet  ## Run tests for dubboctl
+       go test -coverprofile coverage.out -covermode=atomic 
github.com/apache/dubbo-admin/pkg/dubboctl/...
+
+.PHONY: test-admin
+test-admin: fmt vet  ## Run tests for admin
+       go test -coverprofile coverage.out -covermode=atomic 
github.com/apache/dubbo-admin/pkg/admin/...
+
+.PHONY: test-authority
+test-authority: fmt vet  ## Run tests for authority
+       go test -coverprofile coverage.out -covermode=atomic 
github.com/apache/dubbo-admin/pkg/authority/...
+
+
 .PHONY: echoLDFLAGS
 echoLDFLAGS:
        @echo $(LDFLAGS)
 
-
 .PHONY: build
-build: dubbo-admin dubbo-authority
+build: build-admin build-authority build-dubboctl ## Build binary with the 
dubbo admin, authority, and dubboctl
 
 .PHONY: all
-all: generate test dubbo-admin dubbo-authority
+all: generate test build
 
-.PHONY: dubbo-admin
-dubbo-admin: ## Build binary with the dubbo admin.
-       CGO_ENABLED=0 GOOS=$(GOOS) go build -ldflags $(LDFLAGS) -o bin/admi 
cmd/admin/main.go
+.PHONY: build-admin
+build-admin:  ## Build binary with the dubbo admin.
+       CGO_ENABLED=0 GOOS=$(GOOS) go build -ldflags $(LDFLAGS) -o bin/admin 
cmd/admin/main.go
 
-.PHONY: dubbo-authority
-dubbo-authority: ## Build binary with the dubbo authority.
+.PHONY: build-authority
+build-authority: ## Build binary with the dubbo authority.
        CGO_ENABLED=0 GOOS=$(GOOS) go build -ldflags $(LDFLAGS) -o 
bin/authority cmd/authority/main.go
 
-.PHONY: images
-images: image-dubbo-admin image-dubbo-authority  image-dubbo-admin-ui
+.PHONY: build-dubboctl
+build-dubboctl: ## Build binary with the dubbo dubboctl.
+       CGO_ENABLED=0 GOOS=$(GOOS) go build -ldflags $(LDFLAGS) -o bin/dubboctl 
cmd/dubboctl/main.go
+
+.PHONY: build-ui
+build-ui: ## Build  the distribution of the admin ui pages.
+       docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg 
PKGNAME=dubbo-admin-ui -t ${DUBBO_ADMIN_UI_IMG} ./dubbo-admin-ui -o 
type=local,dest=./bin/build/dubbo-admin-ui
+       rm -f -R ./cmd/ui/dist/*
+       cp -R ./bin/build/dubbo-admin-ui/usr/share/nginx/html/* ./cmd/ui/dist/
+       rm -f -R ./bin/build/dubbo-admin-ui
 
-.PHONY: image-dubbo-admin
-image-dubbo-admin: ## Build docker image with the dubbo admin.
+.PHONY: image
+image: image-admin image-authority image-admin-ui ## Build docker image with 
the dubbo admin, authority and admin-ui
+
+.PHONY: image-admin
+image-admin: ## Build docker image with the dubbo admin.
        docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg PKGNAME=admin 
-t ${DUBBO_ADMIN_IMG} .
 
+.PHONY: image-authority
+image-authority: ## Build docker image with the dubbo authority.
+       docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg 
PKGNAME=authority -t ${DUBBO_AUTHORITY_IMG} .
+
+.PHONY: image-ui
+image-ui: ## Build docker image with the dubbo admin ui.
+       docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg 
PKGNAME=dubbo-admin-ui -t ${DUBBO_ADMIN_UI_IMG} ./dubbo-admin-ui
+
 
 
-.PHONY: image-dubbo-admin-buildx
-image-dubbo-admin-buildx:  ## Build and push docker image for the dubbo admin 
for cross-platform support
+.PHONY: buildx
+buildx: buildx-admin buildx-authority  ## Build and push docker cross-platform 
image for the dubbo admin and authority
+
+
+.PHONY: buildx-admin
+buildx-admin:  ## Build and push docker image with the dubbo admin for 
cross-platform support
        # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into 
Dockerfile.cross, and preserve the original Dockerfile
        sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 
1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > 
Dockerfile_admin.cross
        - docker buildx create --name project-dubbo-admin-builder
@@ -160,12 +201,8 @@ image-dubbo-admin-buildx:  ## Build and push docker image 
for the dubbo admin fo
        - docker buildx rm project-dubbo-admin-builder
        rm Dockerfile_admin.cross
 
-.PHONY: image-dubbo-authority
-image-dubbo-authority: ## Build docker image with the dubbo authority.
-       docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg 
PKGNAME=authority -t ${DUBBO_AUTHORITY_IMG} .
-
-.PHONY: image-dubbo-authority-buildx
-image-dubbo-authority-buildx:  ## Build and push docker image for the dubbo 
authority for cross-platform support
+.PHONY: buildx-authority
+buildx-authority:  ## Build and push docker image with the dubbo authority for 
cross-platform support
        # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into 
Dockerfile.cross, and preserve the original Dockerfile
        sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 
1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > 
Dockerfile_authority.cross
        - docker buildx create --name project-dubbo-authority-builder
@@ -175,13 +212,27 @@ image-dubbo-authority-buildx:  ## Build and push docker 
image for the dubbo auth
        - docker buildx rm project-dubbo-authority-builder
        rm Dockerfile_authority.cross
 
-.PHONY: image-dubbo-admin-ui
-image-dubbo-admin-ui: ## Build docker image with the dubbo-admin-ui.
-       docker build --build-arg LDFLAGS=$(LDFLAGS) --build-arg 
PKGNAME=dubbo-admin-ui -t ${DUBBO_ADMIN_UI_IMG} ./dubbo-admin-ui
+.PHONY: buildx-dubboctl
+buildx-dubboctl:  ## Build the dubboctl distribution for cross-platform support
+       @rm -f -R $(DUBBO_DUBBOCTL_BUILDX_DIR)
+       @mkdir $(DUBBO_DUBBOCTL_BUILDX_DIR)
+       CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags $(LDFLAGS) -o 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/linux/amd64/dubboctl cmd/dubboctl/main.go
+       CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags $(LDFLAGS) -o 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/linux/arm64/dubboctl cmd/dubboctl/main.go
+       CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags $(LDFLAGS) -o 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/darwin/amd64/dubboctl cmd/dubboctl/main.go
+       CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags $(LDFLAGS) -o 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/darwin/arm64/dubboctl cmd/dubboctl/main.go
+       CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags $(LDFLAGS) -o 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/windows/amd64/dubboctl.exe cmd/dubboctl/main.go
+
+       tar -cvzf 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/dubboctl-${GIT_VERSION}-linux-amd64.tar.gz  -C 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/linux/amd64/ dubboctl
+       tar -cvzf 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/dubboctl-${GIT_VERSION}-linux-arm64.tar.gz  -C 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/linux/arm64/ dubboctl
+
+       tar -cvzf 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/dubboctl-${GIT_VERSION}-osx-arm64.tar.gz  -C 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/darwin/arm64/ dubboctl
+       tar -cvzf 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/dubboctl-${GIT_VERSION}-osx.tar.gz  -C 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/darwin/amd64/ dubboctl
+       zip  $(DUBBO_DUBBOCTL_BUILDX_DIR)/dubboctl-${GIT_VERSION}-win.zip -D -j 
$(DUBBO_DUBBOCTL_BUILDX_DIR)/windows/amd64/dubboctl.exe
+
 
 
 .PHONY: push-images
-push-images: push-image-admin push-image-admin-ui push-image-authority
+push-images: push-image-admin push-image-ui push-image-authority
 
 .PHONY: push-image-admin
 push-image-admin: ## Push admin images.
@@ -197,8 +248,8 @@ ifneq ($(REGISTRY_USER_NAME), "")
 endif
        docker push ${DUBBO_AUTHORITY_IMG}
 
-.PHONY: push-image-admin-ui
-push-image-admin-ui: ## Push admin ui images.
+.PHONY: push-image-ui
+push-image-ui: ## Push admin ui images.
 ifneq ($(REGISTRY_USER_NAME), "")
        docker login -u $(REGISTRY_USER_NAME) -p $(REGISTRY_PASSWORD) 
${REGISTRY}
 endif
@@ -206,6 +257,7 @@ endif
 
 
 
+
 KUSTOMIZE_INSTALL_SCRIPT ?= 
"https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh";
 .PHONY: kustomize
 kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong 
version is installed, it will be removed before downloading.
@@ -226,4 +278,19 @@ $(CONTROLLER_GEN): $(LOCALBIN)
 swagger-install: $(SWAGGER) ## Download swagger locally if necessary.
 $(SWAGGER): $(LOCALBIN)
        test -s $(LOCALBIN)/swag  || \
-       GOBIN=$(LOCALBIN) go install  
github.com/swaggo/swag/cmd/swag@$(SWAGGER_VERSION)
\ No newline at end of file
+       GOBIN=$(LOCALBIN) go install  
github.com/swaggo/swag/cmd/swag@$(SWAGGER_VERSION)
+
+
+GOLANG_LINT_INSTALL_SCRIPT ?= 
"https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh";
+.PHONY: golangci-lint-install
+golangci-lint-install: $(GOLANG_LINT) ## Download golangci lint locally if 
necessary.
+$(GOLANG_LINT): $(LOCALBIN)
+       test -s $(LOCALBIN)/golangci-lint || \
+       GOBIN=$(LOCALBIN) go install 
github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANG_LINT_VERSION)
+
+
+.PHONY: gofumpt-install
+gofumpt-install: $(GOFUMPT) ## Download gofumpt locally if necessary.
+$(GOFUMPT): $(LOCALBIN)
+       test -s $(LOCALBIN)/gofumpt || \
+       GOBIN=$(LOCALBIN) go install mvdan.cc/gofumpt@$(GOFUMPT_VERSION)
\ No newline at end of file
diff --git a/README.md b/README.md
index 8d93c390..e58c3e70 100644
--- a/README.md
+++ b/README.md
@@ -50,42 +50,53 @@ Open the browser and visit http://localhost:38080/admin/ to 
open the console.
 ## 贡献代码
 开发过程中,可以使用预先定义好的 Makefile 任务来完成代码检查、测试等一系列工作。以下是一些命令说明
 
-### 代码检查
-To run all code formatting, linting and vetting tools use the target:
-
+### 代码格式化
 ```shell
-make check
+make fmt   #Run gofumpt against code.
 ```
 
-### 测试代码
-For all tests, run:
+### 代码检查
+To run all code formatting, linting and vetting tools use the target:
 
 ```shell
-make test
+make lint     #Run golang lint against code
 ```
 
-And you can run tests that are specific to a part of Admin by appending the 
app name as shown below:
+### 测试代码
 
 ```shell
-make test/dubboctl
+make test             #Run all tests
+make test-dubboctl    #Run tests for dubboctl
+make test-admin       #Run tests for admin
+make test-authority   #Run tests for authority
 ```
 
 ### Swagger API
 ```shell
-make swagger
+make  dubbo-admin-swagger  #Generate dubbo-admin swagger docs in hack/swagger
 ```
 
 ### 打包
-To build all the binaries run:
-
 ```shell
-make build
+make build            #Build binary with the dubbo admin, authority, and 
dubboctl
+make build-admin      #Build binary with the dubbo admin.
+make build-authority  #Build binary with the dubbo authority.
+make build-dubboctl   #Build binary with the dubbo dubboctl.
+make build-ui         #Build the distribution of the admin ui pages.
 ```
-
-Like `make test`, you can append the app name to the target to build a 
specific binary. For example, here is how you would build the binary for only 
dubboctl:
-
+### 生成镜像
+```shell
+make image            #Build docker image with the dubbo admin, authority and 
admin-ui
+make image-admin      #Build docker image with the dubbo admin.
+make image-authority  #Build docker image with the dubbo authority.
+make image-ui         #Build docker image with the dubbo admin ui.
+```
+### 多平台生成镜像和打包
 ```shell
-make build/dubboctl
+make buildx            #Build and push docker cross-platform image for the 
dubbo admin and authority
+make buildx-admin      #Build and push docker image with the dubbo admin for 
cross-platform support
+make buildx-authority  #Build and push docker image with the dubbo authority 
for cross-platform support
+make buildx-dubboctl   #Build the dubboctl distribution for cross-platform 
support
 ```
 
 ## 发布指南
diff --git a/dubbo-admin-ui/Dockerfile b/dubbo-admin-ui/Dockerfile
index 1d1ca67d..42b0addc 100644
--- a/dubbo-admin-ui/Dockerfile
+++ b/dubbo-admin-ui/Dockerfile
@@ -27,9 +27,9 @@ RUN npm run build
 # -- RELEASE --
 FROM nginx:stable-alpine as release
 
-COPY --from=build /app/ui/src/target/dist /usr/share/nginx/html
+COPY --from=build /app/ui/src/dist /usr/share/nginx/html
 
 WORKDIR /usr/share/nginx/html
-EXPOSE 8080
+EXPOSE 80
 
 CMD ["/bin/sh", "-c", "nginx -g \"daemon off;\""]

Reply via email to