From 125c9297cf37b3dbb14e1920813753f9dce257d6 Mon Sep 17 00:00:00 2001 From: chrislu Date: Fri, 7 Nov 2025 23:53:44 -0800 Subject: [PATCH] fix github tests --- docker/Dockerfile.e2e | 5 ++- docker/Makefile | 6 ++- docker/entrypoint_e2e.sh | 79 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100755 docker/entrypoint_e2e.sh diff --git a/docker/Dockerfile.e2e b/docker/Dockerfile.e2e index 3ac60cb11..5eb380f48 100644 --- a/docker/Dockerfile.e2e +++ b/docker/Dockerfile.e2e @@ -3,6 +3,8 @@ FROM ubuntu:22.04 LABEL author="Chris Lu" # Use faster mirrors and optimize package installation +# Note: su-exec is not available in Ubuntu repos, we'll use gosu as an alternative +# or simplify the entrypoint for e2e testing (run as root for testing) RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ --no-install-recommends \ @@ -10,6 +12,7 @@ RUN apt-get update && \ curl \ fio \ fuse \ + ca-certificates \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /tmp/* \ @@ -18,7 +21,7 @@ RUN mkdir -p /etc/seaweedfs /data/filerldb2 COPY ./weed /usr/bin/ COPY ./filer.toml /etc/seaweedfs/filer.toml -COPY ./entrypoint.sh /entrypoint.sh +COPY ./entrypoint_e2e.sh /entrypoint.sh # volume server grpc port EXPOSE 18080 diff --git a/docker/Makefile b/docker/Makefile index f9a23b646..31ccf9da1 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -5,15 +5,19 @@ all: gen gen: dev cgo ?= 0 +ldflags_extra ?= -extldflags -static + binary: export SWCOMMIT=$(shell git rev-parse --short HEAD) export SWLDFLAGS="-X github.com/seaweedfs/seaweedfs/weed/util/version.COMMIT=$(SWCOMMIT)" - cd ../weed && CGO_ENABLED=$(cgo) GOOS=linux go build $(options) -tags "$(tags)" -ldflags "-s -w -extldflags -static $(SWLDFLAGS)" -o weed_binary && mv weed_binary ../docker/weed + cd ../weed && CGO_ENABLED=$(cgo) GOOS=linux go build $(options) -tags "$(tags)" -ldflags "-s -w $(ldflags_extra) $(SWLDFLAGS)" -o weed_binary && mv weed_binary ../docker/weed cd ../other/mq_client_example/agent_pub_record && CGO_ENABLED=$(cgo) GOOS=linux go build && mv agent_pub_record ../../../docker/ cd ../other/mq_client_example/agent_sub_record && CGO_ENABLED=$(cgo) GOOS=linux go build && mv agent_sub_record ../../../docker/ +# Race detector requires CGO and dynamic linking - don't use -static binary_race: options = -race binary_race: cgo = 1 +binary_race: ldflags_extra = binary_race: binary build: binary diff --git a/docker/entrypoint_e2e.sh b/docker/entrypoint_e2e.sh new file mode 100755 index 000000000..6d326f9f7 --- /dev/null +++ b/docker/entrypoint_e2e.sh @@ -0,0 +1,79 @@ +#!/bin/bash +set -e + +# Simplified entrypoint for e2e testing - runs as root +# No user switching needed for testing + +isArgPassed() { + arg="$1" + argWithEqualSign="$1=" + shift + while [ $# -gt 0 ]; do + passedArg="$1" + shift + case $passedArg in + $arg) + return 0 + ;; + $argWithEqualSign*) + return 0 + ;; + esac + done + return 1 +} + +case "$1" in + + 'master') + ARGS="-mdir=/data -volumePreallocate -volumeSizeLimitMB=1024" + shift + exec /usr/bin/weed -logtostderr=true master $ARGS "$@" + ;; + + 'volume') + ARGS="-dir=/data -max=0" + if isArgPassed "-max" "$@"; then + ARGS="-dir=/data" + fi + shift + exec /usr/bin/weed -logtostderr=true volume $ARGS "$@" + ;; + + 'server') + ARGS="-dir=/data -volume.max=0 -master.volumePreallocate -master.volumeSizeLimitMB=1024" + if isArgPassed "-volume.max" "$@"; then + ARGS="-dir=/data -master.volumePreallocate -master.volumeSizeLimitMB=1024" + fi + shift + exec /usr/bin/weed -logtostderr=true server $ARGS "$@" + ;; + + 'filer') + ARGS="" + shift + exec /usr/bin/weed -logtostderr=true filer $ARGS "$@" + ;; + + 's3') + ARGS="-domainName=$S3_DOMAIN_NAME -key.file=$S3_KEY_FILE -cert.file=$S3_CERT_FILE" + shift + exec /usr/bin/weed -logtostderr=true s3 $ARGS "$@" + ;; + + 'mount') + shift + exec /usr/bin/weed -logtostderr=true mount "$@" + ;; + + 'shell') + ARGS="-cluster=$SHELL_CLUSTER -filer=$SHELL_FILER -filerGroup=$SHELL_FILER_GROUP -master=$SHELL_MASTER -options=$SHELL_OPTIONS" + shift + exec echo "$@" | /usr/bin/weed -logtostderr=true shell $ARGS + ;; + + *) + exec /usr/bin/weed "$@" + ;; +esac +