mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-18 02:33:15 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2aa4e411e5 | |||
| 5571d4830b |
@@ -6,9 +6,18 @@
|
|||||||
#
|
#
|
||||||
# The MinIO release is pinned so the captured fixture format is reproducible;
|
# The MinIO release is pinned so the captured fixture format is reproducible;
|
||||||
# this is the release the interop tests were validated against.
|
# this is the release the interop tests were validated against.
|
||||||
FROM minio/minio:RELEASE.2025-09-07T16-13-09Z AS minio
|
#
|
||||||
|
# Both base images are build args so a network that cannot reach Docker Hub can
|
||||||
|
# point them at a mirror carrying the same content — quay.io publishes the MinIO
|
||||||
|
# releases, and public.ecr.aws mirrors the official Python images. CI keeps the
|
||||||
|
# Docker Hub defaults. Override with:
|
||||||
|
# --build-arg MINIO_IMAGE=quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z \
|
||||||
|
# --build-arg PYTHON_IMAGE=public.ecr.aws/docker/library/python:3.12-slim
|
||||||
|
ARG MINIO_IMAGE=minio/minio:RELEASE.2025-09-07T16-13-09Z
|
||||||
|
ARG PYTHON_IMAGE=python:3.12-slim
|
||||||
|
FROM ${MINIO_IMAGE} AS minio
|
||||||
|
|
||||||
FROM python:3.12-slim
|
FROM ${PYTHON_IMAGE}
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends openssl ca-certificates \
|
&& apt-get install -y --no-install-recommends openssl ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|||||||
@@ -22,6 +22,26 @@ Use the automated path when you want the lab to:
|
|||||||
- upload a predefined SSE fixture case
|
- upload a predefined SSE fixture case
|
||||||
- export the generated backend tree into the lab layout
|
- export the generated backend tree into the lab layout
|
||||||
|
|
||||||
|
## Networks without Docker Hub access
|
||||||
|
|
||||||
|
`capture_via_docker.sh` pulls its two base images from Docker Hub by default. Where that registry is unreachable, point the build at mirrors carrying the same content — quay.io publishes the MinIO releases and public.ecr.aws mirrors the official Python images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
MINIO_LAB_MINIO_IMAGE=quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z \
|
||||||
|
MINIO_LAB_PYTHON_IMAGE=public.ecr.aws/docker/library/python:3.12-slim \
|
||||||
|
./capture_via_docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Pin the MinIO tag to the same release the Dockerfile names; an unpinned `:latest` captures whatever format that day's build writes, which is not what the interop tests were validated against.
|
||||||
|
|
||||||
|
## Capturing the SSE-C cases
|
||||||
|
|
||||||
|
MinIO refuses SSE-C over a plain-HTTP connection, so the `sse-c-*` cases cannot be captured against the default endpoint — `./capture_via_docker.sh all` fails on the first SSE-C upload with `InvalidRequest ... must be made over a secure connection`. The lab provisions its own self-signed certificate; point it at the HTTPS endpoint to capture them:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
MINIO_LAB_ENDPOINT=https://127.0.0.1:9000 ./capture_via_docker.sh all
|
||||||
|
```
|
||||||
|
|
||||||
## Layout
|
## Layout
|
||||||
|
|
||||||
The default root is `artifacts/minio-fixture-lab`, which is already ignored by the repository.
|
The default root is `artifacts/minio-fixture-lab`, which is already ignored by the repository.
|
||||||
|
|||||||
@@ -12,6 +12,13 @@
|
|||||||
# # ignored interop tests consume
|
# # ignored interop tests consume
|
||||||
# ./capture_via_docker.sh sse-s3-singlepart-64k # specific case id(s)
|
# ./capture_via_docker.sh sse-s3-singlepart-64k # specific case id(s)
|
||||||
# ./capture_via_docker.sh all # full SSE/size matrix
|
# ./capture_via_docker.sh all # full SSE/size matrix
|
||||||
|
#
|
||||||
|
# The SSE-C cases are not reachable over the default plain-HTTP endpoint: MinIO
|
||||||
|
# refuses SSE-C unless the connection is secure ("Requests specifying Server
|
||||||
|
# Side Encryption with Customer provided keys must be made over a secure
|
||||||
|
# connection"). Capture those by pointing the lab at its self-signed HTTPS
|
||||||
|
# endpoint, which it provisions itself:
|
||||||
|
# MINIO_LAB_ENDPOINT=https://127.0.0.1:9000 ./capture_via_docker.sh all
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
IMAGE="${MINIO_LAB_IMAGE:-rustfs-minio-lab:latest}"
|
IMAGE="${MINIO_LAB_IMAGE:-rustfs-minio-lab:latest}"
|
||||||
@@ -34,8 +41,22 @@ if [ "${cases[0]}" != "all" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Base images are overridable so a network without Docker Hub access can point
|
||||||
|
# them at a mirror (see the Dockerfile header). Unset by default, which keeps the
|
||||||
|
# Dockerfile's Docker Hub defaults for CI.
|
||||||
|
build_args=()
|
||||||
|
if [ -n "${MINIO_LAB_MINIO_IMAGE:-}" ]; then
|
||||||
|
build_args+=(--build-arg "MINIO_IMAGE=${MINIO_LAB_MINIO_IMAGE}")
|
||||||
|
fi
|
||||||
|
if [ -n "${MINIO_LAB_PYTHON_IMAGE:-}" ]; then
|
||||||
|
build_args+=(--build-arg "PYTHON_IMAGE=${MINIO_LAB_PYTHON_IMAGE}")
|
||||||
|
fi
|
||||||
|
|
||||||
echo ">> building ${IMAGE}"
|
echo ">> building ${IMAGE}"
|
||||||
docker build -f "${SCRIPT_DIR}/Dockerfile" -t "${IMAGE}" "${SCRIPT_DIR}"
|
# ${arr[@]+"${arr[@]}"} rather than "${arr[@]}": under `set -u`, bash 3.2 —
|
||||||
|
# still the default /bin/bash on macOS — treats an empty array expansion as an
|
||||||
|
# unbound variable and aborts.
|
||||||
|
docker build -f "${SCRIPT_DIR}/Dockerfile" -t "${IMAGE}" ${build_args[@]+"${build_args[@]}"} "${SCRIPT_DIR}"
|
||||||
|
|
||||||
echo ">> capturing fixtures into ${FIXTURE_REL}"
|
echo ">> capturing fixtures into ${FIXTURE_REL}"
|
||||||
docker run --rm -v "${REPO_ROOT}:/repo" "${IMAGE}" \
|
docker run --rm -v "${REPO_ROOT}:/repo" "${IMAGE}" \
|
||||||
@@ -43,6 +64,7 @@ docker run --rm -v "${REPO_ROOT}:/repo" "${IMAGE}" \
|
|||||||
--root "/repo/${FIXTURE_REL}" \
|
--root "/repo/${FIXTURE_REL}" \
|
||||||
--work-root /tmp/minio-lab-work \
|
--work-root /tmp/minio-lab-work \
|
||||||
--minio-binary /usr/local/bin/minio \
|
--minio-binary /usr/local/bin/minio \
|
||||||
"${case_args[@]}"
|
--endpoint "${MINIO_LAB_ENDPOINT:-http://127.0.0.1:9000}" \
|
||||||
|
${case_args[@]+"${case_args[@]}"}
|
||||||
|
|
||||||
echo ">> done — fixtures under ${REPO_ROOT}/${FIXTURE_REL}/cases/"
|
echo ">> done — fixtures under ${REPO_ROOT}/${FIXTURE_REL}/cases/"
|
||||||
|
|||||||
Reference in New Issue
Block a user