From 4f24979579c666db7532f620cab778d09fe2e5d5 Mon Sep 17 00:00:00 2001 From: Kent Dong Date: Mon, 8 May 2023 19:28:23 +0800 Subject: [PATCH] fix: Use tinygo 0.25.0 (#309) --- plugins/wasm-go/Dockerfile | 2 +- plugins/wasm-go/DockerfileBuilder | 65 ++++++++++++++++++++----------- plugins/wasm-go/Makefile | 23 ++++++++--- 3 files changed, 62 insertions(+), 28 deletions(-) diff --git a/plugins/wasm-go/Dockerfile b/plugins/wasm-go/Dockerfile index 9779e81a3..046fd1154 100644 --- a/plugins/wasm-go/Dockerfile +++ b/plugins/wasm-go/Dockerfile @@ -1,4 +1,4 @@ -ARG BUILDER=higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/wasm-go-builder:go1.19-tinygo0.27.0-oras1.0.0 +ARG BUILDER=higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/wasm-go-builder:go1.19-tinygo0.25.0-oras1.0.0 FROM $BUILDER as builder diff --git a/plugins/wasm-go/DockerfileBuilder b/plugins/wasm-go/DockerfileBuilder index b8553dd91..e77f2941b 100644 --- a/plugins/wasm-go/DockerfileBuilder +++ b/plugins/wasm-go/DockerfileBuilder @@ -4,13 +4,13 @@ # - arch: amd64 # base image: docker.io/ubuntu # go_url: https://golang.google.cn/dl/go1.20.1.linux-amd64.tar.gz" -# tinygo_url: https://github.com/tinygo-org/tinygo/releases/download/v0.27.0/tinygo_0.27.0_amd64.deb +# tinygo_url: https://github.com/alibaba/higress/releases/download/v1.0.0-rc/higress-tinygo0.25.0.linux-amd64.tar.gz # oras_url: https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_amd64.tar.gz # # - arch: arm64 # base image: docker.io/ubuntu # go_url: https://golang.google.cn/dl/go1.20.1.linux-arm64.tar.gz -# tinygo_url: https://github.com/tinygo-org/tinygo/releases/download/v0.27.0/tinygo_0.27.0_arm64.deb +# tinygo_url: https://github.com/alibaba/higress/releases/download/v1.0.0-rc/higress-tinygo0.25.0.linux-arm64.tar.gz # oras_url: https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_arm64.tar.gz # # - arch: armel @@ -46,7 +46,7 @@ # - arch: armhf # base image: build your self # go_url: https://golang.google.cn/dl/go1.20.1.linux-armv6l.tar.gz -# tinygo_url: https://github.com/tinygo-org/tinygo/releases/download/v0.27.0/tinygo_0.27.0_armhf.deb +# tinygo_url: https://github.com/tinygo-org/tinygo/releases/download/v0.25.0/tinygo_0.25.0_armhf.deb # oras_url: build your self ARG BASE_IMAGE=docker.io/ubuntu @@ -55,6 +55,8 @@ FROM $BASE_IMAGE ARG GO_VERSION ARG TINYGO_VERSION ARG ORAS_VERSION +ARG HIGRESS_VERSION +ARG USE_HIGRESS_TINYGO LABEL go_version=$GO_VERSION tinygo_version=$TINYGO_VERSION oras_version=$ORAS_VERSION @@ -62,39 +64,58 @@ RUN apt-get update \ && apt-get install -y wget build-essential \ && rm -rf /var/lib/apt/lists/* - RUN arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ - go_url=; \ + go_url=; \ tinygo_url=; \ go_version=${GO_VERSION:-1.19}; \ - tinygo_version=${TINYGO_VERSION:-0.27.0}; \ + tinygo_version=${TINYGO_VERSION:-0.25.0}; \ oras_version=${ORAS_VERSION:-1.0.0}; \ + higress_version=${HIGRESS_VERSION:-1.0.0-rc}; \ + use_higress_tinygo=${USE_HIGRESS_TINYGO:-false}; \ echo "arch: '$arch'"; \ echo "go go_version: '$go_version'"; \ echo "tinygo_version: '$tinygo_version'"; \ echo "oras_version: '$oras_version'"; \ - case "$arch" in \ - 'amd64') \ + echo "higress_version: '$higress_version'"; \ + echo "use_higress_tinygo: '$use_higress_tinygo'"; \ + case "$arch" in \ + 'amd64') \ go_url="https://golang.google.cn/dl/go$go_version.linux-amd64.tar.gz"; \ - tinygo_url="https://github.com/tinygo-org/tinygo/releases/download/v$tinygo_version/tinygo_${tinygo_version}_amd64.deb"; \ + if [ "$use_higress_tinygo" = "true" ]; \ + then \ + tinygo_url="https://github.com/alibaba/higress/releases/download/v$higress_version/higress-tinygo${tinygo_version}.linux-amd64.tar.gz"; \ + else \ + tinygo_url="https://github.com/tinygo-org/tinygo/releases/download/v$tinygo_version/tinygo_${tinygo_version}_amd64.deb"; \ + fi; \ oras_url="https://github.com/oras-project/oras/releases/download/v$oras_version/oras_${oras_version}_linux_amd64.tar.gz"; \ - ;; \ - 'arm64') \ + ;; \ + 'arm64') \ go_url="https://golang.google.cn/dl/go$go_version.linux-arm64.tar.gz"; \ - tinygo_url="https://github.com/tinygo-org/tinygo/releases/download/v$tinygo_version/tinygo_${tinygo_version}_arm64.deb"; \ + if [ "$use_higress_tinygo" = "true" ]; \ + then \ + tinygo_url="https://github.com/alibaba/higress/releases/download/v$higress_version/higress-tinygo${tinygo_version}.linux-arm64.tar.gz"; \ + else \ + tinygo_url="https://github.com/tinygo-org/tinygo/releases/download/v$tinygo_version/tinygo_${tinygo_version}_arm64.deb"; \ + fi; \ oras_url="https://github.com/oras-project/oras/releases/download/v$oras_version/oras_${oras_version}_linux_arm64.tar.gz"; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch' "; exit 1 ;; \ - esac; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' "; exit 1 ;; \ + esac; \ echo "go_url: '$go_url'"; \ - echo "tinygo_url: '$tinygo_url'"; \ - echo "oras_url: '$oras_url'"; \ wget -O go.tgz "$go_url" --progress=dot:giga; \ - wget -O tinygo.deb "$tinygo_url" --progress=dot:giga; \ - wget -O oras.tgz "$oras_url" --progress=dot:giga; \ - echo "Download complete"; \ rm -rf /usr/local/go && tar -C /usr/local -xzf go.tgz && rm -rf go.tgz; \ + echo "tinygo_url: '$tinygo_url'"; \ + if [ "$use_higress_tinygo" = "true" ]; \ + then \ + wget -O tinygo.tgz "$tinygo_url" --progress=dot:giga; \ + rm -rf /usr/local/tinygo && tar -C /usr/local -xzf tinygo.tgz && rm -rf tinygo.tgz; \ + else \ + wget -O tinygo.deb "$tinygo_url" --progress=dot:giga; \ + dpkg -i tinygo.deb && rm -rf tinygo.deb; \ + fi; \ + echo "oras_url: '$oras_url'"; \ + wget -O oras.tgz "$oras_url" --progress=dot:giga; \ tar -C /usr/local/bin -xzf oras.tgz && rm -rf oras.tgz; \ - dpkg -i tinygo.deb && rm -rf tinygo.deb + echo "done"; -ENV PATH=$PATH:/usr/local/go/bin:/usr/local/bin +ENV PATH=$PATH:/usr/local/go/bin:/usr/local/tinygo/bin:/usr/local/bin diff --git a/plugins/wasm-go/Makefile b/plugins/wasm-go/Makefile index 6b7b59ab7..5d80d882d 100644 --- a/plugins/wasm-go/Makefile +++ b/plugins/wasm-go/Makefile @@ -1,27 +1,38 @@ PLUGIN_NAME ?= hello-world REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/ GO_VERSION ?= 1.19 -TINYGO_VERSION ?= 0.27.0 +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) -IMG ?= ${REGISTRY}${PLUGIN_NAME}:${BUILD_TIME}-${COMMIT_ID} +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) \ + --build-arg GOPROXY=$(GOPROXY) \ -t ${IMG} \ --output extensions/${PLUGIN_NAME} \ . @echo "" - @echo "image: ${IMG}" @echo "output wasm file: extensions/${PLUGIN_NAME}/plugin.wasm" -build-push: build +build-image: + DOCKER_BUILDKIT=1 docker build --build-arg PLUGIN_NAME=${PLUGIN_NAME} \ + --build-arg BUILDER=${BUILDER} \ + -t ${IMG} \ + --load \ + . + @echo "" + @echo "image: ${IMG}" + +build-push: build-image docker push ${IMG} # builder: @@ -39,6 +50,8 @@ builder: --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 \