PLUGIN_NAME ?= hello-world REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/ GO_VERSION ?= 1.19 TINYGO_VERSION ?= 0.25.0 ORAS_VERSION ?= 1.0.0 HIGRESS_VERSION ?= 1.0.0-rc USE_HIGRESS_TINYGO ?= true BUILDER ?= ${REGISTRY}wasm-go-builder:go${GO_VERSION}-tinygo${TINYGO_VERSION}-oras${ORAS_VERSION} BUILD_TIME := $(shell date "+%Y%m%d-%H%M%S") COMMIT_ID := $(shell git rev-parse --short HEAD 2>/dev/null) IMAGE_TAG = $(if $(strip $(PLUGIN_VERSION)),${PLUGIN_VERSION},${BUILD_TIME}-${COMMIT_ID}) IMG ?= ${REGISTRY}${PLUGIN_NAME}:${IMAGE_TAG} GOPROXY := $(shell go env GOPROXY) .DEFAULT: build: DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \ --build-arg BUILDER=${BUILDER} \ --build-arg GOPROXY=$(GOPROXY) \ -t ${IMG} \ --output extensions/${PLUGIN_NAME} \ . @echo "" @echo "output wasm file: extensions/${PLUGIN_NAME}/plugin.wasm" build-image: DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \ --build-arg BUILDER=${BUILDER} \ --build-arg GOPROXY=$(GOPROXY) \ -t ${IMG} \ --load \ . @echo "" @echo "image: ${IMG}" build-push: build-image docker push ${IMG} # builder: # To build a wasm-go-builder image. # e.g. # REGISTRY= make builder # If you want to use Go/TinyGo/Oras with another version, please modify GO_VERSION/TINYGO_VERSION/ORAS_VERSION. # After your wasm-go-builder image is built, you can use it to build plugin image. # e.g. # PLUGIN_NAME=request-block BUILDER= make builder: docker buildx build --no-cache \ --platform linux/amd64,linux/arm64 \ --build-arg BASE_IMAGE=docker.io/ubuntu \ --build-arg GO_VERSION=$(GO_VERSION) \ --build-arg TINYGO_VERSION=$(TINYGO_VERSION) \ --build-arg ORAS_VERSION=$(ORAS_VERSION) \ --build-arg HIGRESS_VERSION=$(HIGRESS_VERSION) \ --build-arg USE_HIGRESS_TINYGO=$(USE_HIGRESS_TINYGO) \ -f DockerfileBuilder \ -t ${BUILDER} \ --push \ . @echo "" @echo "image: ${BUILDER}"