123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- #
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You 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 basic env setting
- .DEFAULT_GOAL := help
- SHELL := bash
- # APISIX ARGS
- APISIX_VERSION ?= 3.2.1
- MAX_APISIX_VERSION ?= 3.2.1
- IMAGE_NAME = apache/apisix
- IMAGE_TAR_NAME = apache_apisix
- APISIX_DASHBOARD_VERSION ?= $(shell echo ${APISIX_DASHBOARD_VERSION:=3.0.1})
- APISIX_DASHBOARD_IMAGE_NAME = apache/apisix-dashboard
- APISIX_DASHBOARD_IMAGE_TAR_NAME = apache_apisix_dashboard
- # 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:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-centos -f ./centos/Dockerfile centos
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-on-redhat : Build apache/apisix:xx-redhat image
- .PHONY: build-on-redhat
- build-on-redhat:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-redhat -f ./redhat/Dockerfile redhat
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-on-debian-dev : Build apache/apisix:xx-debian-dev image
- .PHONY: build-on-debian-dev
- build-on-debian-dev:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-debian-dev -f ./debian-dev/Dockerfile debian-dev
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-on-debian : Build apache/apisix:xx-debian image
- .PHONY: build-on-debian
- build-on-debian:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(ENV_APISIX_IMAGE_TAG_NAME)-debian -f ./debian/Dockerfile debian
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-on-alpine : Push apache/apisix:dev image
- .PHONY: push-multiarch-dev-on-debian
- push-multiarch-dev-on-debian:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) buildx build --network=host --push \
- -t $(IMAGE_NAME):dev \
- --platform linux/amd64,linux/arm64 \
- -f ./debian-dev/Dockerfile debian-dev
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-multiarch-on-debian : Push apache/apisix:xx-debian image
- .PHONY: push-multiarch-on-debian
- push-multiarch-on-debian:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) buildx build --network=host --push \
- -t $(ENV_APISIX_IMAGE_TAG_NAME)-debian \
- --platform linux/amd64,linux/arm64 \
- -f ./debian/Dockerfile debian
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-multiarch-on-centos : Push apache/apisix:xx-centos image
- .PHONY: push-multiarch-on-centos
- push-multiarch-on-centos:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) buildx build --network=host --push \
- -t $(ENV_APISIX_IMAGE_TAG_NAME)-centos \
- --platform linux/amd64,linux/arm64 \
- -f ./centos/Dockerfile centos
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-multiarch-on-redhat : Push apache/apisix:xx-redhat image
- .PHONY: push-multiarch-on-redhat
- push-multiarch-on-redhat:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) buildx build --network=host --push \
- -t $(ENV_APISIX_IMAGE_TAG_NAME)-redhat \
- --platform linux/amd64 \
- -f ./redhat/Dockerfile redhat
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-multiarch-on-latest : Push apache/apisix:latest image
- .PHONY: push-multiarch-on-latest
- # Here we choose to check the max APISIX version instead of the patch version, so that
- # we can release a patch version for a non-LTS version. For example, release a version
- # to solve security issue.
- push-multiarch-on-latest:
- @$(call func_echo_status, "$@ -> [ Start ]")
- @if [ "$(shell echo "$(APISIX_VERSION) $(MAX_APISIX_VERSION)" | tr " " "\n" | sort -rV | head -n 1)" == "$(APISIX_VERSION)" ]; then \
- $(ENV_DOCKER) buildx build --network=host --push \
- -t $(IMAGE_NAME):latest \
- --platform linux/amd64,linux/arm64 \
- -f ./debian/Dockerfile debian; \
- fi
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-all-in-one : Build All in one Docker container for Apache APISIX
- .PHONY: build-all-in-one
- build-all-in-one:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(IMAGE_NAME):whole -f ./all-in-one/apisix/Dockerfile .
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-dashboard-all-in-one : Build All in one Docker container for Apache APISIX-dashboard
- .PHONY: build-dashboard-all-in-one
- build-dashboard-all-in-one:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):whole -f ./all-in-one/apisix-dashboard/Dockerfile .
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### save-centos-tar : tar apache/apisix:xx-centos image
- .PHONY: save-centos-tar
- save-centos-tar:
- @$(call func_echo_status, "$@ -> [ Start ]")
- mkdir -p package
- $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-centos.tar $(ENV_APISIX_IMAGE_TAG_NAME)-centos
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### save-debian-tar : tar apache/apisix:xx-debian image
- .PHONY: save-debian-tar
- save-debian-tar:
- @$(call func_echo_status, "$@ -> [ Start ]")
- mkdir -p package
- $(ENV_DOCKER) save -o ./package/$(ENV_APISIX_TAR_NAME)-debian.tar $(ENV_APISIX_IMAGE_TAG_NAME)-debian
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-dashboard-centos : Build apache/dashboard:tag image on centos
- .PHONY: build-dashboard-centos
- build-dashboard-centos:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) \
- --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
- -f ./dashboard/Dockerfile.centos .
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### build-dashboard-alpine : Build apache/dashboard:tag image on alpine
- .PHONY: build-dashboard-alpine
- build-dashboard-alpine:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) build -t $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION) \
- --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
- -f ./dashboard/Dockerfile.alpine .
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### push-multiarch-dashboard : Build and push multiarch apache/dashboard:tag image
- .PHONY: push-multiarch-dashboard
- push-multiarch-dashboard:
- @$(call func_echo_status, "$@ -> [ Start ]")
- $(ENV_DOCKER) buildx build --push \
- -t $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)-alpine \
- --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
- --platform linux/amd64,linux/arm64 \
- -f ./dashboard/Dockerfile.alpine .
- $(ENV_DOCKER) buildx build --push \
- -t $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)-centos \
- --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
- --platform linux/amd64,linux/arm64 \
- -f ./dashboard/Dockerfile.centos .
- $(ENV_DOCKER) buildx build --push \
- -t $(APISIX_DASHBOARD_IMAGE_NAME):latest \
- --build-arg APISIX_DASHBOARD_TAG=v$(APISIX_DASHBOARD_VERSION) \
- --platform linux/amd64,linux/arm64 \
- -f ./dashboard/Dockerfile.centos .
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### save-dashboard-centos-tar : tar apache/apisix-dashboard:tag image
- .PHONY: save-dashboard-centos-tar
- save-dashboard-centos-tar:
- @$(call func_echo_status, "$@ -> [ Start ]")
- mkdir -p package
- $(ENV_DOCKER) save -o ./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION)-centos.tar $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### save-dashboard-alpine-tar : tar apache/apisix-dashboard:tag image
- .PHONY: save-dashboard-alpine-tar
- save-dashboard-alpine-tar:
- @$(call func_echo_status, "$@ -> [ Start ]")
- mkdir -p package
- $(ENV_DOCKER) save -o ./package/$(APISIX_DASHBOARD_IMAGE_TAR_NAME)_$(APISIX_DASHBOARD_VERSION)-alpine.tar $(APISIX_DASHBOARD_IMAGE_NAME):$(APISIX_DASHBOARD_VERSION)
- @$(call func_echo_success_status, "$@ -> [ Done ]")
- ### help : Show Makefile rules
- .PHONY: help
- help:
- @$(call func_echo_success_status, "Makefile rules:")
- @echo
- @if [ '$(ENV_OS_NAME)' = 'darwin' ]; then \
- awk '{ if(match($$0, /^#{3}([^:]+):(.*)$$/)){ split($$0, res, ":"); gsub(/^#{3}[ ]*/, "", res[1]); _desc=$$0; gsub(/^#{3}([^:]+):[ \t]*/, "", _desc); printf(" make %-25s : %-10s\n", res[1], _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
|