From e56a3ee4a2288e9ae455d0d67973b180e0da224d Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Thu, 14 May 2026 11:47:24 -0700 Subject: [PATCH] ci(s3-lifecycle): split into per-test matrix jobs Each test now runs against a fresh `weed mini`, so per-collection TTL volume budget no longer leaks across tests and exhausts the pool. --- .github/workflows/s3-go-tests.yml | 35 ++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/.github/workflows/s3-go-tests.yml b/.github/workflows/s3-go-tests.yml index fcdc5bb3d..b6291cc96 100644 --- a/.github/workflows/s3-go-tests.yml +++ b/.github/workflows/s3-go-tests.yml @@ -248,7 +248,32 @@ jobs: s3-lifecycle-tests: name: S3 Lifecycle Tests runs-on: ubuntu-22.04 - timeout-minutes: 15 + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + # One job per test so each gets a fresh `weed mini` server, avoiding + # the cross-test volume-pool exhaustion that surfaced when several + # TTL-pinned bucket collections piled up in a single run. + test: + - TestLifecycleAbortIncompleteMultipartUpload + - TestLifecycleBootstrapWalkOnExistingObjects + - TestLifecycleConfigUpdateBetweenSweeps + - TestLifecycleDeleteBucketLifecycleStopsDispatching + - TestLifecycleDisabledRuleSkipsObject + - TestLifecycleEmptyBucketSweepIsNoOp + - TestLifecycleExpirationDateInThePast + - TestLifecycleExpirationFiresOnBackdatedObject + - TestLifecycleExpiredDeleteMarkerCleanup + - TestLifecycleMultipleBucketsInOneSweep + - TestLifecycleMultipleRulesInOneBucket + - TestLifecycleNewerNoncurrentVersions + - TestLifecycleNoncurrentVersionExpiration + - TestLifecycleSizeFilterGreaterThan + - TestLifecycleSkipsObjectLockedObjects + - TestLifecycleSuspendedVersioningExpiration + - TestLifecycleTagFilter + - TestLifecycleVersionedBucketCreatesDeleteMarker steps: - name: Check out code @@ -264,12 +289,12 @@ jobs: run: | go install -buildvcs=false - - name: Run S3 Lifecycle Tests - timeout-minutes: 12 + - name: Run ${{ matrix.test }} + timeout-minutes: 8 working-directory: test/s3/lifecycle run: | set -x - make test-with-server + make test-with-server TEST_PATTERN='^${{ matrix.test }}$$' - name: Show server logs on failure if: failure() @@ -286,7 +311,7 @@ jobs: if: failure() uses: actions/upload-artifact@v7 with: - name: s3-lifecycle-test-logs + name: s3-lifecycle-test-logs-${{ matrix.test }} path: test/s3/lifecycle/weed-test*.log retention-days: 3