This is an automated email from the ASF dual-hosted git repository.
bzp2010 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-docker.git
The following commit(s) were added to refs/heads/master by this push:
new a6129d1 feat: more human friendly makefile output (#219)
a6129d1 is described below
commit a6129d1d3d9c06dedc0408d76d253d37adcad60c
Author: leslie <[email protected]>
AuthorDate: Tue Sep 14 11:35:00 2021 +0800
feat: more human friendly makefile output (#219)
* feat: more human friendly makefile output
Signed-off-by: Leslie <[email protected]>
* bugfix: remove extra shell options
Signed-off-by: Leslie <[email protected]>
* chore: remove unused define
Signed-off-by: Leslie <[email protected]>
---
Makefile | 132 +++++++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 99 insertions(+), 33 deletions(-)
diff --git a/Makefile b/Makefile
index 41759e9..208a6fd 100644
--- a/Makefile
+++ b/Makefile
@@ -14,8 +14,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-default: help
+# Makefile basic env setting
+.DEFAULT_GOAL := help
+
+
+# APISIX ARGS
APISIX_VERSION ?= 2.9
IMAGE_NAME = apache/apisix
IMAGE_TAR_NAME = apache_apisix
@@ -24,69 +28,131 @@ APISIX_DASHBOARD_VERSION ?= 2.8
APISIX_DASHBOARD_IMAGE_NAME = apache/apisix-dashboard
APISIX_DASHBOARD_IMAGE_TAR_NAME = apache_apisix_dashboard
-### build-on-centos: Build apache/apisix:xx-centos image
+
+# Makefile ENV
+ENV_OS_NAME ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
+ENV_APISIX_TAR_NAME ?= $(IMAGE_TAR_NAME)_$(APISIX_VERSION)
+ENV_APISIX_IMAGE_TAG_NAME ?= $(IMAGE_NAME):$(APISIX_VERSION)
+ENV_DOCKER ?= docker
+
+
+# Makefile basic extension function
+_color_red =\E[1;31m
+_color_green =\E[1;32m
+_color_yellow =\E[1;33m
+_color_blue =\E[1;34m
+_color_wipe =\E[0m
+
+
+define func_echo_status
+ printf "[$(_color_blue) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+define func_echo_warn_status
+ printf "[$(_color_yellow) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+define func_echo_success_status
+ printf "[$(_color_green) info $(_color_wipe)] %s\n" $(1)
+endef
+
+
+# Makefile target
+### build-on-centos : Build apache/apisix:xx-centos image
+.PHONY: build-on-centos
build-on-centos:
- docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-centos -f
./centos/Dockerfile .
+ $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-centos -f
./centos/Dockerfile .
-### build-on-alpine: Build apache/apisix:xx-alpine image
+
+### build-on-alpine : Build apache/apisix:xx-alpine image
+.PHONY: build-on-alpine
build-on-alpine:
- docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine -f
./alpine/Dockerfile .
+ $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine -f
./alpine/Dockerfile .
+
-### build-on-alpine-local: Build apache/apisix:xx-alpine-local image
+### build-on-alpine-local : Build apache/apisix:xx-alpine-local image
# Actually it is not build on certain version but on local code
# Use this name (in the same patterns with others) for convenient CI
+.PHONY: build-on-alpine-local
build-on-alpine-local:
- docker build -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine-local
--build-arg APISIX_PATH=${APISIX_PATH} -f ./alpine-local/Dockerfile .
+ $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine-local
--build-arg APISIX_PATH=${APISIX_PATH} -f ./alpine-local/Dockerfile .
-### push-on-centos: Push apache/apisix:xx-centos image
+
+### push-on-centos : Push apache/apisix:xx-centos image
# centos not support multiarch since it reply on x86 rpm package
+.PHONY: push-on-centos
push-on-centos:
- docker push $(IMAGE_NAME):$(APISIX_VERSION)-centos
- docker build -t $(IMAGE_NAME):latest -f ./centos/Dockerfile .
- docker push $(IMAGE_NAME):latest
+ $(ENV_DOCKER) push $(ENV_APISIX_IMAGE_TAG_NAME)-centos
+ $(ENV_DOCKER) build -t $(IMAGE_NAME):latest -f ./centos/Dockerfile .
+ $(ENV_DOCKER) push $(IMAGE_NAME):latest
+
-### push-on-alpine: Push apache/apisix:xx-alpine image
+### push-on-alpine : Push apache/apisix:xx-alpine image
+.PHONY: push-multiarch-on-alpine
push-multiarch-on-alpine:
- docker buildx build --push \
- -t $(IMAGE_NAME):$(APISIX_VERSION)-alpine \
+ $(ENV_DOCKER) buildx build --push \
+ -t $(ENV_APISIX_IMAGE_TAG_NAME)-alpine \
--platform linux/amd64,linux/arm64 \
-f ./alpine/Dockerfile .
-### build-on-alpine-cn: Build apache/apisix:xx-alpine image
(for chinese)
+
+### build-on-alpine-cn : Build apache/apisix:xx-alpine image (for chinese)
+.PHONY: build-on-alpine-cn
build-on-alpine-cn:
- docker build -t $(IMAGE_NAME):${APISIX_VERSION}-alpine --build-arg
APISIX_VERSION=${APISIX_VERSION} --build-arg ENABLE_PROXY=true -f
alpine/Dockerfile alpine
+ $(ENV_DOCKER) build -t $(IMAGE_NAME):${APISIX_VERSION}-alpine
--build-arg APISIX_VERSION=${APISIX_VERSION} --build-arg ENABLE_PROXY=true -f
alpine/Dockerfile alpine
+
-### build-all-in-one: Build All in one Docker container for Apache
APISIX
+### build-all-in-one : Build All in one Docker container for Apache APISIX
+.PHONY: build-all-in-one
build-all-in-one:
- docker build -t $(IMAGE_NAME):whole -f ./all-in-one/apisix/Dockerfile .
+ $(ENV_DOCKER) build -t $(IMAGE_NAME):whole -f
./all-in-one/apisix/Dockerfile .
+
-### save-centos-tar: tar apache/apisix:xx-centos image
+### save-centos-tar : tar apache/apisix:xx-centos image
+.PHONY: save-centos-tar
save-centos-tar:
mkdir -p package
- docker save -o ./package/$(IMAGE_TAR_NAME)_$(APISIX_VERSION)-centos.tar
$(IMAGE_NAME):$(APISIX_VERSION)-centos
+ $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-centos.tar
$(ENV_APISIX_IMAGE_TAG_NAME)-centos
-### save-alpine-tar: tar apache/apisix:xx-alpine image
+
+### save-alpine-tar : tar apache/apisix:xx-alpine image
+.PHONY: save-alpine-tar
save-alpine-tar:
mkdir -p package
- docker save -o ./package/$(IMAGE_TAR_NAME)_$(APISIX_VERSION)-alpine.tar
$(IMAGE_NAME):$(APISIX_VERSION)-alpine
+ $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-alpine.tar
$(ENV_APISIX_IMAGE_TAG_NAME)-alpine
+
-### build-dashboard: Build apache/dashboard:tag image
+### build-dashboard : Build apache/dashboard:tag image
+.PHONY: build-dashboard
build-dashboard:
- docker build -t
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) -f
./dashboard/Dockerfile .
+ $(ENV_DOCKER) build -t
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) -f
./dashboard/Dockerfile .
+
-### push-dashboard: Push apache/dashboard:tag image
+### push-dashboard : Push apache/dashboard:tag image
+.PHONY: push-dashboard
push-dashboard:
- docker push $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
- docker build -t $(APISIX_DASHBOARD_IMAGE_NAME):latest -f
./dashboard/Dockerfile .
- docker push $(APISIX_DASHBOARD_IMAGE_NAME):latest
+ $(ENV_DOCKER) push
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+ $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):latest -f
./dashboard/Dockerfile .
+ $(ENV_DOCKER) push $(APISIX_DASHBOARD_IMAGE_NAME):latest
-### save-dashboard-tar: tar apache/apisix-dashboard:tag image
+
+### save-dashboard-tar : tar apache/apisix-dashboard: tag image
+.PHONY: save-dashboard-tar
save-dashboard-tar:
mkdir -p package
- docker save -o
./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION).tar
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+ $(ENV_DOCKER) save -o
./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION).tar
$(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
+
-### help: Show Makefile rules
+### help : Show Makefile rules
+.PHONY: help
help:
- @echo Makefile rules:
+ @$(call func_echo_success_status, "Makefile rules:")
+ @echo
+ @if [ '$(ENV_OS_NAME)' = 'darwin' ]; then \
+ awk '{ if(match($$0, /^#{3}([^:]+):(.*)$$/)){ split($$0, res,
":"); _desc=$$0; gsub(/^#{3}([^:]+):[ \t]*/, "", _desc); printf(" make %-25s
: %-10s\n", $$2, _desc) } }' Makefile; \
+ else \
+ awk '{ if(match($$0, /^\s*#{3}\s*([^:]+)\s*:\s*(.*)$$/, res)){
printf(" make %-25s : %-10s\n", res[1], res[2]) } }' Makefile; \
+ fi
@echo
- @grep -E '^### [-A-Za-z0-9_]+:' Makefile | sed 's/###/ /'