aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-12-04 10:44:31 -0800
committerGitHub <noreply@github.com>2025-12-04 10:44:31 -0800
commit66e2d9bca1397489309e0754f7c059c398934012 (patch)
tree0e326035a43aa360c894aaeec2b9bddcb3aa63ce /.github/workflows
parent49ed42b367914ac4f3e2853e698e8fc05ddac24e (diff)
parent8d110b29ddfd9b9cdb504a4380106b2b287155ca (diff)
downloadseaweedfs-origin/feature/tus-protocol.tar.xz
seaweedfs-origin/feature/tus-protocol.zip
Merge branch 'master' into feature/tus-protocolorigin/feature/tus-protocol
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/container_release_unified.yml1
-rw-r--r--.github/workflows/ec-integration-tests.yml41
-rw-r--r--.github/workflows/helm_ci.yml74
-rw-r--r--.github/workflows/s3-go-tests.yml54
-rw-r--r--.github/workflows/sftp-tests.yml93
5 files changed, 263 insertions, 0 deletions
diff --git a/.github/workflows/container_release_unified.yml b/.github/workflows/container_release_unified.yml
index eb8df9834..c7aa648fd 100644
--- a/.github/workflows/container_release_unified.yml
+++ b/.github/workflows/container_release_unified.yml
@@ -223,3 +223,4 @@ jobs:
echo "✓ Successfully copied ${{ matrix.variant }} to Docker Hub"
+
diff --git a/.github/workflows/ec-integration-tests.yml b/.github/workflows/ec-integration-tests.yml
new file mode 100644
index 000000000..ea476b77c
--- /dev/null
+++ b/.github/workflows/ec-integration-tests.yml
@@ -0,0 +1,41 @@
+name: "EC Integration Tests"
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+permissions:
+ contents: read
+
+jobs:
+ ec-integration-tests:
+ name: EC Integration Tests
+ runs-on: ubuntu-22.04
+ timeout-minutes: 30
+ steps:
+ - name: Set up Go 1.x
+ uses: actions/setup-go@v6
+ with:
+ go-version: ^1.24
+ id: go
+
+ - name: Check out code into the Go module directory
+ uses: actions/checkout@v4
+
+ - name: Build weed binary
+ run: |
+ cd weed && go build -o weed .
+
+ - name: Run EC Integration Tests
+ working-directory: test/erasure_coding
+ run: |
+ go test -v
+
+ - name: Archive logs
+ if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: ec-integration-test-logs
+ path: test/erasure_coding \ No newline at end of file
diff --git a/.github/workflows/helm_ci.yml b/.github/workflows/helm_ci.yml
index f936ff445..ea971aec1 100644
--- a/.github/workflows/helm_ci.yml
+++ b/.github/workflows/helm_ci.yml
@@ -44,6 +44,80 @@ jobs:
- name: Run chart-testing (lint)
run: ct lint --target-branch ${{ github.event.repository.default_branch }} --all --validate-maintainers=false --chart-dirs k8s/charts
+ - name: Verify template rendering
+ run: |
+ set -e
+ CHART_DIR="k8s/charts/seaweedfs"
+
+ echo "=== Testing default configuration ==="
+ helm template test $CHART_DIR > /tmp/default.yaml
+ echo "✓ Default configuration renders successfully"
+
+ echo "=== Testing with S3 enabled ==="
+ helm template test $CHART_DIR --set s3.enabled=true > /tmp/s3.yaml
+ grep -q "kind: Deployment" /tmp/s3.yaml && grep -q "seaweedfs-s3" /tmp/s3.yaml
+ echo "✓ S3 deployment renders correctly"
+
+ echo "=== Testing with all-in-one mode ==="
+ helm template test $CHART_DIR --set allInOne.enabled=true > /tmp/allinone.yaml
+ grep -q "seaweedfs-all-in-one" /tmp/allinone.yaml
+ echo "✓ All-in-one deployment renders correctly"
+
+ echo "=== Testing with security enabled ==="
+ helm template test $CHART_DIR --set global.enableSecurity=true > /tmp/security.yaml
+ grep -q "security-config" /tmp/security.yaml
+ echo "✓ Security configuration renders correctly"
+
+ echo "=== Testing with monitoring enabled ==="
+ helm template test $CHART_DIR \
+ --set global.monitoring.enabled=true \
+ --set global.monitoring.gatewayHost=prometheus \
+ --set global.monitoring.gatewayPort=9091 > /tmp/monitoring.yaml
+ echo "✓ Monitoring configuration renders correctly"
+
+ echo "=== Testing with PVC storage ==="
+ helm template test $CHART_DIR \
+ --set master.data.type=persistentVolumeClaim \
+ --set master.data.size=10Gi \
+ --set master.data.storageClass=standard > /tmp/pvc.yaml
+ grep -q "PersistentVolumeClaim" /tmp/pvc.yaml
+ echo "✓ PVC configuration renders correctly"
+
+ echo "=== Testing with custom replicas ==="
+ helm template test $CHART_DIR \
+ --set master.replicas=3 \
+ --set filer.replicas=2 \
+ --set volume.replicas=3 > /tmp/replicas.yaml
+ echo "✓ Custom replicas configuration renders correctly"
+
+ echo "=== Testing filer with S3 gateway ==="
+ helm template test $CHART_DIR \
+ --set filer.s3.enabled=true \
+ --set filer.s3.enableAuth=true > /tmp/filer-s3.yaml
+ echo "✓ Filer S3 gateway renders correctly"
+
+ echo "=== Testing SFTP enabled ==="
+ helm template test $CHART_DIR --set sftp.enabled=true > /tmp/sftp.yaml
+ grep -q "seaweedfs-sftp" /tmp/sftp.yaml
+ echo "✓ SFTP deployment renders correctly"
+
+ echo "=== Testing ingress configurations ==="
+ helm template test $CHART_DIR \
+ --set master.ingress.enabled=true \
+ --set filer.ingress.enabled=true \
+ --set s3.enabled=true \
+ --set s3.ingress.enabled=true > /tmp/ingress.yaml
+ grep -q "kind: Ingress" /tmp/ingress.yaml
+ echo "✓ Ingress configurations render correctly"
+
+ echo "=== Testing COSI driver ==="
+ helm template test $CHART_DIR --set cosi.enabled=true > /tmp/cosi.yaml
+ grep -q "seaweedfs-cosi" /tmp/cosi.yaml
+ echo "✓ COSI driver renders correctly"
+
+ echo ""
+ echo "✅ All template rendering tests passed!"
+
- name: Create kind cluster
uses: helm/kind-action@v1.13.0
diff --git a/.github/workflows/s3-go-tests.yml b/.github/workflows/s3-go-tests.yml
index 6e04a8d44..78387d4f1 100644
--- a/.github/workflows/s3-go-tests.yml
+++ b/.github/workflows/s3-go-tests.yml
@@ -411,4 +411,58 @@ jobs:
path: test/s3/versioning/weed-test*.log
retention-days: 7
+ s3-tagging-tests:
+ # CI job for S3 object 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
+ working-directory: test/s3/tagging
+ run: |
+ set -x
+ echo "=== System Information ==="
+ uname -a
+ free -h
+
+ # Set environment variables for the test
+ export S3_ENDPOINT="http://localhost:8006"
+ export S3_ACCESS_KEY="0555b35654ad1656d804"
+ export S3_SECRET_KEY="h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q=="
+
+ # Run the specific test that is equivalent to AWS S3 tagging behavior
+ make test-with-server || {
+ echo "❌ Test failed, checking logs..."
+ if [ -f weed-test.log ]; then
+ echo "=== Server logs ==="
+ tail -100 weed-test.log
+ fi
+ echo "=== Process information ==="
+ ps aux | grep -E "(weed|test)" || true
+ exit 1
+ }
+
+ - 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 \ No newline at end of file
diff --git a/.github/workflows/sftp-tests.yml b/.github/workflows/sftp-tests.yml
new file mode 100644
index 000000000..80a1b9929
--- /dev/null
+++ b/.github/workflows/sftp-tests.yml
@@ -0,0 +1,93 @@
+name: "SFTP Integration Tests"
+
+on:
+ push:
+ branches: [ master, main ]
+ paths:
+ - 'weed/sftpd/**'
+ - 'weed/command/sftp.go'
+ - 'test/sftp/**'
+ - '.github/workflows/sftp-tests.yml'
+ pull_request:
+ branches: [ master, main ]
+ paths:
+ - 'weed/sftpd/**'
+ - 'weed/command/sftp.go'
+ - 'test/sftp/**'
+ - '.github/workflows/sftp-tests.yml'
+
+concurrency:
+ group: ${{ github.head_ref }}/sftp-tests
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+env:
+ GO_VERSION: '1.24'
+ TEST_TIMEOUT: '15m'
+
+jobs:
+ sftp-integration:
+ name: SFTP Integration Testing
+ runs-on: ubuntu-22.04
+ timeout-minutes: 20
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Set up Go ${{ env.GO_VERSION }}
+ uses: actions/setup-go@v5
+ with:
+ go-version: ${{ env.GO_VERSION }}
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y openssh-client
+
+ - name: Build SeaweedFS
+ run: |
+ cd weed
+ go build -o weed .
+ chmod +x weed
+ ./weed version
+
+ - name: Run SFTP Integration Tests
+ run: |
+ cd test/sftp
+
+ echo "🧪 Running SFTP integration tests..."
+ echo "============================================"
+
+ # Install test dependencies
+ go mod download
+
+ # Run all SFTP tests
+ go test -v -timeout=${{ env.TEST_TIMEOUT }} ./...
+
+ echo "============================================"
+ echo "✅ SFTP integration tests completed"
+
+ - name: Test Summary
+ if: always()
+ run: |
+ echo "## 🔐 SFTP Integration Test Summary" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "### Test Coverage" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **HomeDir Path Translation**: User home directory mapping (fixes #7470)" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **File Operations**: Upload, download, delete" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **Directory Operations**: Create, list, remove" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **Large File Handling**: 1MB+ file support" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **Path Edge Cases**: Unicode, trailing slashes, .. paths" >> $GITHUB_STEP_SUMMARY
+ echo "- ✅ **Admin Access**: Root user verification" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "### Test Configuration" >> $GITHUB_STEP_SUMMARY
+ echo "| User | HomeDir | Permissions |" >> $GITHUB_STEP_SUMMARY
+ echo "|------|---------|-------------|" >> $GITHUB_STEP_SUMMARY
+ echo "| admin | / | Full access |" >> $GITHUB_STEP_SUMMARY
+ echo "| testuser | /sftp/testuser | Home directory only |" >> $GITHUB_STEP_SUMMARY
+ echo "| readonly | /public | Read-only |" >> $GITHUB_STEP_SUMMARY
+
+