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;\""]