mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-26 15:00:48 +01:00
GitHub is retiring ubuntu-22.04; move all 94 runs-on pins across 40 workflows to ubuntu-24.04. rust_binaries_release: the arm64 cross step was jammy-era — noble keeps apt sources in deb822 ubuntu.sources (the sources.list edit was a silent no-op that left amd64 repos open to arm64 and 404'd) and ports suites must say noble. Pin deb822 stanzas to amd64 and add noble ports entries.
79 lines
2.7 KiB
YAML
79 lines
2.7 KiB
YAML
name: "Multi-Master Tests"
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
paths:
|
|
- 'weed/server/master_*.go'
|
|
- 'weed/server/raft_*.go'
|
|
- 'weed/topology/**'
|
|
- 'test/multi_master/**'
|
|
- 'test/testutil/**'
|
|
- '.github/workflows/multi-master-tests.yml'
|
|
pull_request:
|
|
branches: [ master ]
|
|
paths:
|
|
- 'weed/server/master_*.go'
|
|
- 'weed/server/raft_*.go'
|
|
- 'weed/topology/**'
|
|
- 'test/multi_master/**'
|
|
- 'test/testutil/**'
|
|
- '.github/workflows/multi-master-tests.yml'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.event_name == 'push' && github.ref) || github.run_id }}
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')) }}
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
multi-master-failover-tests:
|
|
name: Multi-Master Failover Tests
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v7
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
cache: ${{ runner.environment == 'github-hosted' }}
|
|
|
|
- name: Install SeaweedFS
|
|
run: |
|
|
cd weed && go install -buildvcs=false
|
|
|
|
- name: Run multi-master failover tests
|
|
# The tests in test/multi_master spin up their own 3-node master raft
|
|
# cluster (using the freshly-installed `weed` binary) and exercise
|
|
# leader-election, failover and recovery scenarios. The shared
|
|
# test/testutil port-allocator regression test runs alongside since it
|
|
# is a prerequisite for the cluster fixtures.
|
|
run: |
|
|
go test -v -timeout=8m ./test/multi_master/... ./test/testutil/...
|
|
|
|
- name: Collect server logs on failure
|
|
if: failure()
|
|
run: |
|
|
# test/multi_master/cluster.go creates per-test dirs via
|
|
# os.MkdirTemp("", "seaweedfs_multi_master_it_") and writes each
|
|
# node's log into <baseDir>/logs/master*.log.
|
|
echo "Collecting per-node master logs from temp directories..."
|
|
mkdir -p /tmp/multi-master-logs
|
|
find /tmp -maxdepth 1 -type d -name "seaweedfs_multi_master_it_*" 2>/dev/null | while read dir; do
|
|
echo "Found test directory: $dir"
|
|
cp -r "$dir" /tmp/multi-master-logs/ 2>/dev/null || true
|
|
done
|
|
find /tmp/multi-master-logs -type f -name "*.log" -print -exec tail -n 100 {} \; 2>/dev/null || echo "No logs found"
|
|
|
|
- name: Archive logs
|
|
if: failure()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: multi-master-test-logs
|
|
path: /tmp/multi-master-logs/
|
|
retention-days: 7
|