@@ -16,6 +16,16 @@ name: Functional Test (kind)
1616# fixes the endpoint property (jclouds.azureblob.endpoint
1717# -> jclouds.endpoint); the failing round-trip is the
1818# functional test demonstrably catching that regression.
19+ # multi-backend -> s3 (MinIO) + azureblob (Azurite) + filesystem (PVC)
20+ # in ONE release, round-tripping one bucket per backend
21+ # (smoke-s3-*/smoke-az-*/smoke-fs-*). NON-BLOCKING:
22+ # cannot pass on current main — blocked by DND-1442 and
23+ # DND-1416, plus two multi-backend chart gaps (secret.yaml
24+ # emits only the first enabled backend's jclouds.credential
25+ # into the shared secret.properties, and there is no
26+ # per-backend bucket-locator to route buckets between
27+ # backends on the shared endpoint). See the notes in
28+ # ci/functional/values/multi-backend.yaml.
1929# Each soft_fail leg auto-goes-green once its bug is fixed.
2030# gcs/b2/openstack-swift/rackspace are render-only (covered by lint-render + helm-diff):
2131# gcs has no jclouds.endpoint override in the chart, and the others have no
5767 values : ci/functional/values/azureblob.yaml
5868 mock : ci/functional/mocks/azurite.yaml
5969 soft_fail : true
70+ - backend : multi-backend
71+ values : ci/functional/values/multi-backend.yaml
72+ mock : ci/functional/mocks/minio.yaml ci/functional/mocks/azurite.yaml
73+ buckets : smoke-s3 smoke-az smoke-fs
74+ soft_fail : true
6075 env :
6176 NAMESPACE : s3proxy-test
6277 RELEASE : s3proxy
@@ -75,11 +90,16 @@ jobs:
7590 - name : Create namespace
7691 run : kubectl create namespace "${NAMESPACE}"
7792
78- - name : Deploy mock backend (${{ matrix.backend }})
93+ - name : Deploy mock backends (${{ matrix.backend }})
7994 if : matrix.mock
95+ # matrix.mock is a space-separated list of manifests (multi-backend
96+ # scenarios deploy several mocks).
8097 run : |
81- kubectl apply -n "${NAMESPACE}" -f "${{ matrix.mock }}"
82- kubectl -n "${NAMESPACE}" rollout status deploy --timeout=180s
98+ for mock in ${{ matrix.mock }}
99+ do
100+ kubectl apply -n "${NAMESPACE}" -f "${mock}"
101+ done
102+ kubectl -n "${NAMESPACE}" wait --for=condition=Available deploy --all --timeout=180s
83103
84104 - name : Install s3proxy
85105 run : |
@@ -89,9 +109,14 @@ jobs:
89109 --wait --timeout 5m
90110
91111 - name : Smoke test (S3 round-trip)
112+ # matrix.buckets is a space-separated list of bucket prefixes — one
113+ # round-trip per prefix (multi-backend scenarios use one per backend).
92114 run : |
93115 chmod +x ci/functional/smoke-test.sh
94- ci/functional/smoke-test.sh "${RELEASE}" "${NAMESPACE}" 9000 test-access-key test-secret-key
116+ for prefix in ${{ matrix.buckets || 'smoke' }}
117+ do
118+ ci/functional/smoke-test.sh "${RELEASE}" "${NAMESPACE}" 9000 test-access-key test-secret-key "${prefix}"
119+ done
95120
96121 - name : Diagnostics on failure
97122 if : failure()
0 commit comments