From 0dcb175514ced29a8c0a8cc45f667dd3c2af9c2b Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 28 Jan 2026 00:57:53 -0800 Subject: [PATCH] ci: add S3 Tables integration tests to GitHub Actions - Create new workflow for S3 Tables integration testing - Add build verification job for s3tables package and s3api integration - Add format checking for S3 Tables code - Add go vet checks for code quality - Workflow runs on all pull requests - Includes test output logging and artifact upload on failure --- .github/workflows/s3-tables-tests.yml | 191 ++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 .github/workflows/s3-tables-tests.yml diff --git a/.github/workflows/s3-tables-tests.yml b/.github/workflows/s3-tables-tests.yml new file mode 100644 index 000000000..8cfbd40a9 --- /dev/null +++ b/.github/workflows/s3-tables-tests.yml @@ -0,0 +1,191 @@ +name: "S3 Tables Integration Tests" + +on: + pull_request: + +concurrency: + group: ${{ github.head_ref }}/s3-tables-tests + cancel-in-progress: true + +permissions: + contents: read + +defaults: + run: + working-directory: weed + +jobs: + s3-tables-tests: + name: S3 Tables Integration Tests + runs-on: ubuntu-22.04 + timeout-minutes: 30 + + 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 Tables Integration Tests + timeout-minutes: 25 + working-directory: test/s3tables + run: | + set -x + echo "=== System Information ===" + uname -a + free -h + df -h + echo "=== Starting S3 Tables Tests ===" + + # Run S3 Tables integration tests + go test -v -timeout 20m . 2>&1 | tee test-output.log || { + echo "❌ S3 Tables integration tests failed" + exit 1 + } + + - name: Show test output on failure + if: failure() + working-directory: test/s3tables + run: | + echo "=== Test Output ===" + if [ -f test-output.log ]; then + tail -200 test-output.log + fi + + echo "=== Process information ===" + ps aux | grep -E "(weed|test)" || true + + - name: Upload test logs on failure + if: failure() + uses: actions/upload-artifact@v6 + with: + name: s3-tables-test-logs + path: test/s3tables/test-output.log + retention-days: 3 + + s3-tables-build-verification: + name: S3 Tables Build Verification + runs-on: ubuntu-22.04 + timeout-minutes: 15 + + 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: Verify S3 Tables Package Builds + run: | + set -x + echo "=== Building S3 Tables package ===" + go build ./s3api/s3tables || { + echo "❌ S3 Tables package build failed" + exit 1 + } + echo "✓ S3 Tables package built successfully" + + - name: Verify S3 API Integration Builds + run: | + set -x + echo "=== Building S3 API with S3 Tables integration ===" + go build ./s3api || { + echo "❌ S3 API build with S3 Tables failed" + exit 1 + } + echo "✓ S3 API with S3 Tables integration built successfully" + + - name: Run Go Tests for S3 Tables Package + run: | + set -x + echo "=== Running Go unit tests for S3 Tables ===" + go test -v -race -timeout 5m ./s3api/s3tables/... || { + echo "❌ S3 Tables unit tests failed" + exit 1 + } + echo "✓ S3 Tables unit tests passed" + + s3-tables-fmt-check: + name: S3 Tables Format Check + runs-on: ubuntu-22.04 + timeout-minutes: 10 + + 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: Check Go Format + run: | + set -x + echo "=== Checking S3 Tables Go format ===" + unformatted=$(go fmt ./s3api/s3tables/... 2>&1 | wc -l) + if [ "$unformatted" -gt 0 ]; then + echo "❌ Go format check failed - files need formatting" + go fmt ./s3api/s3tables/... + exit 1 + fi + echo "✓ All S3 Tables files are properly formatted" + + - name: Check S3 Tables Test Format + run: | + set -x + echo "=== Checking S3 Tables test format ===" + unformatted=$(go fmt ./test/s3tables/... 2>&1 | wc -l) + if [ "$unformatted" -gt 0 ]; then + echo "❌ Go format check failed for tests" + go fmt ./test/s3tables/... + exit 1 + fi + echo "✓ All S3 Tables test files are properly formatted" + + s3-tables-vet: + name: S3 Tables Go Vet Check + runs-on: ubuntu-22.04 + timeout-minutes: 10 + + 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: Run Go Vet + run: | + set -x + echo "=== Running go vet on S3 Tables package ===" + go vet ./s3api/s3tables/... || { + echo "❌ go vet check failed" + exit 1 + } + echo "✓ go vet checks passed" + + - name: Run Go Vet on Tests + run: | + set -x + echo "=== Running go vet on S3 Tables tests ===" + go vet ./test/s3tables/... || { + echo "❌ go vet check failed for tests" + exit 1 + } + echo "✓ go vet checks passed for tests"