mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-08-16 12:16:36 +00:00
* ci: move the fusermount3 repair into a composite action Three copies of the same block were already drifting apart, and the target comes from PATH: only ever add setuid root to a root-owned, non-symlink binary under the system bin paths, and say why otherwise. * test: say that the process exited in the wait errors "process exit status 1 before ... accepted connections" is missing its verb. Also mark the SIGTERM return discarded - it fails with os.ErrProcessDone exactly when the select below already handles it. * ci: prefer the distro fusermount3 over escalating a shadow copy The shadowing /usr/local/bin/fusermount3 is not root-owned either, so setting its setuid bit would have handed root to a binary the runner user owns - the repair now symlinks the distro one earlier in PATH and touches nothing, keeping the in-place chmod for a root-owned binary with no distro alternative. A setuid bit only grants root when root owns the file, so accept an existing one only then. * ci: run the FUSE workflows when the shared action changes Their paths filters listed each workflow file but not the composite action all three now call.
87 lines
2.4 KiB
YAML
87 lines
2.4 KiB
YAML
name: "FUSE Integration Tests"
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, main ]
|
|
paths:
|
|
- 'weed/**'
|
|
- 'test/fuse_integration/**'
|
|
- '.github/workflows/fuse-integration.yml'
|
|
- '.github/actions/fix-fusermount-setuid/**'
|
|
pull_request:
|
|
branches: [ master, main ]
|
|
paths:
|
|
- 'weed/**'
|
|
- 'test/fuse_integration/**'
|
|
- '.github/workflows/fuse-integration.yml'
|
|
- '.github/actions/fix-fusermount-setuid/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.head_ref }}/fuse-integration
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
fuse-integration:
|
|
name: FUSE Integration Testing
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 50
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v7
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
|
|
- name: Install FUSE and dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
# fuse3 is pre-installed on ubuntu-22.04 runners and conflicts
|
|
# with the legacy fuse package, so only install the dev headers.
|
|
sudo apt-get install -y libfuse3-dev
|
|
# Allow non-root FUSE mounts with allow_other
|
|
echo 'user_allow_other' | sudo tee -a /etc/fuse.conf
|
|
sudo chmod 644 /etc/fuse.conf
|
|
# Verify FUSE installation
|
|
fusermount3 --version || fusermount --version || true
|
|
ls -la /dev/fuse
|
|
|
|
- name: Repair the fusermount3 setuid bit
|
|
uses: ./.github/actions/fix-fusermount-setuid
|
|
|
|
- name: Build SeaweedFS
|
|
run: |
|
|
cd weed
|
|
go build -tags "elastic gocdk sqlite ydb tarantool tikv rclone" -o weed .
|
|
chmod +x weed
|
|
./weed version
|
|
# Make weed binary available in PATH for the test framework
|
|
sudo cp weed /usr/local/bin/weed
|
|
|
|
- name: Install test dependencies
|
|
run: |
|
|
cd test/fuse_integration
|
|
go mod download
|
|
|
|
- name: Run FUSE Integration Tests
|
|
run: |
|
|
set -o pipefail
|
|
cd test/fuse_integration
|
|
echo "Running full FUSE integration test suite..."
|
|
go test -v -count=1 -timeout=45m ./... 2>&1 | tee /tmp/fuse-test-output.log
|
|
|
|
- name: Upload Test Logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: fuse-integration-test-results
|
|
path: |
|
|
/tmp/fuse-test-output.log
|
|
/tmp/seaweedfs-fuse-logs/
|
|
retention-days: 7
|