Skip to content

[Bug] Default MinIO image can no longer be pulled anonymously, breaking E2E and Helm smoke tests #922

Closed

Description

@FenjuFu

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 pins quay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test in pr-helm-chart.yml will 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

  1. Run make dev-all on a clean machine (no cached MinIO image), or look at any recent E2E (Real Services) run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts.
  2. 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-latest runners. The last green E2E (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:

  1. Point the default at the project's own mirror registry. publish-images.yml already 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.
  2. 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 being RELEASE.2026-08-04T00-00-00Z (index digest sha256:b6bfe7239bfc83fb90d31612d9704d86039dd714f7904b3f1ad68f211e602372). I inspected the image config: same UBI-based layout and docker-entrypoint.sh as upstream, with /usr/bin/minio, /usr/bin/curl and mc. So the existing command: server /data --console-address ":9001" and the curl healthcheck should work unchanged. The trade-off is depending on a third-party build.
  3. 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

  1. added
    triage/core交由 core maintainer 结合 AI 协同处理 / Issue should be handled by a core maintainer with AI support.
    priority/p1高优先级 / High priority triage bucket.
    effort/l大改动或高风险改动,需要 maintainer 负责 / Large or risky change requiring maintainer ownership.
    risk/high涉及安全、鉴权、迁移或公共契约 / Touches security, auth, migrations, or public contracts.
    on Oct 5, 2026
  2. github-actions commented on Oct 5, 2026

    @github-actions
    Contributor

    Issue Triage

    • Route: triage/core
    • Priority: priority/p1 (4.0/5)
    • Effort: effort/l (5/5)
    • Confidence: 5/5
    • Risk: high
    • Analysis Mode: rules-only

    Why

    • Touches core SkillHub workflows (publish, namespace, auth).
    • Contains urgency signals (fails, production).

    High-Risk Signals

    • Mentions sensitive areas (auth, token, credential).

    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.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 pins quay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test in pr-helm-chart.yml will 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:

    • Touches a higher-risk area where automated fixes should not be trusted without maintainer review.
    • Likely spans multiple modules or a public compatibility surface.
    • Mentions sensitive areas (auth, token, credential).
      Reproduction or operator path:
      1. Run make dev-all on a clean machine (no cached MinIO image), or look at any recent E2E (Real Services) run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts.
      1. 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
      Suspected areas:
    • Skill installation flow and registry/lockfile integration
    • Authentication, session, and identity integration
      Risks to watch:
    • Mentions sensitive areas (auth, token, credential).
      Validation checklist:
    • Replay the exact reproduction steps from the issue and confirm the reported failure disappears.
    • Confirm the final behavior matches the issue's expected outcome: make dev-all, the E2E workflow and the Helm smoke test can pull an S3-compatible object store image without registry credentials.

    Next Action

    • Hand the issue to a core maintainer and use a local programming agent for reproduction, scoping, and validation.

    问题分流结果

    • 路由: triage/core
    • 优先级: priority/p1 (4.0/5)
    • 修复投入: effort/l (5/5)
    • 信息完整度: 5/5
    • 风险: 高
    • 分析模式: rules-only

    原因

    • 涉及 SkillHub 核心流程(publish, namespace, auth)
    • 包含紧急信号(fails, production)

    高风险信号

    • 提到敏感区域(auth, token, credential)

    维护者交接摘要

    概要: 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 pins quay.io/minio/minio@sha256:14cea493…. That digest also returns 401 anonymously, so the Helm install/upgrade smoke test in pr-helm-chart.yml will 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:

    • 触及高风险区域,未经 maintainer 审查不应直接信任自动修复
    • 大概率跨多个模块或公共兼容面
    • 提到敏感区域(auth, token, credential)
      复现路径或操作路径:
      1. Run make dev-all on a clean machine (no cached MinIO image), or look at any recent E2E (Real Services) run, e.g. fix(web): bump undici override to ^7.29.1 #919: run 37119717963, both attempts.
      1. 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/lockfile 集成
    • 认证、会话与身份集成
      重点风险:
    • 提到敏感区域(auth, token, credential)
      验证清单:
    • 按 issue 中的复现步骤逐条回放,确认报告的问题已消失
    • 确认最终行为符合 issue 期望

    下一步

    • 交给 core maintainer,并结合本地编程Agent协助完成复现、收敛范围与验证闭环
  3. X77seven commented on Oct 8, 2026

    @X77seven
    Contributor

    /claim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingeffort/l大改动或高风险改动,需要 maintainer 负责 / Large or risky change requiring maintainer ownership.priority/p1高优先级 / High priority triage bucket.risk/high涉及安全、鉴权、迁移或公共契约 / Touches security, auth, migrations, or public contracts.triage/core交由 core maintainer 结合 AI 协同处理 / Issue should be handled by a core maintainer with AI support.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions