[Bug] Default MinIO image can no longer be pulled anonymously, breaking E2E and Helm smoke tests #922
Description
Summary
The default MinIO image used by the local/dev stack and CI can no longer be pulled anonymously, so PR E2E Tests → E2E (Real Services) fails for every PR before any test runs.
docker-compose.yml defaults to ${MINIO_IMAGE:-quay.io/minio/minio:latest}. Anonymous pulls from quay.io/minio/minio now return 401 unauthorized. Docker Hub's minio/minio returns 401 for every tag I tried too (latest, RELEASE.2025-09-07T16-13-09Z, RELEASE.2025-04-22T22-12-26Z), while library/redis:7-alpine pulls fine with the same token flow. So this looks like upstream gating the community images, not a runner flake.
The same problem affects:
charts/skillhub/tests/install-upgrade-smoke.sh, which pinsquay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test inpr-helm-chart.ymlwill fail the same way.deploy/runtime-mirror-images.txt(quay.io/minio/minio:latest minio:latest). This is harmless while the mirror target already exists, because the script skips existing images, but it can no longer be re-mirrored from that source.
The runtime/release stack does not depend on MinIO, so production deployments are not affected.
Steps To Reproduce
- Run
make dev-allon a clean machine (no cached MinIO image), or look at any recentE2E (Real Services)run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts. - The compose pull fails:
minio Error unauthorized: access to the requested resource is not authorized
Error response from daemon: unauthorized: access to the requested resource is not authorized
make[1]: *** [Makefile:33: dev] Error 1
Registry check:
GET https://quay.io/v2/minio/minio/manifests/latest -> 401
GET https://quay.io/v2/minio/minio/manifests/sha256:14cea493… (anon token) -> 401
GET https://registry-1.docker.io/v2/minio/minio/manifests/latest (anon) -> 401
GET https://registry-1.docker.io/v2/library/redis/manifests/7-alpine -> 200
Expected Behavior
make dev-all, the E2E workflow and the Helm smoke test can pull an S3-compatible object store image without registry credentials.
Environment
main@ 7352597- GitHub-hosted
ubuntu-latestrunners. The last greenE2E (Real Services)runs were on 2026-09-24; it has failed since 2026-10-03.
Logs Or Screenshots
Which replacement to use is a maintainer decision, so I have not opened a PR. These are the options I checked:
- Point the default at the project's own mirror registry.
publish-images.ymlalready mirrors MinIO to${MIRROR_REGISTRY}/${MIRROR_NAMESPACE}/minio:latest, which presumably still holds the last official image. If that registry is publicly pullable, this keeps the official binary and avoids a new third-party dependency. CI could also log in to it instead. - A maintained community build.
pgsty/minio(Pigsty's fork, https://github.com/pgsty/minio) pulls anonymously, is multi-arch (amd64/arm64), and publishes pinned tags, the latest beingRELEASE.2026-08-04T00-00-00Z(index digestsha256:b6bfe7239bfc83fb90d31612d9704d86039dd714f7904b3f1ad68f211e602372). I inspected the image config: same UBI-based layout anddocker-entrypoint.shas upstream, with/usr/bin/minio,/usr/bin/curlandmc. So the existingcommand: server /data --console-address ":9001"and the curl healthcheck should work unchanged. The trade-off is depending on a third-party build. - Another S3-compatible server (for example SeaweedFS or Garage). This needs more changes to the healthcheck, startup command and test assumptions.
Whichever image is chosen, the change should cover docker-compose.yml (default MINIO_IMAGE), the pinned digest in charts/skillhub/tests/install-upgrade-smoke.sh, and deploy/runtime-mirror-images.txt. I'm happy to send the PR once a direction is picked.
Activity
github-actions commentedon Oct 5, 2026
Issue Triage
triage/corepriority/p1(4.0/5)effort/l(5/5)5/5highrules-onlyWhy
High-Risk Signals
Maintainer Brief
Summary: The default MinIO image used by the local/dev stack and CI can no longer be pulled anonymously, so
PR E2E Tests→E2E (Real Services)fails for every PR before any test runs.docker-compose.ymldefaults to${MINIO_IMAGE:-quay.io/minio/minio:latest}. Anonymous pulls fromquay.io/minio/minionow return401 unauthorized. Docker Hub'sminio/minioreturns 401 for every tag I tried too (latest,RELEASE.2025-09-07T16-13-09Z,RELEASE.2025-04-22T22-12-26Z), whilelibrary/redis:7-alpinepulls fine with the same token flow. So this looks like upstream gating the community images, not a runner flake. The same problem affects: -charts/skillhub/tests/install-upgrade-smoke.sh, which pinsquay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test inpr-helm-chart.ymlwill fail the same way. -deploy/runtime-mirror-images.txt(quay.io/minio/minio:latest minio:latest). This is harmless while the mirror target already exists, because the script skips existing images, but it can no longer be re-mirrored from that source. The runtime/release stack does not depend on MinIO, so production deployments are not affected.Why core:
Reproduction or operator path:
make dev-allon a clean machine (no cached MinIO image), or look at any recentE2E (Real Services)run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts.Suspected areas:
Risks to watch:
Validation checklist:
make dev-all, the E2E workflow and the Helm smoke test can pull an S3-compatible object store image without registry credentials.Next Action
问题分流结果
triage/corepriority/p1(4.0/5)effort/l(5/5)5/5高rules-only原因
高风险信号
维护者交接摘要
概要: The default MinIO image used by the local/dev stack and CI can no longer be pulled anonymously, so
PR E2E Tests→E2E (Real Services)fails for every PR before any test runs.docker-compose.ymldefaults to${MINIO_IMAGE:-quay.io/minio/minio:latest}. Anonymous pulls fromquay.io/minio/minionow return401 unauthorized. Docker Hub'sminio/minioreturns 401 for every tag I tried too (latest,RELEASE.2025-09-07T16-13-09Z,RELEASE.2025-04-22T22-12-26Z), whilelibrary/redis:7-alpinepulls fine with the same token flow. So this looks like upstream gating the community images, not a runner flake. The same problem affects: -charts/skillhub/tests/install-upgrade-smoke.sh, which pinsquay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test inpr-helm-chart.ymlwill fail the same way. -deploy/runtime-mirror-images.txt(quay.io/minio/minio:latest minio:latest). This is harmless while the mirror target already exists, because the script skips existing images, but it can no longer be re-mirrored from that source. The runtime/release stack does not depend on MinIO, so production deployments are not affected.为何进入 core:
复现路径或操作路径:
make dev-allon a clean machine (no cached MinIO image), or look at any recentE2E (Real Services)run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts.怀疑影响区域:
重点风险:
验证清单:
下一步
X77seven commentedon Oct 8, 2026
/claim