mirror of
https://github.com/alibaba/higress.git
synced 2026-04-21 03:57:28 +08:00
Implement Rust Wasm Plugin Build & Publish Action (#1483)
This commit is contained in:
38
plugins/wasm-rust/DockerfileBuilder
Normal file
38
plugins/wasm-rust/DockerfileBuilder
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
ARG RUST_VERSION
|
||||
ARG ORAS_VERSION
|
||||
ARG HIGRESS_VERSION
|
||||
|
||||
ARG BASE_IMAGE=rust:${RUST_VERSION:-1.82}
|
||||
FROM $BASE_IMAGE
|
||||
|
||||
LABEL rust_version=$RUST_VERSION oras_version=$ORAS_VERSION
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y wget gcc gcc-multilib llvm clang \
|
||||
&& rustup target add wasm32-wasi \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \
|
||||
rust_version=${RUST_VERSION:-1.82}; \
|
||||
oras_version=${ORAS_VERSION:-1.0.0}; \
|
||||
higress_version=${HIGRESS_VERSION:-1.0.0-rc}; \
|
||||
echo "arch: '$arch'"; \
|
||||
echo "rust rust_version: '$rust_version'"; \
|
||||
echo "oras_version: '$oras_version'"; \
|
||||
echo "higress_version: '$higress_version'"; \
|
||||
case "$arch" in \
|
||||
'amd64') \
|
||||
oras_url="https://github.com/oras-project/oras/releases/download/v$oras_version/oras_${oras_version}_linux_amd64.tar.gz"; \
|
||||
;; \
|
||||
'arm64') \
|
||||
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 "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; \
|
||||
echo "done";
|
||||
|
||||
ENV PATH=$PATH:/usr/local/bin
|
||||
@@ -1,5 +1,10 @@
|
||||
PLUGIN_NAME ?= say-hello
|
||||
BUILDER_REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/
|
||||
REGISTRY ?= higress-registry.cn-hangzhou.cr.aliyuncs.com/plugins/
|
||||
RUST_VERSION ?= 1.82
|
||||
ORAS_VERSION ?= 1.0.0
|
||||
HIGRESS_VERSION ?= 1.0.0-rc
|
||||
BUILDER ?= ${BUILDER_REGISTRY}wasm-rust-builder:rust${RUST_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})
|
||||
@@ -21,3 +26,16 @@ lint-base:
|
||||
lint:
|
||||
cargo fmt --all --check --manifest-path extensions/${PLUGIN_NAME}/Cargo.toml
|
||||
cargo clippy --workspace --all-features --all-targets --manifest-path extensions/${PLUGIN_NAME}/Cargo.toml
|
||||
|
||||
builder:
|
||||
docker buildx build --no-cache \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--build-arg RUST_VERSION=$(RUST_VERSION) \
|
||||
--build-arg ORAS_VERSION=$(ORAS_VERSION) \
|
||||
--build-arg HIGRESS_VERSION=$(HIGRESS_VERSION) \
|
||||
-f DockerfileBuilder \
|
||||
-t ${BUILDER} \
|
||||
--push \
|
||||
.
|
||||
@echo ""
|
||||
@echo "image: ${BUILDER}"
|
||||
Reference in New Issue
Block a user