@ -411,4 +411,115 @@ jobs:
path : test/s3/versioning/weed-test*.log
path : test/s3/versioning/weed-test*.log
retention-days : 7
retention-days : 7
s3-tagging-tests:
name : S3 Tagging Tests
runs-on : ubuntu-22.04
timeout-minutes : 20
steps:
- name : Check out code
uses : actions/checkout@v6
- name : Set up Go
uses : actions/setup-go@v6
with:
go-version-file : 'go.mod'
id : go
- name : Install SeaweedFS
run : |
go install -buildvcs=false
- name : Run S3 Tagging Tests
timeout-minutes : 15
run : |
cd weed
set -x
# Create clean data directory for this test run
export WEED_DATA_DIR="/tmp/seaweedfs-tagging-test-$(date +%s)"
mkdir -p "$WEED_DATA_DIR"
weed server -filer -filer.maxMB=64 -s3 -ip.bind 0.0.0.0 \
-dir="$WEED_DATA_DIR" \
-master.raftHashicorp -master.electionTimeout 1s -master.volumeSizeLimitMB=100 \
-volume.max=100 -volume.preStopSeconds=1 \
-master.port=9338 -volume.port=8084 -filer.port=8893 -s3.port=8006 -metricsPort=9329 \
-s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config="$GITHUB_WORKSPACE/docker/compose/s3.json" -master.peers=none &
pid=$!
# Wait for all SeaweedFS components to be ready
echo "Waiting for SeaweedFS components to start..."
for i in {1..30}; do
if curl -s http://localhost:9338/cluster/status > /dev/null 2>&1; then
echo "Master server is ready"
break
fi
echo "Waiting for master server... ($i/30)"
sleep 2
done
for i in {1..30}; do
if curl -s http://localhost:8084/status > /dev/null 2>&1; then
echo "Volume server is ready"
break
fi
echo "Waiting for volume server... ($i/30)"
sleep 2
done
for i in {1..30}; do
if curl -s http://localhost:8893/ > /dev/null 2>&1; then
echo "Filer is ready"
break
fi
echo "Waiting for filer... ($i/30)"
sleep 2
done
for i in {1..30}; do
if curl -s http://localhost:8006/ > /dev/null 2>&1; then
echo "S3 server is ready"
break
fi
echo "Waiting for S3 server... ($i/30)"
sleep 2
done
echo "All SeaweedFS components are ready!"
cd ../test/s3/tagging
# Set environment variables for the test
export S3_ENDPOINT="http://localhost:8006"
export S3_ACCESS_KEY="0555b35654ad1656d804"
export S3_SECRET_KEY="h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q=="
# Additional wait for S3-Filer integration to be fully ready
echo "Waiting additional 10 seconds for S3-Filer integration..."
sleep 10
# Test S3 connection before running tests
echo "Testing S3 connection..."
for i in {1..10}; do
if curl -s -f http://localhost:8006/ > /dev/null 2>&1; then
echo "S3 connection test successful"
break
fi
echo "S3 connection test failed, retrying... ($i/10)"
sleep 2
done
echo "✅ S3 server is responding, starting tests..."
go test -v ./...
kill -9 $pid || true
# Clean up data directory
rm -rf "$WEED_DATA_DIR" || true
- name : Upload test logs on failure
if : failure()
uses : actions/upload-artifact@v5
with:
name : s3-tagging-test-logs
path : test/s3/tagging/weed-test*.log
retention-days : 3
# Removed SSE-C integration tests and compatibility job
# Removed SSE-C integration tests and compatibility job