Browse Source
ci: add S3 Tables integration tests to GitHub Actions
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 failurepull/8147/head
1 changed files with 191 additions and 0 deletions
@ -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" |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue